Removing jackson to mitigate cve-2017-4995 59/38259/4
authorDenes Nemeth <denes.nemeth@nokia.com>
Sat, 24 Mar 2018 13:00:54 +0000 (14:00 +0100)
committerDenes Nemeth <denes.nemeth@nokia.com>
Sun, 25 Mar 2018 19:32:03 +0000 (21:32 +0200)
Signed-off-by: Denes Nemeth <denes.nemeth@nokia.com>
Issue-ID: VFC-728
Change-Id: Ib495d4706361cc39527dfe86463aa505d9564afa

94 files changed:
nokiav2/driver/pom.xml
nokiav2/driver/src/main/java/org/onap/vfc/nfvo/driver/vnfm/svnfm/nokia/api/INotificationSender.java
nokiav2/driver/src/main/java/org/onap/vfc/nfvo/driver/vnfm/svnfm/nokia/onap/core/GenericExternalSystemInfoProvider.java
nokiav2/driver/src/main/java/org/onap/vfc/nfvo/driver/vnfm/svnfm/nokia/onap/core/IpMappingProvider.java
nokiav2/driver/src/main/java/org/onap/vfc/nfvo/driver/vnfm/svnfm/nokia/onap/core/MsbApiProvider.java
nokiav2/driver/src/main/java/org/onap/vfc/nfvo/driver/vnfm/svnfm/nokia/onap/core/SelfRegistrationManager.java
nokiav2/driver/src/main/java/org/onap/vfc/nfvo/driver/vnfm/svnfm/nokia/onap/direct/AAIExternalSystemInfoProvider.java
nokiav2/driver/src/main/java/org/onap/vfc/nfvo/driver/vnfm/svnfm/nokia/onap/direct/AAIRestApiProvider.java
nokiav2/driver/src/main/java/org/onap/vfc/nfvo/driver/vnfm/svnfm/nokia/onap/direct/AaiSecurityProvider.java [new file with mode: 0644]
nokiav2/driver/src/main/java/org/onap/vfc/nfvo/driver/vnfm/svnfm/nokia/onap/direct/SdcPackageProvider.java
nokiav2/driver/src/main/java/org/onap/vfc/nfvo/driver/vnfm/svnfm/nokia/onap/direct/notification/AAINotificationProcessor.java
nokiav2/driver/src/main/java/org/onap/vfc/nfvo/driver/vnfm/svnfm/nokia/onap/direct/notification/AbstractManager.java
nokiav2/driver/src/main/java/org/onap/vfc/nfvo/driver/vnfm/svnfm/nokia/onap/direct/notification/GenericVnfManager.java
nokiav2/driver/src/main/java/org/onap/vfc/nfvo/driver/vnfm/svnfm/nokia/onap/direct/notification/L3NetworkManager.java
nokiav2/driver/src/main/java/org/onap/vfc/nfvo/driver/vnfm/svnfm/nokia/onap/direct/notification/LInterfaceManager.java
nokiav2/driver/src/main/java/org/onap/vfc/nfvo/driver/vnfm/svnfm/nokia/onap/direct/notification/VnfcManager.java
nokiav2/driver/src/main/java/org/onap/vfc/nfvo/driver/vnfm/svnfm/nokia/onap/direct/notification/VserverManager.java
nokiav2/driver/src/main/java/org/onap/vfc/nfvo/driver/vnfm/svnfm/nokia/onap/vfc/VfcGrantManager.java
nokiav2/driver/src/main/java/org/onap/vfc/nfvo/driver/vnfm/svnfm/nokia/onap/vfc/VfcNotificationSender.java
nokiav2/driver/src/main/java/org/onap/vfc/nfvo/driver/vnfm/svnfm/nokia/onap/vfc/VfcPackageProvider.java
nokiav2/driver/src/main/java/org/onap/vfc/nfvo/driver/vnfm/svnfm/nokia/packagetransformer/CbamVnfPackageBuilder.java
nokiav2/driver/src/main/java/org/onap/vfc/nfvo/driver/vnfm/svnfm/nokia/packagetransformer/CbamVnfdBuilder.java
nokiav2/driver/src/main/java/org/onap/vfc/nfvo/driver/vnfm/svnfm/nokia/packagetransformer/OnapVnfPackageBuilder.java
nokiav2/driver/src/main/java/org/onap/vfc/nfvo/driver/vnfm/svnfm/nokia/packagetransformer/OnapVnfdBuilder.java
nokiav2/driver/src/main/java/org/onap/vfc/nfvo/driver/vnfm/svnfm/nokia/restapi/ConverterApi.java
nokiav2/driver/src/main/java/org/onap/vfc/nfvo/driver/vnfm/svnfm/nokia/restapi/LcmApi.java
nokiav2/driver/src/main/java/org/onap/vfc/nfvo/driver/vnfm/svnfm/nokia/restapi/LcnApi.java
nokiav2/driver/src/main/java/org/onap/vfc/nfvo/driver/vnfm/svnfm/nokia/restapi/SwaggerApi.java
nokiav2/driver/src/main/java/org/onap/vfc/nfvo/driver/vnfm/svnfm/nokia/spring/Conditions.java
nokiav2/driver/src/main/java/org/onap/vfc/nfvo/driver/vnfm/svnfm/nokia/spring/RealConfig.java
nokiav2/driver/src/main/java/org/onap/vfc/nfvo/driver/vnfm/svnfm/nokia/util/StoreLoader.java
nokiav2/driver/src/main/java/org/onap/vfc/nfvo/driver/vnfm/svnfm/nokia/util/SystemFunctions.java
nokiav2/driver/src/main/java/org/onap/vfc/nfvo/driver/vnfm/svnfm/nokia/vnfm/AdditionalParameters.java
nokiav2/driver/src/main/java/org/onap/vfc/nfvo/driver/vnfm/svnfm/nokia/vnfm/CatalogManager.java
nokiav2/driver/src/main/java/org/onap/vfc/nfvo/driver/vnfm/svnfm/nokia/vnfm/CbamSecurityProvider.java
nokiav2/driver/src/main/java/org/onap/vfc/nfvo/driver/vnfm/svnfm/nokia/vnfm/CbamTokenProvider.java
nokiav2/driver/src/main/java/org/onap/vfc/nfvo/driver/vnfm/svnfm/nokia/vnfm/DriverProperties.java
nokiav2/driver/src/main/java/org/onap/vfc/nfvo/driver/vnfm/svnfm/nokia/vnfm/GenericSecurityProvider.java [new file with mode: 0644]
nokiav2/driver/src/main/java/org/onap/vfc/nfvo/driver/vnfm/svnfm/nokia/vnfm/JobManager.java
nokiav2/driver/src/main/java/org/onap/vfc/nfvo/driver/vnfm/svnfm/nokia/vnfm/LifecycleManager.java
nokiav2/driver/src/main/java/org/onap/vfc/nfvo/driver/vnfm/svnfm/nokia/vnfm/notification/LifecycleChangeNotificationManager.java
nokiav2/driver/src/main/java/org/onap/vfc/nfvo/driver/vnfm/svnfm/nokia/vnfm/notification/ProcessedNotification.java
nokiav2/driver/src/main/java/org/onap/vfc/nfvo/driver/vnfm/svnfm/nokia/vnfm/notification/ReportedAffectedConnectionPoints.java
nokiav2/driver/src/test/java/okhttp3/OakExtractor.java [deleted file]
nokiav2/driver/src/test/java/org/onap/vfc/nfvo/driver/vnfm/svnfm/nokia/FullUnitTestSuite.java
nokiav2/driver/src/test/java/org/onap/vfc/nfvo/driver/vnfm/svnfm/nokia/ct/CTDirectReal.java
nokiav2/driver/src/test/java/org/onap/vfc/nfvo/driver/vnfm/svnfm/nokia/onap/core/TestGenericExternalSystemInfoProvider.java
nokiav2/driver/src/test/java/org/onap/vfc/nfvo/driver/vnfm/svnfm/nokia/onap/core/TestMsbApiProvider.java
nokiav2/driver/src/test/java/org/onap/vfc/nfvo/driver/vnfm/svnfm/nokia/onap/direct/TestAAIExternalSystemInfoProvider.java
nokiav2/driver/src/test/java/org/onap/vfc/nfvo/driver/vnfm/svnfm/nokia/onap/direct/TestAAIRestApiProvider.java
nokiav2/driver/src/test/java/org/onap/vfc/nfvo/driver/vnfm/svnfm/nokia/onap/direct/TestAaiSecurityProvider.java [new file with mode: 0644]
nokiav2/driver/src/test/java/org/onap/vfc/nfvo/driver/vnfm/svnfm/nokia/onap/direct/TestSdcPackageProvider.java
nokiav2/driver/src/test/java/org/onap/vfc/nfvo/driver/vnfm/svnfm/nokia/onap/direct/notification/TestAAINotificationProcessor.java
nokiav2/driver/src/test/java/org/onap/vfc/nfvo/driver/vnfm/svnfm/nokia/onap/direct/notification/TestAbstractManager.java
nokiav2/driver/src/test/java/org/onap/vfc/nfvo/driver/vnfm/svnfm/nokia/onap/direct/notification/TestGenericVnfManager.java
nokiav2/driver/src/test/java/org/onap/vfc/nfvo/driver/vnfm/svnfm/nokia/onap/direct/notification/TestL3NetworkManager.java
nokiav2/driver/src/test/java/org/onap/vfc/nfvo/driver/vnfm/svnfm/nokia/onap/direct/notification/TestLInterfaceManager.java
nokiav2/driver/src/test/java/org/onap/vfc/nfvo/driver/vnfm/svnfm/nokia/onap/direct/notification/TestVnfcManager.java
nokiav2/driver/src/test/java/org/onap/vfc/nfvo/driver/vnfm/svnfm/nokia/onap/direct/notification/TestVserverManager.java
nokiav2/driver/src/test/java/org/onap/vfc/nfvo/driver/vnfm/svnfm/nokia/onap/vfc/TestVfcGrantManager.java
nokiav2/driver/src/test/java/org/onap/vfc/nfvo/driver/vnfm/svnfm/nokia/onap/vfc/TestVfcNotificationSender.java
nokiav2/driver/src/test/java/org/onap/vfc/nfvo/driver/vnfm/svnfm/nokia/onap/vfc/TestVfcPackageProvider.java
nokiav2/driver/src/test/java/org/onap/vfc/nfvo/driver/vnfm/svnfm/nokia/packagetransformer/TestOnapVnfPackageBuilder.java
nokiav2/driver/src/test/java/org/onap/vfc/nfvo/driver/vnfm/svnfm/nokia/packagetransformer/TestOnapVnfdBuilder.java
nokiav2/driver/src/test/java/org/onap/vfc/nfvo/driver/vnfm/svnfm/nokia/restapi/TestConverterApi.java
nokiav2/driver/src/test/java/org/onap/vfc/nfvo/driver/vnfm/svnfm/nokia/restapi/TestLcmApi.java
nokiav2/driver/src/test/java/org/onap/vfc/nfvo/driver/vnfm/svnfm/nokia/restapi/TestLcnApi.java
nokiav2/driver/src/test/java/org/onap/vfc/nfvo/driver/vnfm/svnfm/nokia/restapi/TestSwaggerApi.java
nokiav2/driver/src/test/java/org/onap/vfc/nfvo/driver/vnfm/svnfm/nokia/restapi/TestSwaggerDefinitionConsistency.java
nokiav2/driver/src/test/java/org/onap/vfc/nfvo/driver/vnfm/svnfm/nokia/spring/TestRealConfig.java
nokiav2/driver/src/test/java/org/onap/vfc/nfvo/driver/vnfm/svnfm/nokia/spring/TestSecurityConfig.java
nokiav2/driver/src/test/java/org/onap/vfc/nfvo/driver/vnfm/svnfm/nokia/util/TestStoreLoader.java
nokiav2/driver/src/test/java/org/onap/vfc/nfvo/driver/vnfm/svnfm/nokia/util/TestSystemFunctions.java
nokiav2/driver/src/test/java/org/onap/vfc/nfvo/driver/vnfm/svnfm/nokia/util/TestUtil.java
nokiav2/driver/src/test/java/org/onap/vfc/nfvo/driver/vnfm/svnfm/nokia/vnfm/HttpTestServer.java
nokiav2/driver/src/test/java/org/onap/vfc/nfvo/driver/vnfm/svnfm/nokia/vnfm/TestAdditionalParams.java
nokiav2/driver/src/test/java/org/onap/vfc/nfvo/driver/vnfm/svnfm/nokia/vnfm/TestBase.java
nokiav2/driver/src/test/java/org/onap/vfc/nfvo/driver/vnfm/svnfm/nokia/vnfm/TestCbamCatalogManager.java
nokiav2/driver/src/test/java/org/onap/vfc/nfvo/driver/vnfm/svnfm/nokia/vnfm/TestCbamRestApiProvider.java
nokiav2/driver/src/test/java/org/onap/vfc/nfvo/driver/vnfm/svnfm/nokia/vnfm/TestCbamSecurityProvider.java
nokiav2/driver/src/test/java/org/onap/vfc/nfvo/driver/vnfm/svnfm/nokia/vnfm/TestCbamTokenProvider.java
nokiav2/driver/src/test/java/org/onap/vfc/nfvo/driver/vnfm/svnfm/nokia/vnfm/TestGenericSecurityProvider.java [new file with mode: 0644]
nokiav2/driver/src/test/java/org/onap/vfc/nfvo/driver/vnfm/svnfm/nokia/vnfm/TestJobManager.java
nokiav2/driver/src/test/java/org/onap/vfc/nfvo/driver/vnfm/svnfm/nokia/vnfm/TestLifecycleManager.java
nokiav2/driver/src/test/java/org/onap/vfc/nfvo/driver/vnfm/svnfm/nokia/vnfm/TestSelfRegistrationManager.java
nokiav2/driver/src/test/java/org/onap/vfc/nfvo/driver/vnfm/svnfm/nokia/vnfm/notification/TestLifecycleChangeNotificationManager.java
nokiav2/driver/src/test/resources/unittests/packageconverter/cbam.full.modified.vnfd.yaml
nokiav2/driver/src/test/resources/unittests/packageconverter/cbam.minimal.modified.vnfd.yaml
nokiav2/driverwar/pom.xml
nokiav2/generatedapis/pom.xml
nokiav2/generatedapis/src/main/resources/aai.yaml [new file with mode: 0644]
nokiav2/generatedapis/src/test/java/TestInhertence.java
nokiav2/pom.xml
pom.xml

index c7d438f..8cd1801 100644 (file)
           <groupId>org.springframework.boot</groupId>
           <artifactId>spring-boot-starter-tomcat</artifactId>
         </exclusion>
+        <exclusion>
+          <groupId>com.fasterxml.jackson.core</groupId>
+          <artifactId>jackson-databind</artifactId>
+        </exclusion>
       </exclusions>
     </dependency>
     <dependency>
       <groupId>org.springframework.boot</groupId>
       <artifactId>spring-boot-starter-jetty</artifactId>
       <version>${spring.boot.version}</version>
+      <exclusions>
+        <exclusion>
+          <groupId>org.springframework.boot</groupId>
+          <artifactId>spring-boot-starter-tomcat</artifactId>
+        </exclusion>
+      </exclusions>
     </dependency>
     <dependency>
       <groupId>org.springframework.boot</groupId>
       <artifactId>spring-boot-starter-security</artifactId>
       <version>${spring.boot.version}</version>
+      <exclusions>
+        <exclusion>
+          <groupId>org.springframework.boot</groupId>
+          <artifactId>spring-boot-starter-tomcat</artifactId>
+        </exclusion>
+      </exclusions>
     </dependency>
     <dependency>
       <groupId>org.springframework.boot</groupId>
       <artifactId>guava</artifactId>
       <version>24.0-jre</version>
     </dependency>
+    <dependency>
+      <groupId>org.apache.httpcomponents</groupId>
+      <artifactId>httpclient</artifactId>
+      <version>4.5.5</version>
+    </dependency>
     <dependency>
       <!-- parsing VNFDs -->
       <groupId>org.yaml</groupId>
       <artifactId>snakeyaml</artifactId>
       <version>1.19</version>
     </dependency>
-    <dependency>
-      <!-- this version must be in sync with the dependency comming from spring boot -->
-      <groupId>com.fasterxml.jackson.dataformat</groupId>
-      <artifactId>jackson-dataformat-yaml</artifactId>
-      <version>2.9.4</version>
-    </dependency>
-    <dependency>
-      <!-- access MSB during registration -->
-      <groupId>org.onap.msb.java-sdk</groupId>
-      <artifactId>msb-java-sdk</artifactId>
-      <version>1.1.0</version>
-    </dependency>
     <dependency>
       <groupId>pl.pojo</groupId>
       <artifactId>pojo-tester</artifactId>
       <version>9.4.8.v20171121</version>
       <scope>test</scope>
     </dependency>
-    <dependency>
-      <groupId>org.onap.aai.aai-common</groupId>
-      <artifactId>aai-schema</artifactId>
-      <version>1.2.0</version>
-      <exclusions>
-        <!-- Can be removed if https://jira.onap.org/browse/AAI-894 is fixed -->
-        <exclusion>
-          <groupId>org.mockito</groupId>
-          <artifactId>mockito-core</artifactId>
-        </exclusion>
-        <exclusion>
-          <groupId>org.powermock</groupId>
-          <artifactId>powermock-module-junit4</artifactId>
-        </exclusion>
-        <exclusion>
-          <groupId>org.powermock</groupId>
-          <artifactId>powermock-api-mockito</artifactId>
-        </exclusion>
-      </exclusions>
-    </dependency>
-    <dependency>
-      <groupId>org.onap.aai</groupId>
-      <artifactId>rest-client</artifactId>
-      <version>1.2.0</version>
-      <exclusions>
-        <!-- Can be removed if https://jira.onap.org/browse/AAI-894 is fixed -->
-        <exclusion>
-          <groupId>org.mockito</groupId>
-          <artifactId>mockito-core</artifactId>
-        </exclusion>
-        <exclusion>
-          <groupId>org.powermock</groupId>
-          <artifactId>powermock-module-junit4</artifactId>
-        </exclusion>
-        <exclusion>
-          <groupId>org.powermock</groupId>
-          <artifactId>powermock-api-mockito</artifactId>
-        </exclusion>
-      </exclusions>
-    </dependency>
   </dependencies>
   <build>
     <plugins>
index 55e9cca..87f56db 100644 (file)
@@ -17,9 +17,8 @@ package org.onap.vfc.nfvo.driver.vnfm.svnfm.nokia.api;
 
 import com.nokia.cbam.lcm.v32.model.OperationExecution;
 import com.nokia.cbam.lcm.v32.model.VnfLifecycleChangeNotification;
-import org.onap.vfc.nfvo.driver.vnfm.svnfm.nokia.vnfm.notification.ReportedAffectedConnectionPoints;
-
 import java.util.Optional;
+import org.onap.vfc.nfvo.driver.vnfm.svnfm.nokia.vnfm.notification.ReportedAffectedConnectionPoints;
 
 /**
  * Responsible for processing the preprocessed notification from CBAM and making the changes
index 13b070a..3866587 100644 (file)
@@ -17,6 +17,7 @@ package org.onap.vfc.nfvo.driver.vnfm.svnfm.nokia.onap.core;
 
 import com.google.common.cache.CacheLoader;
 import com.google.common.cache.LoadingCache;
+import java.util.concurrent.TimeUnit;
 import org.onap.vfc.nfvo.driver.vnfm.svnfm.nokia.api.VimInfoProvider;
 import org.onap.vfc.nfvo.driver.vnfm.svnfm.nokia.api.VnfmInfoProvider;
 import org.onap.vnfmdriver.model.VnfmInfo;
@@ -24,10 +25,9 @@ import org.slf4j.Logger;
 import org.springframework.beans.factory.InitializingBean;
 import org.springframework.core.env.Environment;
 
-import java.util.concurrent.TimeUnit;
+import static java.lang.Long.valueOf;
 
 import static com.google.common.cache.CacheBuilder.newBuilder;
-import static java.lang.Long.valueOf;
 import static org.onap.vfc.nfvo.driver.vnfm.svnfm.nokia.util.CbamUtils.buildFatalFailure;
 import static org.slf4j.LoggerFactory.getLogger;
 
index ec6db5e..99fe615 100644 (file)
  */
 package org.onap.vfc.nfvo.driver.vnfm.svnfm.nokia.onap.core;
 
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.Map;
 import org.springframework.beans.factory.InitializingBean;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.core.env.Environment;
 import org.springframework.stereotype.Component;
 
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.Map;
-
 import static com.google.common.base.Splitter.on;
 import static com.google.common.collect.Lists.newArrayList;
 
index 64a418d..c9edf89 100644 (file)
  */
 package org.onap.vfc.nfvo.driver.vnfm.svnfm.nokia.onap.core;
 
-import org.onap.msb.sdk.discovery.common.RouteException;
-import org.onap.msb.sdk.discovery.entity.MicroServiceFullInfo;
-import org.onap.msb.sdk.discovery.entity.NodeInfo;
-import org.onap.msb.sdk.httpclient.msb.MSBServiceClient;
+import com.google.common.annotations.VisibleForTesting;
+import org.onap.msb.ApiClient;
+import org.onap.msb.api.ServiceResourceApi;
+import org.onap.msb.model.MicroServiceFullInfo;
+import org.onap.msb.model.NodeInfo;
 import org.slf4j.Logger;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.core.env.Environment;
 import org.springframework.stereotype.Component;
 
-import static java.lang.Integer.valueOf;
 import static org.onap.vfc.nfvo.driver.vnfm.svnfm.nokia.util.CbamUtils.buildFatalFailure;
 import static org.slf4j.LoggerFactory.getLogger;
 
@@ -48,8 +48,15 @@ public class MsbApiProvider extends IpMappingProvider {
     /**
      * @return API to access ONAP MSB
      */
-    public MSBServiceClient getMsbClient() {
-        return new MSBServiceClient(messageBusIp, valueOf(messageBusPort));
+    public ServiceResourceApi getMsbApi() {
+        return buildApiClient().createService(ServiceResourceApi.class);
+    }
+
+    @VisibleForTesting
+    ApiClient buildApiClient() {
+        ApiClient apiClient = new ApiClient();
+        apiClient.setAdapterBuilder(apiClient.getAdapterBuilder().baseUrl("http://" + messageBusIp + ":" + messageBusPort + "/api/msdiscover/v1/"));
+        return apiClient;
     }
 
     /**
@@ -60,15 +67,15 @@ public class MsbApiProvider extends IpMappingProvider {
     public String getMicroServiceUrl(String name, String version) {
         MicroServiceFullInfo microServiceFullInfo = getMicroServiceInfo(name, version);
         String ipAnPort = getNodeIpAnPort(microServiceFullInfo);
-        String protocol = microServiceFullInfo.isEnable_ssl() ? "https://" : "http://";
+        String protocol = microServiceFullInfo.isEnableSsl() ? "https://" : "http://";
         //the field name in A&AI is misleading the URL is relative path postfixed to http(s)://ip:port
         return protocol + ipAnPort + microServiceFullInfo.getUrl();
     }
 
     private MicroServiceFullInfo getMicroServiceInfo(String name, String version) {
         try {
-            return getMsbClient().queryMicroServiceInfo(name, version);
-        } catch (RouteException e) {
+            return getMsbApi().getMicroService_0(name, version, null, null, null, null, null).blockingFirst();
+        } catch (Exception e) {
             throw buildFatalFailure(logger, "Unable to get micro service URL for " + name + " with version " + version, e);
         }
     }
index 92064b1..0c57c37 100644 (file)
@@ -18,11 +18,10 @@ package org.onap.vfc.nfvo.driver.vnfm.svnfm.nokia.onap.core;
 
 import com.nokia.cbam.lcn.v32.api.SubscriptionsApi;
 import com.nokia.cbam.lcn.v32.model.*;
-import org.onap.msb.sdk.discovery.common.RouteException;
-import org.onap.msb.sdk.discovery.entity.MicroServiceFullInfo;
-import org.onap.msb.sdk.discovery.entity.MicroServiceInfo;
-import org.onap.msb.sdk.discovery.entity.Node;
-import org.onap.vfc.nfvo.driver.vnfm.svnfm.nokia.util.SystemFunctions;
+import java.util.ArrayList;
+import org.onap.msb.model.MicroServiceFullInfo;
+import org.onap.msb.model.MicroServiceInfo;
+import org.onap.msb.model.Node;
 import org.onap.vfc.nfvo.driver.vnfm.svnfm.nokia.vnfm.CbamRestApiProvider;
 import org.onap.vfc.nfvo.driver.vnfm.svnfm.nokia.vnfm.DriverProperties;
 import org.slf4j.Logger;
@@ -30,11 +29,9 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Component;
 
-import java.util.ArrayList;
-import java.util.HashSet;
-
 import static com.nokia.cbam.lcn.v32.model.SubscriptionAuthentication.TypeEnum.NONE;
 import static org.onap.vfc.nfvo.driver.vnfm.svnfm.nokia.util.CbamUtils.buildFatalFailure;
+import static org.onap.vfc.nfvo.driver.vnfm.svnfm.nokia.util.SystemFunctions.systemFunctions;
 import static org.onap.vfc.nfvo.driver.vnfm.svnfm.nokia.vnfm.CbamRestApiProvider.NOKIA_LCN_API_VERSION;
 import static org.slf4j.LoggerFactory.getLogger;
 
@@ -89,17 +86,20 @@ public class SelfRegistrationManager {
     public void deRegister() {
         try {
             logger.info("Cancelling micro service registration");
-            msbApiProvider.getMsbClient().cancelMicroServiceInfo(SERVICE_NAME, DRIVER_VERSION);
-        } catch (RouteException e) {
+            systemFunctions().blockingFirst(msbApiProvider.getMsbApi().deleteMicroService(SERVICE_NAME, DRIVER_VERSION, null, null));
+        } catch (Exception e) {
             //ONAP throws 500 internal server error, but deletes the micro service
+            boolean serviceFoundAfterDelete = false;
             try {
-                msbApiProvider.getMsbClient().queryMicroServiceInfo(SERVICE_NAME, DRIVER_VERSION);
-                //the micro service still exists
-                throw buildFatalFailure(logger, "Unable to deRegister Nokia VNFM driver", e);
-            } catch (RouteException e1) {
+                msbApiProvider.getMsbApi().getMicroService_0(SERVICE_NAME, DRIVER_VERSION, null, null, null, null, null);
+                serviceFoundAfterDelete = true;
+            } catch (Exception e1) {
                 logger.info("Unable to query " + SERVICE_NAME + " from MSB (so the service was successfully deleted)", e1);
                 // the micro service was deleted (even though 500 HTTP code was reported)
             }
+            if (serviceFoundAfterDelete) {
+                throw buildFatalFailure(logger, "Unable to deRegister Nokia VNFM driver", e);
+            }
         }
         deleteSubscription(driverProperties.getVnfmId());
     }
@@ -108,7 +108,7 @@ public class SelfRegistrationManager {
      * @return the swagger API definition
      */
     public byte[] getSwaggerApiDefinition() {
-        return SystemFunctions.systemFunctions().loadFile(SWAGGER_API_DEFINITION);
+        return systemFunctions().loadFile(SWAGGER_API_DEFINITION);
     }
 
     private String getDriverVnfmUrl() {
@@ -122,7 +122,8 @@ public class SelfRegistrationManager {
             String callbackUrl = getDriverVnfmUrl() + DriverProperties.LCN_URL;
             for (Subscription subscription : lcnApi.subscriptionsGet(NOKIA_LCN_API_VERSION).blockingFirst()) {
                 if (subscription.getCallbackUrl().equals(callbackUrl)) {
-                    lcnApi.subscriptionsSubscriptionIdDelete(subscription.getId(), NOKIA_LCN_API_VERSION);
+                    logger.info("Deleting subscription with {} identifier", subscription.getId());
+                    systemFunctions().blockingFirst(lcnApi.subscriptionsSubscriptionIdDelete(subscription.getId(), NOKIA_LCN_API_VERSION));
                 }
             }
         } catch (Exception e) {
@@ -135,20 +136,20 @@ public class SelfRegistrationManager {
         MicroServiceInfo microServiceInfo = new MicroServiceInfo();
         microServiceInfo.setUrl(DriverProperties.BASE_URL);
         //the PATH should not be set
-        microServiceInfo.setProtocol("REST");
-        microServiceInfo.setVisualRange(INTERNAL_SERVICE);
+        microServiceInfo.setProtocol(MicroServiceInfo.ProtocolEnum.REST);
+        microServiceInfo.setVisualRange(MicroServiceInfo.VisualRangeEnum._1);
         microServiceInfo.setServiceName(SERVICE_NAME);
         microServiceInfo.setVersion(DRIVER_VERSION);
-        microServiceInfo.setEnable_ssl(false);
+        microServiceInfo.setEnableSsl(false);
         Node node = new Node();
-        microServiceInfo.setNodes(new HashSet<>());
+        microServiceInfo.setNodes(new ArrayList<>());
         microServiceInfo.getNodes().add(node);
         node.setIp(driverMsbExternalIp);
         node.setPort(driverPort);
         node.setTtl("0");
         try {
-            return msbApiProvider.getMsbClient().registerMicroServiceInfo(microServiceInfo);
-        } catch (RouteException e) {
+            return msbApiProvider.getMsbApi().addMicroService(microServiceInfo, true, false).blockingFirst();
+        } catch (Exception e) {
             throw buildFatalFailure(logger, "Unable to register Nokia VNFM driver", e);
         }
     }
@@ -160,6 +161,7 @@ public class SelfRegistrationManager {
         try {
             for (Subscription subscription : lcnApi.subscriptionsGet(NOKIA_LCN_API_VERSION).blockingFirst()) {
                 if (subscription.getCallbackUrl().equals(callbackUrl)) {
+                    logger.warn("The subscription with {} identifier has the same callback URL", subscription.getId());
                     return;
                 }
             }
@@ -175,7 +177,8 @@ public class SelfRegistrationManager {
             SubscriptionAuthentication subscriptionAuthentication = new SubscriptionAuthentication();
             subscriptionAuthentication.setType(NONE);
             request.setAuthentication(subscriptionAuthentication);
-            lcnApi.subscriptionsPost(request, NOKIA_LCN_API_VERSION);
+            Subscription createdSubscription = lcnApi.subscriptionsPost(request, NOKIA_LCN_API_VERSION).blockingFirst();
+            logger.info("Subscribed to LCN with {} identifier", createdSubscription.getId());
         } catch (Exception e) {
             throw buildFatalFailure(logger, "Unable to subscribe to CBAM LCN", e);
         }
index f5656f7..81834bc 100644 (file)
@@ -15,9 +15,8 @@
  */
 package org.onap.vfc.nfvo.driver.vnfm.svnfm.nokia.onap.direct;
 
-import org.onap.aai.domain.yang.v11.EsrSystemInfo;
-import org.onap.aai.domain.yang.v11.EsrSystemInfoList;
-import org.onap.aai.domain.yang.v11.EsrVnfm;
+import org.onap.aai.model.EsrSystemInfo;
+import org.onap.aai.model.EsrVnfm;
 import org.onap.vfc.nfvo.driver.vnfm.svnfm.nokia.onap.core.GenericExternalSystemInfoProvider;
 import org.onap.vfc.nfvo.driver.vnfm.svnfm.nokia.spring.Conditions;
 import org.onap.vnfmdriver.model.VimInfo;
@@ -28,9 +27,6 @@ import org.springframework.context.annotation.Conditional;
 import org.springframework.core.env.Environment;
 import org.springframework.stereotype.Component;
 
-import static java.lang.String.format;
-import static org.onap.vfc.nfvo.driver.vnfm.svnfm.nokia.onap.direct.AAIRestApiProvider.AAIService.CLOUD;
-import static org.onap.vfc.nfvo.driver.vnfm.svnfm.nokia.onap.direct.AAIRestApiProvider.AAIService.ESR;
 import static org.onap.vfc.nfvo.driver.vnfm.svnfm.nokia.util.CbamUtils.buildFatalFailure;
 import static org.onap.vfc.nfvo.driver.vnfm.svnfm.nokia.vnfm.LifecycleManager.getCloudOwner;
 import static org.onap.vfc.nfvo.driver.vnfm.svnfm.nokia.vnfm.LifecycleManager.getRegionName;
@@ -42,8 +38,6 @@ import static org.slf4j.LoggerFactory.getLogger;
 @Component
 @Conditional(value = Conditions.UseForDirect.class)
 public class AAIExternalSystemInfoProvider extends GenericExternalSystemInfoProvider {
-    private static final String VNFM_URL = "/esr-vnfm-list/esr-vnfm/%s?depth=all";
-    private static final String VIM_URL = "/cloud-regions/cloud-region/%s/%s/esr-system-info-list";
     private static Logger logger = getLogger(AAIExternalSystemInfoProvider.class);
     private final AAIRestApiProvider aaiRestApiProvider;
 
@@ -55,20 +49,20 @@ public class AAIExternalSystemInfoProvider extends GenericExternalSystemInfoProv
 
     @Override
     public VnfmInfo queryVnfmInfoFromSource(String vnfmId) {
+        return convertEsrToVnfmInfo(getEsrVnfm(vnfmId));
+    }
+
+    private EsrVnfm getEsrVnfm(String vnfmId) {
         try {
-            return convertEsrToVnfmInfo(aaiRestApiProvider.get(logger, ESR, format(VNFM_URL, vnfmId), EsrVnfm.class));
-        } catch (RuntimeException e) {
+            return aaiRestApiProvider.getExternalSystemApi().getExternalSystemEsrVnfmListEsrVnfm(vnfmId).blockingFirst();
+        } catch (Exception e) {
             throw buildFatalFailure(logger, "Unable to query VNFM with " + vnfmId + " identifier from AAI", e);
         }
     }
 
     @Override
     public VimInfo getVimInfo(String vimId) {
-        try {
-            return convertEsrToVim(getEsrSystemInfo(vimId), vimId);
-        } catch (RuntimeException e) {
-            throw buildFatalFailure(logger, "Unable to query VIM with " + vimId + " identifier from AAI", e);
-        }
+        return convertEsrToVim(getEsrSystemInfo(vimId), vimId);
     }
 
     /**
@@ -76,8 +70,11 @@ public class AAIExternalSystemInfoProvider extends GenericExternalSystemInfoProv
      * @return the VIM details
      */
     public EsrSystemInfo getEsrSystemInfo(String vimId) {
-        String url = format(VIM_URL, getCloudOwner(vimId), getRegionName(vimId));
-        return aaiRestApiProvider.get(logger, CLOUD, url, EsrSystemInfoList.class).getEsrSystemInfo().get(0);
+        try {
+            return aaiRestApiProvider.getCloudInfrastructureApi().getCloudInfrastructureCloudRegionsCloudRegion(getCloudOwner(vimId), getRegionName(vimId), null, null).blockingFirst().getEsrSystemInfoList().get(0);
+        } catch (Exception e) {
+            throw buildFatalFailure(logger, "Unable to query VIM with " + vimId + " identifier from AAI", e);
+        }
     }
 
     private VimInfo convertEsrToVim(EsrSystemInfo esrSystemInfo, String vimId) {
@@ -103,7 +100,7 @@ public class AAIExternalSystemInfoProvider extends GenericExternalSystemInfoProv
 
 
     private VnfmInfo convertEsrToVnfmInfo(EsrVnfm vnfmInAai) {
-        EsrSystemInfo esrSystemInfo = vnfmInAai.getEsrSystemInfoList().getEsrSystemInfo().get(0);
+        EsrSystemInfo esrSystemInfo = vnfmInAai.getEsrSystemInfoList().get(0);
         VnfmInfo vnfmInfo = new VnfmInfo();
         vnfmInfo.setPassword(esrSystemInfo.getPassword());
         vnfmInfo.setDescription(esrSystemInfo.getEsrSystemInfoId());
index 141ba84..14bdea1 100644 (file)
 package org.onap.vfc.nfvo.driver.vnfm.svnfm.nokia.onap.direct;
 
 import com.google.common.annotations.VisibleForTesting;
-import org.onap.aai.restclient.client.Headers;
-import org.onap.aai.restclient.client.OperationResult;
-import org.onap.aai.restclient.client.RestClient;
-import org.onap.aai.restclient.enums.RestAuthenticationMode;
+import okhttp3.Credentials;
+import okhttp3.Request;
+import org.onap.aai.ApiClient;
+import org.onap.aai.api.CloudInfrastructureApi;
+import org.onap.aai.api.ExternalSystemApi;
+import org.onap.aai.api.NetworkApi;
 import org.onap.vfc.nfvo.driver.vnfm.svnfm.nokia.onap.core.MsbApiProvider;
 import org.onap.vfc.nfvo.driver.vnfm.svnfm.nokia.spring.Conditions;
-import org.slf4j.Logger;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.context.annotation.Conditional;
-import org.springframework.http.MediaType;
 import org.springframework.stereotype.Component;
 
-import javax.xml.bind.JAXBContext;
-import java.io.ByteArrayOutputStream;
-import java.io.StringReader;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.NoSuchElementException;
-
-import static com.google.common.collect.Lists.newArrayList;
-import static javax.ws.rs.core.MediaType.APPLICATION_XML_TYPE;
 import static org.onap.vfc.nfvo.driver.vnfm.svnfm.nokia.onap.core.SelfRegistrationManager.SERVICE_NAME;
-import static org.onap.vfc.nfvo.driver.vnfm.svnfm.nokia.util.CbamUtils.buildFatalFailure;
-import static org.slf4j.LoggerFactory.getLogger;
 
 /**
  * Responsible for providing access to AAI APIs.
@@ -50,118 +38,63 @@ import static org.slf4j.LoggerFactory.getLogger;
 @Component
 @Conditional(value = Conditions.UseForDirect.class)
 public class AAIRestApiProvider {
-    private static final String AAI_VERSION = "v11";
-    private static Logger logger = getLogger(AAIRestApiProvider.class);
     private final MsbApiProvider msbApiProvider;
+    private final AaiSecurityProvider aaiSecurityProvider;
     @Value("${aaiUsername}")
     private String aaiUsername;
     @Value("${aaiPassword}")
     private String aaiPassword;
 
     @Autowired
-    AAIRestApiProvider(MsbApiProvider msbApiProvider) {
+    AAIRestApiProvider(MsbApiProvider msbApiProvider, AaiSecurityProvider aaiSecurityProvider) {
         this.msbApiProvider = msbApiProvider;
+        this.aaiSecurityProvider = aaiSecurityProvider;
     }
 
     /**
-     * @param logger  the logger of the class that requests unmarshalling
-     * @param service the AAI service of the request
-     * @param url     the URL of the request after the base URL (ex. /cloud-infrastructure/...)
-     * @param clazz   the class of the result
-     * @param <T>     the type of the result
-     * @return the result of the GET request
-     */
-    public <T> T get(Logger logger, AAIService service, String url, Class<T> clazz) {
-        return expectSuccess(logger, buildClient().get(getBaseUrl(service.getServiceName()) + url, buildCommonHeaders(), APPLICATION_XML_TYPE), clazz, url);
-    }
-
-    /**
-     * @param logger  the logger of the class that requests unmarshalling
-     * @param service the AAI service of the request
-     * @param url     the URL of the request after the base URL (ex. /cloud-infrastructure/...)
-     * @param payload the payload of the request (non serialized)
-     * @param clazz   the class of the result
-     * @param <T>     the type of the result
-     * @return the result of the PUT request
+     * @return API to access the cloud infrastructure
      */
-    public <T, S> T put(Logger logger, AAIService service, String url, S payload, Class<T> clazz) {
-        String marshalledContent = marshall(payload);
-        OperationResult result = buildClient().put(getBaseUrl(service.getServiceName()) + url, marshalledContent, buildCommonHeaders(), APPLICATION_XML_TYPE, APPLICATION_XML_TYPE);
-        return expectSuccess(logger, result, clazz, url);
+    public CloudInfrastructureApi getCloudInfrastructureApi() {
+        return buildApiClient(AAIService.CLOUD).createService(CloudInfrastructureApi.class);
     }
 
     /**
-     * Execute a delete request on the given URL
-     *
-     * @param logger  the logger of the class that requests unmarshalling
-     * @param service the AAI service of the request
-     * @param url     the URL of the request after the base URL (ex. /cloud-infrastructure/...)
+     * @return API to access the external systems
      */
-    public void delete(Logger logger, AAIService service, String url) {
-        buildClient().delete(getBaseUrl(service.getServiceName()) + url, buildCommonHeaders(), APPLICATION_XML_TYPE);
+    public ExternalSystemApi getExternalSystemApi() {
+        return buildApiClient(AAIService.ESR).createService(ExternalSystemApi.class);
     }
 
     /**
-     * @param serviceName the name of the AAI service on MSB
-     * @return the base URL of the service
+     * @return API to access the networking
      */
-    private String getBaseUrl(String serviceName) {
-        return msbApiProvider.getMicroServiceUrl(serviceName, AAI_VERSION);
-    }
+    public NetworkApi getNetworkApi() {
+        return buildApiClient(AAIService.NETWORK).createService(NetworkApi.class);
 
-    private <T> T expectSuccess(Logger logger, OperationResult result, Class<T> clazz, String url) {
-        if (!result.wasSuccessful()) {
-            if (result.getResultCode() == 404) {
-                logger.debug("The resource at " + url + " does not exists");
-                throw new NoSuchElementException("The resource at " + url + " does not exists");
-            }
-            throw buildFatalFailure(logger, "Bad response. Code: " + result.getResultCode() + " cause: " + result.getFailureCause());
-        }
-        if (clazz.isAssignableFrom(Void.class)) {
-            return null;
-        }
-        return unmarshal(result.getResult(), clazz);
-    }
-
-    private <T> T unmarshal(String content, Class<T> clazz) {
-        try {
-            return (T) JAXBContext.newInstance(clazz).createUnmarshaller().unmarshal(new StringReader(content));
-        } catch (Exception e) {
-            throw buildFatalFailure(logger, "Unable to unmarshal content", e);
-        }
-    }
-
-    private String marshall(Object object) {
-        try {
-            ByteArrayOutputStream bos = new ByteArrayOutputStream();
-            JAXBContext.newInstance(object.getClass()).createMarshaller().marshal(object, bos);
-            return bos.toString();
-        } catch (Exception e) {
-            throw buildFatalFailure(logger, "Unable to marshal content", e);
-        }
-    }
-
-    /**
-     * @return the common mandatory headers for AAI requests
-     */
-    private Map<String, List<String>> buildCommonHeaders() {
-        Map<String, List<String>> headers = new HashMap<>();
-        headers.put(Headers.ACCEPT, newArrayList(MediaType.APPLICATION_XML_VALUE));
-        headers.put(Headers.FROM_APP_ID, newArrayList(SERVICE_NAME));
-        return headers;
-    }
-
-
-    private RestClient buildClient() {
-        return buildRawClient().basicAuthUsername(aaiUsername).basicAuthPassword(aaiPassword).authenticationMode(RestAuthenticationMode.SSL_BASIC);
     }
 
     @VisibleForTesting
-    RestClient buildRawClient() {
-        return new RestClient();
+    ApiClient buildApiClient(AAIService service) {
+        ApiClient apiClient = new ApiClient();
+        apiClient.getOkBuilder().sslSocketFactory(aaiSecurityProvider.buildSSLSocketFactory(), aaiSecurityProvider.buildTrustManager());
+        apiClient.getOkBuilder().hostnameVerifier(aaiSecurityProvider.buildHostnameVerifier());
+        apiClient.getOkBuilder().addInterceptor(chain -> {
+            Request request = chain.request().newBuilder().addHeader("X-FromAppId", SERVICE_NAME).build();
+            return chain.proceed(request);
+        });
+        apiClient.getOkBuilder().authenticator((route, response) -> {
+            String credential = Credentials.basic(aaiUsername, aaiPassword);
+            return response.request().newBuilder().header("Authorization", credential).build();
+        });
+        String url = msbApiProvider.getMicroServiceUrl(service.getServiceName(), "v11");
+        if (!url.endsWith("/")) {
+            url = url + "/";
+        }
+        apiClient.getAdapterBuilder().baseUrl(url);
+        return apiClient;
     }
 
-    public enum AAIService {
+    enum AAIService {
         NETWORK {
             String getServiceName() {
                 return "aai-network";
diff --git a/nokiav2/driver/src/main/java/org/onap/vfc/nfvo/driver/vnfm/svnfm/nokia/onap/direct/AaiSecurityProvider.java b/nokiav2/driver/src/main/java/org/onap/vfc/nfvo/driver/vnfm/svnfm/nokia/onap/direct/AaiSecurityProvider.java
new file mode 100644 (file)
index 0000000..688a82f
--- /dev/null
@@ -0,0 +1,48 @@
+/*
+ * Copyright 2016-2017, Nokia Corporation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.onap.vfc.nfvo.driver.vnfm.svnfm.nokia.onap.direct;
+
+import org.onap.vfc.nfvo.driver.vnfm.svnfm.nokia.vnfm.GenericSecurityProvider;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.stereotype.Component;
+
+/**
+ * Responsible for providing SSL factories for AAI
+ */
+@Component
+public class AaiSecurityProvider extends GenericSecurityProvider {
+    @Value("${trustedCertificatesForAai}")
+    private String trustedCertificates;
+    @Value("${skipCertificateVerificationForAai}")
+    private boolean skipCertificateVerification;
+    @Value("${skipHostnameVerificationForAai}")
+    private boolean skipHostnameVerification;
+
+    @Override
+    protected boolean skipHostnameVerification() {
+        return skipHostnameVerification;
+    }
+
+    @Override
+    protected boolean skipCertificateVerification() {
+        return skipCertificateVerification;
+    }
+
+    @Override
+    protected String trustedCertificates() {
+        return trustedCertificates;
+    }
+}
index 8a16547..a7e6e40 100644 (file)
@@ -17,6 +17,8 @@ package org.onap.vfc.nfvo.driver.vnfm.svnfm.nokia.onap.direct;
 
 import com.google.gson.Gson;
 import com.google.gson.JsonObject;
+import java.io.ByteArrayInputStream;
+import java.io.InputStream;
 import org.apache.http.HttpEntity;
 import org.apache.http.client.methods.CloseableHttpResponse;
 import org.apache.http.client.methods.HttpGet;
@@ -32,11 +34,9 @@ import org.springframework.context.annotation.Conditional;
 import org.springframework.stereotype.Component;
 import org.yaml.snakeyaml.Yaml;
 
-import java.io.ByteArrayInputStream;
-import java.io.InputStream;
+import static java.lang.String.format;
 
 import static com.google.common.io.ByteStreams.toByteArray;
-import static java.lang.String.format;
 import static org.apache.http.HttpHeaders.ACCEPT;
 import static org.onap.vfc.nfvo.driver.vnfm.svnfm.nokia.onap.core.SelfRegistrationManager.SERVICE_NAME;
 import static org.onap.vfc.nfvo.driver.vnfm.svnfm.nokia.util.CbamUtils.*;
index aad90ea..8651743 100644 (file)
@@ -18,6 +18,10 @@ package org.onap.vfc.nfvo.driver.vnfm.svnfm.nokia.onap.direct.notification;
 import com.nokia.cbam.lcm.v32.model.AffectedVirtualLink;
 import com.nokia.cbam.lcm.v32.model.OperationExecution;
 import com.nokia.cbam.lcm.v32.model.VnfLifecycleChangeNotification;
+import java.util.Collection;
+import java.util.HashSet;
+import java.util.Optional;
+import java.util.Set;
 import org.onap.vfc.nfvo.driver.vnfm.svnfm.nokia.api.INotificationSender;
 import org.onap.vfc.nfvo.driver.vnfm.svnfm.nokia.spring.Conditions;
 import org.onap.vfc.nfvo.driver.vnfm.svnfm.nokia.vnfm.notification.ReportedAffectedConnectionPoints;
@@ -27,11 +31,6 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.context.annotation.Conditional;
 import org.springframework.stereotype.Component;
 
-import java.util.Collection;
-import java.util.HashSet;
-import java.util.Optional;
-import java.util.Set;
-
 import static com.google.common.collect.Iterables.filter;
 import static com.google.common.collect.Iterables.tryFind;
 import static com.nokia.cbam.lcm.v32.model.ChangeType.*;
index c8008f3..ee7a3fe 100644 (file)
 package org.onap.vfc.nfvo.driver.vnfm.svnfm.nokia.onap.direct.notification;
 
 import com.google.gson.Gson;
-import org.onap.aai.domain.yang.v11.ObjectFactory;
-import org.onap.aai.domain.yang.v11.Relationship;
-import org.onap.aai.domain.yang.v11.RelationshipData;
-import org.onap.aai.domain.yang.v11.RelationshipList;
+import io.reactivex.Observable;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Set;
+import org.onap.aai.model.Relationship;
+import org.onap.aai.model.RelationshipData;
 import org.onap.vfc.nfvo.driver.vnfm.svnfm.nokia.onap.direct.AAIRestApiProvider;
 import org.onap.vfc.nfvo.driver.vnfm.svnfm.nokia.vnfm.CbamRestApiProvider;
 import org.onap.vfc.nfvo.driver.vnfm.svnfm.nokia.vnfm.DriverProperties;
 import org.slf4j.Logger;
 
-import java.util.HashSet;
-import java.util.List;
-import java.util.NoSuchElementException;
-import java.util.Set;
-
 import static com.google.common.collect.Iterables.find;
 import static org.onap.vfc.nfvo.driver.vnfm.svnfm.nokia.util.CbamUtils.SEPARATOR;
 
@@ -37,7 +34,6 @@ import static org.onap.vfc.nfvo.driver.vnfm.svnfm.nokia.util.CbamUtils.SEPARATOR
  * Handles the common management of changing entities in AAI
  */
 abstract class AbstractManager {
-    protected static final ObjectFactory OBJECT_FACTORY = new ObjectFactory();
     protected final AAIRestApiProvider aaiRestApiProvider;
     protected final CbamRestApiProvider cbamRestApiProvider;
     protected final DriverProperties driverProperties;
@@ -78,17 +74,17 @@ abstract class AbstractManager {
      * @param relationships the list of relationships
      * @param relationship  the expected relationship
      */
-    protected static void addSingletonRelation(RelationshipList relationships, Relationship relationship) {
+    protected static void addSingletonRelation(List<Relationship> relationships, Relationship relationship) {
         boolean found = false;
-        for (Relationship currentRelationShip : relationships.getRelationship()) {
+        for (Relationship currentRelationShip : relationships) {
             if (relationship.getRelatedTo().equals(currentRelationShip.getRelatedTo())) {
                 found = true;
             }
         }
         if (!found) {
-            relationships.getRelationship().add(relationship);
+            relationships.add(relationship);
         } else {
-            Relationship existingRelationShip = find(relationships.getRelationship(), currentRelationShip -> currentRelationShip.getRelatedTo().equals(relationship.getRelatedTo()));
+            Relationship existingRelationShip = find(relationships, currentRelationShip -> currentRelationShip.getRelatedTo().equals(relationship.getRelatedTo()));
             existingRelationShip.getRelationshipData().clear();
             existingRelationShip.getRelationshipData().addAll(relationship.getRelationshipData());
         }
@@ -100,14 +96,14 @@ abstract class AbstractManager {
      * @param relationships the relationships
      * @param relationship  the relationship to be added
      */
-    protected static void addMissingRelation(RelationshipList relationships, Relationship relationship) {
-        for (Relationship currentRelationShip : relationships.getRelationship()) {
+    protected static void addMissingRelation(List<Relationship> relationships, Relationship relationship) {
+        for (Relationship currentRelationShip : relationships) {
             if (currentRelationShip.getRelatedTo().equals(relationship.getRelatedTo())
                     && compositeKeys(currentRelationShip.getRelationshipData()).equals(compositeKeys(relationship.getRelationshipData()))) {
                 return;
             }
         }
-        relationships.getRelationship().add(relationship);
+        relationships.add(relationship);
     }
 
     private static Set<String> compositeKeys(List<RelationshipData> data) {
@@ -126,17 +122,16 @@ abstract class AbstractManager {
     /**
      * Creates or returns a REST resource instance
      *
-     * @param service     the type of the service
-     * @param url         the URL of the resource without the service prefix
+     * @param get         provides an existing instance
      * @param newInstance the empty instance if the resource does not exists
      * @param <T>         the type of the resource
      * @return the created or queried resource
      */
-    protected <T> T createOrGet(AAIRestApiProvider.AAIService service, String url, T newInstance) {
+    protected <T> T createOrGet(Observable<T> get, T newInstance) {
         try {
-            return (T) aaiRestApiProvider.get(getLogger(), service, url, newInstance.getClass());
-        } catch (NoSuchElementException e) {
-            getLogger().debug("The resource on " + url + " URL was not found in AAI", e);
+            return get.blockingFirst();
+        } catch (Exception e) {
+            getLogger().debug("The resource was not found in AAI", e);
             return newInstance;
         }
     }
index 2b9b388..130004e 100644 (file)
 package org.onap.vfc.nfvo.driver.vnfm.svnfm.nokia.onap.direct.notification;
 
 import com.nokia.cbam.lcm.v32.model.VnfInfo;
-import org.onap.aai.domain.yang.v11.GenericVnf;
-import org.onap.aai.domain.yang.v11.Relationship;
+import java.util.ArrayList;
+import java.util.NoSuchElementException;
+import org.onap.aai.model.GenericVnf;
+import org.onap.aai.model.Relationship;
 import org.onap.vfc.nfvo.driver.vnfm.svnfm.nokia.onap.direct.AAIRestApiProvider;
 import org.onap.vfc.nfvo.driver.vnfm.svnfm.nokia.spring.Conditions;
+import org.onap.vfc.nfvo.driver.vnfm.svnfm.nokia.util.SystemFunctions;
 import org.onap.vfc.nfvo.driver.vnfm.svnfm.nokia.vnfm.CbamRestApiProvider;
 import org.onap.vfc.nfvo.driver.vnfm.svnfm.nokia.vnfm.DriverProperties;
 import org.slf4j.Logger;
@@ -27,10 +30,6 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.context.annotation.Conditional;
 import org.springframework.stereotype.Component;
 
-import java.util.NoSuchElementException;
-
-import static java.lang.String.format;
-import static org.onap.vfc.nfvo.driver.vnfm.svnfm.nokia.onap.direct.AAIRestApiProvider.AAIService.NETWORK;
 import static org.onap.vfc.nfvo.driver.vnfm.svnfm.nokia.util.CbamUtils.buildFatalFailure;
 import static org.onap.vfc.nfvo.driver.vnfm.svnfm.nokia.util.SystemFunctions.systemFunctions;
 
@@ -40,7 +39,6 @@ import static org.onap.vfc.nfvo.driver.vnfm.svnfm.nokia.util.SystemFunctions.sys
 @Component
 @Conditional(value = Conditions.UseForDirect.class)
 class GenericVnfManager extends AbstractManager {
-    private static final String VNF_URL = "/generic-vnfs/generic-vnf/%s";
     private static final long MAX_MS_TO_WAIT_FOR_VNF_TO_APPEAR = 30 * 1000L;
     private static Logger logger = org.slf4j.LoggerFactory.getLogger(GenericVnfManager.class);
 
@@ -52,6 +50,7 @@ class GenericVnfManager extends AbstractManager {
     static Relationship linkTo(String vnfId) {
         Relationship relationship = new Relationship();
         relationship.setRelatedTo("generic-vnf");
+        relationship.setRelationshipData(new ArrayList<>());
         relationship.getRelationshipData().add(buildRelationshipData("generic-vnf.vnf-id", vnfId));
         return relationship;
     }
@@ -68,7 +67,7 @@ class GenericVnfManager extends AbstractManager {
         } catch (NoSuchElementException e) {
             try {
                 logger.warn("The VNF with " + vnfId + " identifier did not appear in time", e);
-                updateFields(OBJECT_FACTORY.createGenericVnf(), vnfId, inMaintenance);
+                updateFields(new GenericVnf(), vnfId, inMaintenance);
             } catch (Exception e2) {
                 logger.warn("The VNF with " + vnfId + " identifier has been created since after the maximal wait for VNF to appear timeout", e2);
                 //the VNF might have been created since the last poll
@@ -77,8 +76,8 @@ class GenericVnfManager extends AbstractManager {
         }
     }
 
-    GenericVnf getExistingVnf(String vnfId) {
-        return aaiRestApiProvider.get(logger, NETWORK, format(VNF_URL, vnfId), GenericVnf.class);
+    private GenericVnf getExistingVnf(String vnfId) {
+        return aaiRestApiProvider.getNetworkApi().getNetworkGenericVnfsGenericVnf(vnfId, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null).blockingFirst();
     }
 
     private void updateFields(GenericVnf vnf, String vnfId, boolean inMaintenance) {
@@ -90,18 +89,17 @@ class GenericVnfManager extends AbstractManager {
         }
         vnf.setVnfId(vnfId);
         vnf.setInMaint(inMaintenance);
-        vnf.setVnfInstanceId(vnfId);
         //FIXME whould be good to know if this parameter is relevant or not? (mandatory)
         vnf.setVnfType("NokiaVNF");
         vnf.setIsClosedLoopDisabled(inMaintenance);
-        aaiRestApiProvider.put(logger, NETWORK, format(VNF_URL, vnf.getVnfId()), vnf, Void.class);
+        SystemFunctions.systemFunctions().blockingFirst(aaiRestApiProvider.getNetworkApi().createOrUpdateNetworkGenericVnfsGenericVnf(vnf.getVnfId(), vnf));
     }
 
     private GenericVnf waitForVnfToAppearInAai(String vnfId) {
         long timeoutInMs = systemFunctions().currentTimeMillis() + MAX_MS_TO_WAIT_FOR_VNF_TO_APPEAR;
         while (timeoutInMs - systemFunctions().currentTimeMillis() > 0) {
             try {
-                return aaiRestApiProvider.get(logger, NETWORK, format(VNF_URL, vnfId), GenericVnf.class);
+                return getExistingVnf(vnfId);
             } catch (NoSuchElementException e) {
                 logger.debug("Unable to get VNF with " + vnfId + " identifier", e);
             }
index 6d2b42b..1d641cf 100644 (file)
 package org.onap.vfc.nfvo.driver.vnfm.svnfm.nokia.onap.direct.notification;
 
 import com.nokia.cbam.lcm.v32.model.AffectedVirtualLink;
-import org.onap.aai.domain.yang.v11.L3Network;
-import org.onap.aai.domain.yang.v11.Relationship;
-import org.onap.aai.domain.yang.v11.RelationshipList;
+import io.reactivex.Observable;
+import java.util.ArrayList;
+import org.onap.aai.model.L3Network;
+import org.onap.aai.model.Relationship;
 import org.onap.vfc.nfvo.driver.vnfm.svnfm.nokia.onap.direct.AAIRestApiProvider;
 import org.onap.vfc.nfvo.driver.vnfm.svnfm.nokia.spring.Conditions;
 import org.onap.vfc.nfvo.driver.vnfm.svnfm.nokia.vnfm.CbamRestApiProvider;
@@ -28,9 +29,8 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.context.annotation.Conditional;
 import org.springframework.stereotype.Component;
 
-import static java.lang.String.format;
-import static org.onap.vfc.nfvo.driver.vnfm.svnfm.nokia.onap.direct.AAIRestApiProvider.AAIService.NETWORK;
 import static org.onap.vfc.nfvo.driver.vnfm.svnfm.nokia.util.CbamUtils.SEPARATOR;
+import static org.onap.vfc.nfvo.driver.vnfm.svnfm.nokia.util.SystemFunctions.systemFunctions;
 import static org.onap.vfc.nfvo.driver.vnfm.svnfm.nokia.vnfm.LifecycleManager.getCloudOwner;
 import static org.onap.vfc.nfvo.driver.vnfm.svnfm.nokia.vnfm.LifecycleManager.getRegionName;
 
@@ -40,7 +40,6 @@ import static org.onap.vfc.nfvo.driver.vnfm.svnfm.nokia.vnfm.LifecycleManager.ge
 @Component
 @Conditional(value = Conditions.UseForDirect.class)
 class L3NetworkManager extends AbstractManager {
-    private static final String NETWORK_URL = "/l3-networks/l3-network/%s";
     private static Logger logger = org.slf4j.LoggerFactory.getLogger(L3NetworkManager.class);
 
     @Autowired
@@ -54,12 +53,17 @@ class L3NetworkManager extends AbstractManager {
     }
 
     void update(String vimId, String vnfId, AffectedVirtualLink affectedVirtualLink) {
-        L3Network l3Network = createOrGet(NETWORK, format(NETWORK_URL, buildNetworkId(vnfId, affectedVirtualLink)), OBJECT_FACTORY.createL3Network());
+        L3Network l3Network = createOrGet(getNetwork(vnfId, affectedVirtualLink), new L3Network());
         updateNetworkFields(vimId, vnfId, affectedVirtualLink, l3Network);
     }
 
+    private Observable<L3Network> getNetwork(String vnfId, AffectedVirtualLink affectedVirtualLink) {
+        return aaiRestApiProvider.getNetworkApi().getNetworkL3NetworksL3Network(buildNetworkId(vnfId, affectedVirtualLink), null, null, null, null, null, null, null, null, null);
+    }
+
     void delete(String vnfId, AffectedVirtualLink removedVl) {
-        aaiRestApiProvider.delete(logger, NETWORK, format(NETWORK_URL, buildNetworkId(vnfId, removedVl)));
+        L3Network l3Network = getNetwork(vnfId, removedVl).blockingFirst();
+        systemFunctions().blockingFirst(aaiRestApiProvider.getNetworkApi().deleteNetworkL3NetworksL3Network(l3Network.getNetworkId(), l3Network.getResourceVersion()));
     }
 
     private void updateNetworkFields(String vimId, String vnfId, AffectedVirtualLink affectedVirtualLink, L3Network network) {
@@ -73,12 +77,12 @@ class L3NetworkManager extends AbstractManager {
         network.setOperationalStatus("active");
         network.setOrchestrationStatus("active");
         if (network.getRelationshipList() == null) {
-            network.setRelationshipList(new RelationshipList());
+            network.setRelationshipList(new ArrayList<>());
         }
         addMissingRelation(network.getRelationshipList(), GenericVnfManager.linkTo(vnfId));
         addSingletonRelation(network.getRelationshipList(), getRegionLink(vimId));
         addSingletonRelation(network.getRelationshipList(), getTenantLink(vimId, extractMandatoryValue(affectedVirtualLink.getResource().getAdditionalData(), "tenantId")));
-        aaiRestApiProvider.put(logger, NETWORK, format(NETWORK_URL, network.getNetworkId()), network, Void.class);
+        systemFunctions().blockingFirst(aaiRestApiProvider.getNetworkApi().createOrUpdateNetworkL3NetworksL3Network(network.getNetworkId(), network));
     }
 
     private String buildNetworkId(String vnfId, AffectedVirtualLink affectedVirtualLink) {
@@ -88,6 +92,7 @@ class L3NetworkManager extends AbstractManager {
     private Relationship getRegionLink(String vimId) {
         Relationship relationship = new Relationship();
         relationship.setRelatedTo("cloud-region");
+        relationship.setRelationshipData(new ArrayList<>());
         relationship.getRelationshipData().add(buildRelationshipData("cloud-region.cloud-owner", getCloudOwner(vimId)));
         relationship.getRelationshipData().add(buildRelationshipData("cloud-region.cloud-region-id", getRegionName(vimId)));
         return relationship;
@@ -96,6 +101,7 @@ class L3NetworkManager extends AbstractManager {
     private Relationship getTenantLink(String vimId, String tenantId) {
         Relationship relationship = new Relationship();
         relationship.setRelatedTo("tenant");
+        relationship.setRelationshipData(new ArrayList<>());
         relationship.getRelationshipData().add(buildRelationshipData("cloud-region.cloud-owner", getCloudOwner(vimId)));
         relationship.getRelationshipData().add(buildRelationshipData("cloud-region.cloud-region-id", getRegionName(vimId)));
         relationship.getRelationshipData().add(buildRelationshipData("tenant.tenant-id", tenantId));
index 229fe67..78da503 100644 (file)
  */
 package org.onap.vfc.nfvo.driver.vnfm.svnfm.nokia.onap.direct.notification;
 
-import org.onap.aai.domain.yang.v11.L3InterfaceIpv4AddressList;
-import org.onap.aai.domain.yang.v11.L3InterfaceIpv6AddressList;
-import org.onap.aai.domain.yang.v11.LInterface;
-import org.onap.aai.domain.yang.v11.RelationshipList;
+import io.reactivex.Observable;
+import java.util.ArrayList;
+import org.onap.aai.model.L3InterfaceIpv4AddressList;
+import org.onap.aai.model.L3InterfaceIpv6AddressList;
+import org.onap.aai.model.LInterface;
 import org.onap.vfc.nfvo.driver.vnfm.svnfm.nokia.onap.direct.AAIRestApiProvider;
 import org.onap.vfc.nfvo.driver.vnfm.svnfm.nokia.spring.Conditions;
 import org.onap.vfc.nfvo.driver.vnfm.svnfm.nokia.vnfm.CbamRestApiProvider;
@@ -30,7 +31,8 @@ import org.springframework.context.annotation.Conditional;
 import org.springframework.stereotype.Component;
 
 import static java.lang.String.format;
-import static org.onap.vfc.nfvo.driver.vnfm.svnfm.nokia.onap.direct.AAIRestApiProvider.AAIService.CLOUD;
+
+import static org.onap.vfc.nfvo.driver.vnfm.svnfm.nokia.util.SystemFunctions.systemFunctions;
 import static org.onap.vfc.nfvo.driver.vnfm.svnfm.nokia.vnfm.LifecycleManager.getCloudOwner;
 import static org.onap.vfc.nfvo.driver.vnfm.svnfm.nokia.vnfm.LifecycleManager.getRegionName;
 
@@ -62,15 +64,30 @@ class LInterfaceManager extends AbstractManager {
     }
 
     void update(String vnfId, String vimId, ReportedAffectedCp affectedCp, boolean inMaintenance) {
-        LInterface lInterface = createOrGet(CLOUD, buildUrl(vimId, affectedCp), OBJECT_FACTORY.createLInterface());
-        updateFields(lInterface, affectedCp, vnfId, buildUrl(vimId, affectedCp), inMaintenance);
+        LInterface lInterface = createOrGet(getLinterface(vimId, affectedCp), new LInterface());
+        updateFields(vimId, lInterface, affectedCp, vnfId, inMaintenance);
     }
 
     void delete(String vimId, ReportedAffectedCp removedCp) {
-        aaiRestApiProvider.delete(logger, AAIRestApiProvider.AAIService.CLOUD, buildUrl(vimId, removedCp));
+        LInterface linterface = getLinterface(vimId, removedCp).blockingFirst();
+        String cloudOwner = getCloudOwner(vimId);
+        String regionName = getRegionName(vimId);
+        String tenantId = removedCp.getTenantId();
+        String vServerId = removedCp.getServerProviderId();
+        String cpId = removedCp.getCpId();
+        aaiRestApiProvider.getCloudInfrastructureApi().deleteCloudInfrastructureCloudRegionsCloudRegionTenantsTenantVserversVserverLInterfacesLInterface(cloudOwner, regionName, tenantId, vServerId, cpId, linterface.getResourceVersion());
+    }
+
+    private Observable<LInterface> getLinterface(String vimId, ReportedAffectedCp cp) {
+        String cloudOwner = getCloudOwner(vimId);
+        String regionName = getRegionName(vimId);
+        String tenantId = cp.getTenantId();
+        String vServerId = cp.getServerProviderId();
+        String cpId = cp.getCpId();
+        return aaiRestApiProvider.getCloudInfrastructureApi().getCloudInfrastructureCloudRegionsCloudRegionTenantsTenantVserversVserverLInterfacesLInterface(cloudOwner, regionName, tenantId, vServerId, cpId, null, null, null, null, null, null, null, null, null, null, null, null);
     }
 
-    private void updateFields(LInterface logicalInterface, ReportedAffectedCp affectedCp, String vnfId, String url, boolean inMaintenance) {
+    private void updateFields(String vimId, LInterface logicalInterface, ReportedAffectedCp affectedCp, String vnfId, boolean inMaintenance) {
         logicalInterface.setInMaint(inMaintenance);
         logicalInterface.setIsIpUnnumbered(false);
         logicalInterface.setIsPortMirrored(false);
@@ -81,21 +98,32 @@ class LInterfaceManager extends AbstractManager {
         logicalInterface.setProvStatus("active");
         if (affectedCp.getIpAddress() != null) {
             if (affectedCp.getIpAddress().contains(":")) {
-                L3InterfaceIpv6AddressList ipv6Address = OBJECT_FACTORY.createL3InterfaceIpv6AddressList();
+                L3InterfaceIpv6AddressList ipv6Address = new L3InterfaceIpv6AddressList();
                 ipv6Address.setL3InterfaceIpv6Address(affectedCp.getIpAddress());
                 ipv6Address.setNeutronNetworkId(affectedCp.getNetworkProviderId());
+                if (logicalInterface.getL3InterfaceIpv6AddressList() == null) {
+                    logicalInterface.setL3InterfaceIpv6AddressList(new ArrayList<>());
+                }
                 logicalInterface.getL3InterfaceIpv6AddressList().add(ipv6Address);
             } else {
-                L3InterfaceIpv4AddressList ipv4Address = OBJECT_FACTORY.createL3InterfaceIpv4AddressList();
+                L3InterfaceIpv4AddressList ipv4Address = new L3InterfaceIpv4AddressList();
                 ipv4Address.setL3InterfaceIpv4Address(affectedCp.getIpAddress());
                 ipv4Address.setNeutronNetworkId(affectedCp.getNetworkProviderId());
+                if (logicalInterface.getL3InterfaceIpv4AddressList() == null) {
+                    logicalInterface.setL3InterfaceIpv4AddressList(new ArrayList<>());
+                }
                 logicalInterface.getL3InterfaceIpv4AddressList().add(ipv4Address);
             }
         }
         if (logicalInterface.getRelationshipList() == null) {
-            logicalInterface.setRelationshipList(new RelationshipList());
+            logicalInterface.setRelationshipList(new ArrayList<>());
         }
         addSingletonRelation(logicalInterface.getRelationshipList(), GenericVnfManager.linkTo(vnfId));
-        aaiRestApiProvider.put(logger, CLOUD, url, logicalInterface, Void.class);
+        String cloudOwner = getCloudOwner(vimId);
+        String regionName = getRegionName(vimId);
+        String tenantId = affectedCp.getTenantId();
+        String vServerId = affectedCp.getServerProviderId();
+        String cpId = affectedCp.getCpId();
+        systemFunctions().blockingFirst(aaiRestApiProvider.getCloudInfrastructureApi().createOrUpdateCloudInfrastructureCloudRegionsCloudRegionTenantsTenantVserversVserverLInterfacesLInterface(cloudOwner, regionName, tenantId, vServerId, cpId, logicalInterface));
     }
 }
index e1d1197..9528e1a 100644 (file)
@@ -15,8 +15,9 @@
  */
 package org.onap.vfc.nfvo.driver.vnfm.svnfm.nokia.onap.direct.notification;
 
-import org.onap.aai.domain.yang.v11.RelationshipList;
-import org.onap.aai.domain.yang.v11.Vnfc;
+import io.reactivex.Observable;
+import java.util.ArrayList;
+import org.onap.aai.model.Vnfc;
 import org.onap.vfc.nfvo.driver.vnfm.svnfm.nokia.onap.direct.AAIRestApiProvider;
 import org.onap.vfc.nfvo.driver.vnfm.svnfm.nokia.spring.Conditions;
 import org.onap.vfc.nfvo.driver.vnfm.svnfm.nokia.vnfm.CbamRestApiProvider;
@@ -26,9 +27,8 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.context.annotation.Conditional;
 import org.springframework.stereotype.Component;
 
-import static java.lang.String.format;
-import static org.onap.vfc.nfvo.driver.vnfm.svnfm.nokia.onap.direct.AAIRestApiProvider.AAIService.NETWORK;
 import static org.onap.vfc.nfvo.driver.vnfm.svnfm.nokia.util.CbamUtils.SEPARATOR;
+import static org.onap.vfc.nfvo.driver.vnfm.svnfm.nokia.util.SystemFunctions.systemFunctions;
 
 /**
  * Responsible for managing {@link Vnfc} in AAI
@@ -43,15 +43,6 @@ public class VnfcManager extends AbstractManager {
         super(aaiRestApiProvider, cbamRestApiProvider, driverProperties);
     }
 
-    /**
-     * @param vnfId      the identifier of the VNF
-     * @param cbamVnfcId the identifier of the VNFC in CBAM
-     * @return the URL of the VNFC
-     */
-    public static String buildUrl(String vnfId, String cbamVnfcId) {
-        return format("/vnfcs/vnfc/%s", buildId(vnfId, cbamVnfcId));
-    }
-
     private static String buildId(String vnfId, String cbamVnfcId) {
         return vnfId + SEPARATOR + cbamVnfcId;
     }
@@ -62,16 +53,20 @@ public class VnfcManager extends AbstractManager {
     }
 
     void delete(String vnfId, com.nokia.cbam.lcm.v32.model.AffectedVnfc cbamVnfc) {
-        aaiRestApiProvider.delete(logger, NETWORK, buildUrl(vnfId, cbamVnfc.getId()));
+        Vnfc vnfc = getVnfc(buildId(vnfId, cbamVnfc.getId())).blockingFirst();
+        systemFunctions().blockingFirst(aaiRestApiProvider.getNetworkApi().deleteNetworkVnfcsVnfc(vnfc.getVnfcName(), vnfc.getResourceVersion()));
+    }
+
+    private Observable<Vnfc> getVnfc(String vnfcId) {
+        return aaiRestApiProvider.getNetworkApi().getNetworkVnfcsVnfc(vnfcId, null, null, null, null, null, null, null, null, null);
     }
 
     void update(String vimId, String tenantId, String vnfId, com.nokia.cbam.lcm.v32.model.AffectedVnfc cbamVnfc, boolean inMaintenance) {
-        String url = buildUrl(vnfId, cbamVnfc.getId());
-        Vnfc vnfc = createOrGet(NETWORK, url, OBJECT_FACTORY.createVnfc());
-        updateFields(vimId, tenantId, vnfc, cbamVnfc, vnfId, url, inMaintenance);
+        Vnfc vnfc = createOrGet(getVnfc(buildId(vnfId, cbamVnfc.getId())), new Vnfc());
+        updateFields(vimId, tenantId, vnfc, cbamVnfc, vnfId, inMaintenance);
     }
 
-    private void updateFields(String vimId, String tenantId, Vnfc aaiVnfc, com.nokia.cbam.lcm.v32.model.AffectedVnfc cbamVnfc, String vnfId, String url, boolean inMaintenance) {
+    private void updateFields(String vimId, String tenantId, Vnfc aaiVnfc, com.nokia.cbam.lcm.v32.model.AffectedVnfc cbamVnfc, String vnfId, boolean inMaintenance) {
         aaiVnfc.setInMaint(inMaintenance);
         aaiVnfc.setIsClosedLoopDisabled(inMaintenance);
         //FIXME would be good to know what is this mandatory parameter
@@ -79,9 +74,11 @@ public class VnfcManager extends AbstractManager {
         //FIXME would be good to know what is this mandatory parameter
         aaiVnfc.setNfcNamingCode(cbamVnfc.getId());
         aaiVnfc.setVnfcName(buildId(vnfId, cbamVnfc.getId()));
-        aaiVnfc.setRelationshipList(new RelationshipList());
+        if (aaiVnfc.getRelationshipList() == null) {
+            aaiVnfc.setRelationshipList(new ArrayList<>());
+        }
         addSingletonRelation(aaiVnfc.getRelationshipList(), VserverManager.linkTo(vimId, tenantId, cbamVnfc.getComputeResource().getResourceId()));
         addSingletonRelation(aaiVnfc.getRelationshipList(), GenericVnfManager.linkTo(vnfId));
-        aaiRestApiProvider.put(logger, NETWORK, url, aaiVnfc, Void.class);
+        systemFunctions().blockingFirst(aaiRestApiProvider.getNetworkApi().createOrUpdateNetworkVnfcsVnfc(aaiVnfc.getVnfcName(), aaiVnfc));
     }
 }
\ No newline at end of file
index cec779a..3eba8b2 100644 (file)
@@ -20,7 +20,12 @@ import com.google.gson.JsonElement;
 import com.google.gson.JsonObject;
 import com.nokia.cbam.lcm.v32.model.AffectedVirtualStorage;
 import com.nokia.cbam.lcm.v32.model.AffectedVnfc;
-import org.onap.aai.domain.yang.v11.*;
+import io.reactivex.Observable;
+import java.util.ArrayList;
+import java.util.List;
+import org.onap.aai.model.Relationship;
+import org.onap.aai.model.Volume;
+import org.onap.aai.model.Vserver;
 import org.onap.vfc.nfvo.driver.vnfm.svnfm.nokia.onap.direct.AAIRestApiProvider;
 import org.onap.vfc.nfvo.driver.vnfm.svnfm.nokia.spring.Conditions;
 import org.onap.vfc.nfvo.driver.vnfm.svnfm.nokia.vnfm.CbamRestApiProvider;
@@ -30,12 +35,9 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.context.annotation.Conditional;
 import org.springframework.stereotype.Component;
 
-import java.util.List;
-
 import static com.google.common.collect.Iterables.find;
-import static java.lang.String.format;
-import static org.onap.vfc.nfvo.driver.vnfm.svnfm.nokia.onap.direct.AAIRestApiProvider.AAIService.CLOUD;
 import static org.onap.vfc.nfvo.driver.vnfm.svnfm.nokia.util.CbamUtils.childElement;
+import static org.onap.vfc.nfvo.driver.vnfm.svnfm.nokia.util.SystemFunctions.systemFunctions;
 import static org.onap.vfc.nfvo.driver.vnfm.svnfm.nokia.vnfm.LifecycleManager.getCloudOwner;
 import static org.onap.vfc.nfvo.driver.vnfm.svnfm.nokia.vnfm.LifecycleManager.getRegionName;
 
@@ -45,7 +47,7 @@ import static org.onap.vfc.nfvo.driver.vnfm.svnfm.nokia.vnfm.LifecycleManager.ge
 @Component
 @Conditional(value = Conditions.UseForDirect.class)
 class VserverManager extends AbstractManager {
-    private static Logger logger = org.slf4j.LoggerFactory.getLogger(VserverManager.class);
+    private static Logger logger = org.slf4j.LoggerFactory.getLogger(AbstractManager.class);
 
     @Autowired
     VserverManager(AAIRestApiProvider aaiRestApiProvider, CbamRestApiProvider cbamRestApiProvider, DriverProperties driverProperties) {
@@ -55,6 +57,7 @@ class VserverManager extends AbstractManager {
     static Relationship linkTo(String vimId, String tenantId, String serverProviderId) {
         Relationship relationship = new Relationship();
         relationship.setRelatedTo("vserver");
+        relationship.setRelationshipData(new ArrayList<>());
         relationship.getRelationshipData().add(buildRelationshipData("cloud-region.cloud-owner", getCloudOwner(vimId)));
         relationship.getRelationshipData().add(buildRelationshipData("cloud-region.cloud-region-id", getRegionName(vimId)));
         relationship.getRelationshipData().add(buildRelationshipData("tenant.tenant-id", tenantId));
@@ -72,47 +75,53 @@ class VserverManager extends AbstractManager {
     }
 
     void update(String vimId, String vnfId, AffectedVnfc cbamVnfc, List<AffectedVirtualStorage> affectedVirtualStorages, boolean inMaintenance) {
-        String url = buildUrl(vimId, cbamVnfc);
-        Vserver vserver = createOrGet(CLOUD, url, OBJECT_FACTORY.createVserver());
-        updateFields(vserver, cbamVnfc, vnfId, affectedVirtualStorages, url, inMaintenance);
+        Vserver vserver = createOrGet(getVserver(vimId, cbamVnfc), new Vserver());
+        updateFields(vimId, vserver, cbamVnfc, vnfId, affectedVirtualStorages, inMaintenance);
     }
 
-    void delete(String vimId, com.nokia.cbam.lcm.v32.model.AffectedVnfc deletedVnfc) {
-        aaiRestApiProvider.delete(logger, CLOUD, buildUrl(vimId, deletedVnfc));
+    void delete(String vimId, AffectedVnfc deletedVnfc) {
+        String tenantId = getTenantId(deletedVnfc);
+        String cloudOwner = getCloudOwner(vimId);
+        String regionName = getRegionName(vimId);
+        Vserver vserver = getVserver(vimId, deletedVnfc).blockingFirst();
+        aaiRestApiProvider.getCloudInfrastructureApi().deleteCloudInfrastructureCloudRegionsCloudRegionTenantsTenantVserversVserver(cloudOwner, regionName, tenantId, vserver.getVserverId(), vserver.getResourceVersion());
     }
 
-    private String buildUrl(String vimId, AffectedVnfc cbamVnfc) {
+    private Observable<Vserver> getVserver(String vimId, AffectedVnfc cbamVnfc) {
         String tenantId = getTenantId(cbamVnfc);
         String cloudOwner = getCloudOwner(vimId);
         String regionName = getRegionName(vimId);
-        return format("/cloud-regions/cloud-region/%s/%s/tenants/tenant/%s/vservers/vserver/%s", cloudOwner, regionName, tenantId, cbamVnfc.getComputeResource().getResourceId());
+        return aaiRestApiProvider.getCloudInfrastructureApi().getCloudInfrastructureCloudRegionsCloudRegionTenantsTenantVserversVserver(cloudOwner, regionName, tenantId, cbamVnfc.getComputeResource().getResourceId(), null, null, null, null, null, null, null, null, null);
     }
 
-    private void updateFields(Vserver server, AffectedVnfc cbamVnfc, String vnfId, List<AffectedVirtualStorage> affectedVirtualStorages, String url, boolean inMaintenance) {
+    private void updateFields(String vimId, Vserver server, AffectedVnfc cbamVnfc, String vnfId, List<AffectedVirtualStorage> affectedVirtualStorages, boolean inMaintenance) {
         server.setInMaint(inMaintenance);
         server.setIsClosedLoopDisabled(inMaintenance);
         JsonElement additionalData = new Gson().toJsonTree(cbamVnfc.getComputeResource().getAdditionalData());
         server.setVserverName(additionalData.getAsJsonObject().get("name").getAsString());
         server.setVserverId(cbamVnfc.getComputeResource().getResourceId());
         server.setProvStatus("active");
-        server.setRelationshipList(new RelationshipList());
+        server.setRelationshipList(new ArrayList<>());
         server.setVserverId(cbamVnfc.getComputeResource().getResourceId());
         server.setVserverSelflink(extractSelfLink(cbamVnfc.getComputeResource().getAdditionalData()));
         addSingletonRelation(server.getRelationshipList(), GenericVnfManager.linkTo(vnfId));
-        if (server.getVolumes() == null) {
-            server.setVolumes(new Volumes());
-        }
         if (cbamVnfc.getStorageResourceIds() != null) {
+            if (server.getVolumes() == null) {
+                server.setVolumes(new ArrayList<>());
+            }
             for (String virtualStorageId : cbamVnfc.getStorageResourceIds()) {
                 Volume volume = new Volume();
                 AffectedVirtualStorage affectedStorage = find(affectedVirtualStorages, storage -> virtualStorageId.equals(storage.getId()));
                 volume.setVolumeId(affectedStorage.getResource().getResourceId());
-                server.getVolumes().getVolume().add(volume);
+                server.getVolumes().add(volume);
             }
         } else {
-            server.setVolumes(OBJECT_FACTORY.createVolumes());
+            server.setVolumes(new ArrayList<>());
         }
-        aaiRestApiProvider.put(logger, CLOUD, url, server, Void.class);
+        String tenantId = getTenantId(cbamVnfc);
+        String cloudOwner = getCloudOwner(vimId);
+        String regionName = getRegionName(vimId);
+        systemFunctions().blockingFirst(aaiRestApiProvider.getCloudInfrastructureApi().createOrUpdateCloudInfrastructureCloudRegionsCloudRegionTenantsTenantVserversVserver(cloudOwner, regionName, tenantId, server.getVserverId(), server));
     }
 
     private String extractSelfLink(Object additionalData) {
index 0316961..01b7502 100644 (file)
@@ -23,6 +23,7 @@ import com.google.gson.JsonElement;
 import com.google.gson.JsonObject;
 import com.nokia.cbam.lcm.v32.model.VnfInfo;
 import com.nokia.cbam.lcm.v32.model.VnfcResourceInfo;
+import java.util.*;
 import org.onap.vfc.nfvo.driver.vnfm.svnfm.nokia.api.IGrantManager;
 import org.onap.vfc.nfvo.driver.vnfm.svnfm.nokia.spring.Conditions;
 import org.onap.vfc.nfvo.driver.vnfm.svnfm.nokia.vnfm.CatalogManager;
@@ -34,8 +35,6 @@ import org.springframework.context.annotation.Conditional;
 import org.springframework.stereotype.Component;
 import org.yaml.snakeyaml.Yaml;
 
-import java.util.*;
-
 import static com.nokia.cbam.lcm.v32.model.InstantiationState.INSTANTIATED;
 import static org.onap.vfc.nfvo.driver.vnfm.svnfm.nokia.util.CbamUtils.buildFatalFailure;
 import static org.onap.vfc.nfvo.driver.vnfm.svnfm.nokia.util.CbamUtils.child;
index 50f6221..65cef40 100644 (file)
@@ -19,6 +19,8 @@ import com.google.gson.Gson;
 import com.nokia.cbam.lcm.v32.model.OperationExecution;
 import com.nokia.cbam.lcm.v32.model.ScaleVnfRequest;
 import com.nokia.cbam.lcm.v32.model.VnfLifecycleChangeNotification;
+import java.util.ArrayList;
+import java.util.Optional;
 import org.onap.vfc.nfvo.driver.vnfm.svnfm.nokia.api.INotificationSender;
 import org.onap.vfc.nfvo.driver.vnfm.svnfm.nokia.spring.Conditions;
 import org.onap.vfc.nfvo.driver.vnfm.svnfm.nokia.vnfm.DriverProperties;
@@ -31,12 +33,10 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.context.annotation.Conditional;
 import org.springframework.stereotype.Component;
 
-import java.util.ArrayList;
-import java.util.Optional;
+import static java.util.Optional.of;
 
 import static com.google.common.collect.Iterables.tryFind;
 import static com.nokia.cbam.lcm.v32.model.ScaleDirection.IN;
-import static java.util.Optional.of;
 import static org.onap.vfc.nfvo.driver.vnfm.svnfm.nokia.util.CbamUtils.SEPARATOR;
 import static org.onap.vfc.nfvo.driver.vnfm.svnfm.nokia.util.CbamUtils.buildFatalFailure;
 import static org.onap.vfc.nfvo.driver.vnfm.svnfm.nokia.vnfm.JobManager.extractOnapJobId;
index 5a3e960..9ade5f4 100644 (file)
@@ -18,6 +18,9 @@ package org.onap.vfc.nfvo.driver.vnfm.svnfm.nokia.onap.vfc;
 import com.google.common.io.ByteStreams;
 import com.google.gson.JsonElement;
 import com.google.gson.JsonParser;
+import java.io.IOException;
+import java.io.InputStream;
+import java.net.URL;
 import org.apache.http.HttpEntity;
 import org.apache.http.HttpHeaders;
 import org.apache.http.client.methods.CloseableHttpResponse;
@@ -33,10 +36,6 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.context.annotation.Conditional;
 import org.springframework.stereotype.Component;
 
-import java.io.IOException;
-import java.io.InputStream;
-import java.net.URL;
-
 import static org.onap.vfc.nfvo.driver.vnfm.svnfm.nokia.util.CbamUtils.buildFatalFailure;
 import static org.onap.vfc.nfvo.driver.vnfm.svnfm.nokia.util.SystemFunctions.systemFunctions;
 import static org.slf4j.LoggerFactory.getLogger;
index 83b9351..07cd803 100644 (file)
 
 package org.onap.vfc.nfvo.driver.vnfm.svnfm.nokia.packagetransformer;
 
-import com.fasterxml.jackson.databind.JsonNode;
-import com.fasterxml.jackson.databind.ObjectMapper;
-import com.fasterxml.jackson.dataformat.yaml.YAMLMapper;
 import com.google.gson.*;
-import org.yaml.snakeyaml.Yaml;
-
 import java.io.IOException;
+import java.io.StringReader;
+import org.yaml.snakeyaml.Yaml;
 
 import static org.onap.vfc.nfvo.driver.vnfm.svnfm.nokia.util.CbamUtils.child;
 
@@ -53,8 +50,7 @@ public class CbamVnfdBuilder {
         if (interfaces.has("Healable")) {
             addOperationParams(addChild(child(interfaces, "Healable"), "heal"));
         }
-        JsonNode jsonNodeTree = new ObjectMapper().readTree(new GsonBuilder().setPrettyPrinting().create().toJson(root));
-        return new YAMLMapper().writeValueAsString(jsonNodeTree);
+        return new Yaml().dump(new Yaml().load(new StringReader(new Gson().toJson(root))));
     }
 
     private void addOperationParams(JsonObject operation) {
index 701b42e..dcac5cd 100644 (file)
@@ -21,13 +21,12 @@ import com.google.gson.Gson;
 import com.google.gson.JsonArray;
 import com.google.gson.JsonElement;
 import com.google.gson.JsonObject;
-import org.slf4j.Logger;
-import org.yaml.snakeyaml.Yaml;
-
 import java.util.Map;
 import java.util.NoSuchElementException;
 import java.util.Set;
 import java.util.regex.Pattern;
+import org.slf4j.Logger;
+import org.yaml.snakeyaml.Yaml;
 
 import static org.onap.vfc.nfvo.driver.vnfm.svnfm.nokia.util.CbamUtils.child;
 import static org.onap.vfc.nfvo.driver.vnfm.svnfm.nokia.util.CbamUtils.childElement;
index 790ac05..7ae05f5 100644 (file)
 package org.onap.vfc.nfvo.driver.vnfm.svnfm.nokia.restapi;
 
 import com.google.common.io.ByteStreams;
+import java.io.ByteArrayInputStream;
+import java.io.IOException;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import javax.servlet.http.Part;
 import org.onap.vfc.nfvo.driver.vnfm.svnfm.nokia.packagetransformer.OnapVnfPackageBuilder;
 import org.slf4j.Logger;
 import org.springframework.stereotype.Controller;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.ResponseBody;
 
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-import javax.servlet.http.Part;
-import java.io.ByteArrayInputStream;
-import java.io.IOException;
-
-import static org.apache.http.entity.ContentType.APPLICATION_OCTET_STREAM;
 import static org.onap.vfc.nfvo.driver.vnfm.svnfm.nokia.util.CbamUtils.buildFatalFailure;
 import static org.onap.vfc.nfvo.driver.vnfm.svnfm.nokia.util.SystemFunctions.systemFunctions;
 import static org.onap.vfc.nfvo.driver.vnfm.svnfm.nokia.vnfm.DriverProperties.BASE_URL;
 import static org.slf4j.LoggerFactory.getLogger;
 import static org.springframework.http.HttpHeaders.*;
 import static org.springframework.http.HttpStatus.OK;
+import static org.springframework.http.MediaType.APPLICATION_OCTET_STREAM;
 import static org.springframework.http.MediaType.TEXT_HTML_VALUE;
 import static org.springframework.web.bind.annotation.RequestMethod.GET;
 import static org.springframework.web.bind.annotation.RequestMethod.POST;
@@ -71,7 +70,7 @@ public class ConverterApi {
         } catch (Exception e) {
             throw buildFatalFailure(logger, "Unable to convert VNF package", e);
         }
-        httpResponse.addHeader(CONTENT_TYPE, APPLICATION_OCTET_STREAM.getMimeType());
+        httpResponse.addHeader(CONTENT_TYPE, APPLICATION_OCTET_STREAM.toString());
         httpResponse.setStatus(OK.value());
         httpResponse.addHeader(CONTENT_LENGTH, Integer.toString(convertedPackage.length));
         httpResponse.addHeader(CONTENT_DISPOSITION, "attachment; filename=\"" + "core.csar" + "\"");
index be78aa0..c340520 100644 (file)
@@ -15,6 +15,7 @@
  */
 package org.onap.vfc.nfvo.driver.vnfm.svnfm.nokia.restapi;
 
+import javax.servlet.http.HttpServletResponse;
 import org.onap.vfc.nfvo.driver.vnfm.svnfm.nokia.vnfm.JobManager;
 import org.onap.vfc.nfvo.driver.vnfm.svnfm.nokia.vnfm.LifecycleManager;
 import org.onap.vnfmdriver.model.*;
@@ -26,10 +27,9 @@ import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.ResponseBody;
 
-import javax.servlet.http.HttpServletResponse;
-
+import static javax.servlet.http.HttpServletResponse.SC_CREATED;
 import static java.util.Optional.empty;
-import static org.apache.http.HttpStatus.SC_CREATED;
+
 import static org.onap.vfc.nfvo.driver.vnfm.svnfm.nokia.vnfm.DriverProperties.BASE_URL;
 import static org.slf4j.LoggerFactory.getLogger;
 import static org.springframework.http.MediaType.APPLICATION_JSON_VALUE;
index df871b0..d11226b 100644 (file)
 package org.onap.vfc.nfvo.driver.vnfm.svnfm.nokia.restapi;
 
 import com.nokia.cbam.lcm.v32.model.VnfLifecycleChangeNotification;
+import javax.servlet.http.HttpServletResponse;
 import org.onap.vfc.nfvo.driver.vnfm.svnfm.nokia.vnfm.notification.LifecycleChangeNotificationManager;
 import org.slf4j.Logger;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Controller;
 import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.ResponseBody;
 import org.springframework.web.bind.annotation.ResponseStatus;
 
-import javax.servlet.http.HttpServletResponse;
-
 import static org.onap.vfc.nfvo.driver.vnfm.svnfm.nokia.vnfm.DriverProperties.BASE_URL;
 import static org.onap.vfc.nfvo.driver.vnfm.svnfm.nokia.vnfm.DriverProperties.LCN_URL;
 import static org.slf4j.LoggerFactory.getLogger;
@@ -62,13 +60,11 @@ public class LcnApi {
     /**
      * Handle the LCN sent by CBAM
      *
-     * @param lcn          the LCN notification
-     * @param httpResponse the HTTP response
+     * @param lcn the LCN notification
      */
     @RequestMapping(value = LCN_URL, method = POST, consumes = APPLICATION_JSON_VALUE)
-    @ResponseBody
     @ResponseStatus(code = NO_CONTENT)
-    public void handleLcn(@RequestBody VnfLifecycleChangeNotification lcn, HttpServletResponse httpResponse) {
+    public void handleLcn(@RequestBody VnfLifecycleChangeNotification lcn) {
         logger.info("REST: handle LCN");
         lcnManager.handleLcn(lcn);
     }
index 15c8dc3..51423ae 100644 (file)
@@ -15,6 +15,8 @@
  */
 package org.onap.vfc.nfvo.driver.vnfm.svnfm.nokia.restapi;
 
+import java.io.IOException;
+import javax.servlet.http.HttpServletResponse;
 import org.onap.vfc.nfvo.driver.vnfm.svnfm.nokia.onap.core.SelfRegistrationManager;
 import org.slf4j.Logger;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -22,9 +24,6 @@ import org.springframework.stereotype.Controller;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.ResponseBody;
 
-import javax.servlet.http.HttpServletResponse;
-import java.io.IOException;
-
 import static org.onap.vfc.nfvo.driver.vnfm.svnfm.nokia.vnfm.DriverProperties.BASE_URL;
 import static org.slf4j.LoggerFactory.getLogger;
 import static org.springframework.http.HttpHeaders.CONTENT_LENGTH;
index defa340..d27f4be 100644 (file)
 package org.onap.vfc.nfvo.driver.vnfm.svnfm.nokia.spring;
 
 import com.google.common.collect.Sets;
+import java.util.HashSet;
+import java.util.Set;
 import org.springframework.context.annotation.Condition;
 import org.springframework.context.annotation.ConditionContext;
 import org.springframework.core.type.AnnotatedTypeMetadata;
 
-import java.util.HashSet;
-import java.util.Set;
-
 import static com.google.common.collect.Sets.newHashSet;
 
 /**
index f9b2e39..7ab14e8 100644 (file)
  */
 package org.onap.vfc.nfvo.driver.vnfm.svnfm.nokia.spring;
 
+import com.google.gson.Gson;
+import com.nokia.cbam.lcn.v32.JSON;
+import java.util.ArrayList;
+import java.util.Collection;
 import org.springframework.boot.autoconfigure.http.HttpMessageConverters;
 import org.springframework.context.annotation.Bean;
 import org.springframework.context.annotation.Configuration;
 import org.springframework.http.converter.HttpMessageConverter;
 import org.springframework.http.converter.json.GsonHttpMessageConverter;
 
-import java.util.ArrayList;
-import java.util.Collection;
-
 /**
  * Responsible for configuring the raw REST input conversion
  */
@@ -40,7 +41,8 @@ public class RealConfig {
     @Bean
     public HttpMessageConverters customConverters() {
         Collection<HttpMessageConverter<?>> messageConverters = new ArrayList<>();
-        GsonHttpMessageConverter gsonHttpMessageConverter = new GsonHttpMessageConverter();
+        Gson gson = new JSON().getGson();
+        GsonHttpMessageConverter gsonHttpMessageConverter = new GsonHttpMessageConverter(gson);
         messageConverters.add(gsonHttpMessageConverter);
         return new HttpMessageConverters(true, messageConverters);
     }
index 643d028..7ff44ea 100644 (file)
@@ -16,8 +16,6 @@
 
 package org.onap.vfc.nfvo.driver.vnfm.svnfm.nokia.util;
 
-import org.apache.commons.codec.binary.Base64;
-
 import java.io.ByteArrayInputStream;
 import java.io.InputStream;
 import java.security.KeyFactory;
@@ -31,9 +29,11 @@ import java.util.Collection;
 import java.util.HashSet;
 import java.util.Optional;
 import java.util.Set;
+import org.apache.commons.codec.binary.Base64;
 
 import static java.util.Optional.empty;
 import static java.util.Optional.of;
+
 import static org.onap.vfc.nfvo.driver.vnfm.svnfm.nokia.util.CbamUtils.buildFatalFailure;
 import static org.slf4j.LoggerFactory.getLogger;
 
index 0bb6303..c7fac86 100644 (file)
 package org.onap.vfc.nfvo.driver.vnfm.svnfm.nokia.util;
 
 import com.google.common.io.ByteStreams;
-import org.apache.http.impl.client.CloseableHttpClient;
-import org.apache.http.impl.client.HttpClients;
-
+import io.reactivex.Observable;
 import java.io.InputStream;
 import java.io.PrintStream;
+import java.util.NoSuchElementException;
+import org.apache.http.impl.client.CloseableHttpClient;
+import org.apache.http.impl.client.HttpClients;
 
 /**
  * Wrapper class for static method calls to core or core libraries.
@@ -162,4 +163,17 @@ public class SystemFunctions {
         return HttpClients.createDefault();
     }
 
+    /**
+     * Execute blocking first
+     *
+     * @param observable the observable
+     */
+    public void blockingFirst(Observable<Void> observable) {
+        try {
+            observable.blockingFirst();
+        } catch (NoSuchElementException e) {
+            //swallow void returns null :)
+        }
+    }
+
 }
\ No newline at end of file
index a7cabd5..5b99bad 100644 (file)
@@ -19,11 +19,6 @@ package org.onap.vfc.nfvo.driver.vnfm.svnfm.nokia.vnfm;
 import com.google.common.io.ByteStreams;
 import com.nokia.cbam.catalog.v1.api.DefaultApi;
 import com.nokia.cbam.catalog.v1.model.CatalogAdapterVnfpackage;
-import org.onap.vfc.nfvo.driver.vnfm.svnfm.nokia.api.IPackageProvider;
-import org.slf4j.Logger;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Component;
-
 import java.io.ByteArrayInputStream;
 import java.io.ByteArrayOutputStream;
 import java.io.IOException;
@@ -33,14 +28,18 @@ import java.util.NoSuchElementException;
 import java.util.Set;
 import java.util.zip.ZipEntry;
 import java.util.zip.ZipInputStream;
+import org.onap.vfc.nfvo.driver.vnfm.svnfm.nokia.api.IPackageProvider;
+import org.slf4j.Logger;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
 
 import static com.google.common.base.Splitter.on;
 import static com.google.common.collect.Iterables.filter;
-import static javax.ws.rs.core.MediaType.APPLICATION_OCTET_STREAM;
 import static okhttp3.MediaType.parse;
 import static okhttp3.RequestBody.create;
 import static org.onap.vfc.nfvo.driver.vnfm.svnfm.nokia.util.CbamUtils.buildFatalFailure;
 import static org.slf4j.LoggerFactory.getLogger;
+import static org.springframework.http.MediaType.APPLICATION_OCTET_STREAM;
 
 
 /**
@@ -116,7 +115,7 @@ public class CatalogManager {
         if (!isPackageReplicated(cbamVnfdId, cbamCatalogApi)) {
             try {
                 ByteArrayOutputStream cbamPackage = getFileInZip(new ByteArrayInputStream(packageProvider.getPackage(csarId)), CBAM_PACKAGE_NAME_IN_ZIP);
-                return cbamCatalogApi.create(create(parse(APPLICATION_OCTET_STREAM), cbamPackage.toByteArray())).execute().body();
+                return cbamCatalogApi.create(create(parse(APPLICATION_OCTET_STREAM.toString()), cbamPackage.toByteArray())).execute().body();
             } catch (Exception e) {
                 logger.debug("Probably concurrent package uploads", e);
                 //retest if the VNF package exists in CBAM. It might happen that an other operation
index 6c70c26..3a33436 100644 (file)
  */
 package org.onap.vfc.nfvo.driver.vnfm.svnfm.nokia.vnfm;
 
-import com.google.common.base.Joiner;
-import com.google.common.io.BaseEncoding;
-import org.apache.http.conn.ssl.DefaultHostnameVerifier;
-import org.onap.vfc.nfvo.driver.vnfm.svnfm.nokia.util.StoreLoader;
-import org.slf4j.Logger;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Component;
-import org.springframework.util.StringUtils;
-
-import javax.net.ssl.*;
-import java.nio.charset.StandardCharsets;
-import java.security.KeyStore;
-import java.security.SecureRandom;
-import java.security.cert.CertificateException;
-import java.security.cert.X509Certificate;
-import java.util.Set;
-
-import static java.util.UUID.randomUUID;
-import static org.onap.vfc.nfvo.driver.vnfm.svnfm.nokia.util.CbamUtils.buildFatalFailure;
-import static org.slf4j.LoggerFactory.getLogger;
 
 /**
- * Responsible for providing a token to access CBAM APIs
+ * Responsible for providing SSL factories for AAI
  */
 @Component
-public class CbamSecurityProvider {
-    private static Logger logger = getLogger(CbamSecurityProvider.class);
+public class CbamSecurityProvider extends GenericSecurityProvider {
     @Value("${trustedCertificates}")
     private String trustedCertificates;
     @Value("${skipCertificateVerification}")
@@ -49,69 +30,18 @@ public class CbamSecurityProvider {
     @Value("${skipHostnameVerification}")
     private boolean skipHostnameVerification;
 
-    protected HostnameVerifier buildHostnameVerifier() {
-        if (skipHostnameVerification) {
-            return (hostname, session) -> true;
-        } else {
-            return new DefaultHostnameVerifier();
-        }
+    @Override
+    protected boolean skipHostnameVerification() {
+        return skipHostnameVerification;
     }
 
-    protected SSLSocketFactory buildSSLSocketFactory() {
-        try {
-            TrustManager[] trustManagers = new X509TrustManager[]{buildTrustManager()};
-            SSLContext sslContext = SSLContext.getInstance("TLS");
-            sslContext.init(null, trustManagers, new SecureRandom());
-            return sslContext.getSocketFactory();
-        } catch (Exception e) {
-            throw buildFatalFailure(logger, "Unable to create SSL socket factory", e);
-        }
+    @Override
+    protected boolean skipCertificateVerification() {
+        return skipCertificateVerification;
     }
 
-    protected X509TrustManager buildTrustManager() {
-        if (skipCertificateVerification) {
-            return new AllTrustedTrustManager();
-        } else {
-            if (StringUtils.isEmpty(trustedCertificates)) {
-                throw buildFatalFailure(logger, "If the skipCertificateVerification is set to false (default) the trustedCertificates can not be empty");
-            }
-            Set<String> trustedPems;
-            String content;
-            try {
-                content = new String(BaseEncoding.base64().decode(trustedCertificates), StandardCharsets.UTF_8);
-                trustedPems = StoreLoader.getCertifacates(content);
-            } catch (Exception e) {
-                throw buildFatalFailure(logger, "The trustedCertificates must be a base64 encoded collection of PEM certificates", e);
-            }
-            if (trustedPems.isEmpty()) {
-                throw buildFatalFailure(logger, "No certificate can be extracted from " + content);
-            }
-            try {
-                KeyStore keyStore = StoreLoader.loadStore(Joiner.on("\n").join(trustedPems), randomUUID().toString(), randomUUID().toString());
-                TrustManagerFactory trustManagerFactory = TrustManagerFactory.getInstance(TrustManagerFactory.getDefaultAlgorithm());
-                trustManagerFactory.init(keyStore);
-                return (X509TrustManager) trustManagerFactory.getTrustManagers()[0];
-            } catch (Exception e) {
-                throw buildFatalFailure(logger, "Unable to create keystore", e);
-            }
-        }
+    @Override
+    protected String trustedCertificates() {
+        return trustedCertificates;
     }
-
-    private static class AllTrustedTrustManager implements X509TrustManager {
-        @Override
-        public void checkClientTrusted(X509Certificate[] chain, String authType) throws CertificateException {
-            //no need to check certificates if everything is trusted
-        }
-
-        @Override
-        public void checkServerTrusted(X509Certificate[] chain, String authType) throws CertificateException {
-            //no need to check certificates if everything is trusted
-        }
-
-        @Override
-        public X509Certificate[] getAcceptedIssuers() {
-            return new X509Certificate[0];
-        }
-    }
-
 }
index 837a25e..df21e52 100644 (file)
@@ -18,6 +18,9 @@ package org.onap.vfc.nfvo.driver.vnfm.svnfm.nokia.vnfm;
 import com.google.common.annotations.VisibleForTesting;
 import com.google.gson.Gson;
 import com.google.gson.annotations.SerializedName;
+import java.io.IOException;
+import javax.net.ssl.HostnameVerifier;
+import javax.net.ssl.SSLSocketFactory;
 import okhttp3.*;
 import org.onap.vfc.nfvo.driver.vnfm.svnfm.nokia.api.VnfmInfoProvider;
 import org.onap.vfc.nfvo.driver.vnfm.svnfm.nokia.util.SystemFunctions;
@@ -27,10 +30,6 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Component;
 
-import javax.net.ssl.HostnameVerifier;
-import javax.net.ssl.SSLSocketFactory;
-import java.io.IOException;
-
 import static org.onap.vfc.nfvo.driver.vnfm.svnfm.nokia.util.CbamUtils.buildFatalFailure;
 import static org.slf4j.LoggerFactory.getLogger;
 import static org.springframework.http.HttpHeaders.CONTENT_TYPE;
index d510ba2..b15d285 100644 (file)
 
 package org.onap.vfc.nfvo.driver.vnfm.svnfm.nokia.vnfm;
 
+import java.util.Objects;
 import org.onap.vfc.nfvo.driver.vnfm.svnfm.nokia.onap.core.SelfRegistrationManager;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Component;
 
-import java.util.Objects;
-
 /**
  * Wraps the properties supplied to the servlet
  */
diff --git a/nokiav2/driver/src/main/java/org/onap/vfc/nfvo/driver/vnfm/svnfm/nokia/vnfm/GenericSecurityProvider.java b/nokiav2/driver/src/main/java/org/onap/vfc/nfvo/driver/vnfm/svnfm/nokia/vnfm/GenericSecurityProvider.java
new file mode 100644 (file)
index 0000000..55440f5
--- /dev/null
@@ -0,0 +1,111 @@
+/*
+ * Copyright 2016-2017, Nokia Corporation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.onap.vfc.nfvo.driver.vnfm.svnfm.nokia.vnfm;
+
+import com.google.common.base.Joiner;
+import com.google.common.io.BaseEncoding;
+import java.nio.charset.StandardCharsets;
+import java.security.KeyStore;
+import java.security.SecureRandom;
+import java.security.cert.CertificateException;
+import java.security.cert.X509Certificate;
+import java.util.Set;
+import javax.net.ssl.*;
+import org.apache.http.conn.ssl.DefaultHostnameVerifier;
+import org.onap.vfc.nfvo.driver.vnfm.svnfm.nokia.util.StoreLoader;
+import org.slf4j.Logger;
+import org.springframework.util.StringUtils;
+
+import static java.util.UUID.randomUUID;
+
+import static org.onap.vfc.nfvo.driver.vnfm.svnfm.nokia.util.CbamUtils.buildFatalFailure;
+import static org.slf4j.LoggerFactory.getLogger;
+
+public abstract class GenericSecurityProvider {
+    private static Logger logger = getLogger(GenericSecurityProvider.class);
+
+    protected abstract boolean skipHostnameVerification();
+
+    protected abstract boolean skipCertificateVerification();
+
+    protected abstract String trustedCertificates();
+
+    public HostnameVerifier buildHostnameVerifier() {
+        if (skipHostnameVerification()) {
+            return (hostname, session) -> true;
+        } else {
+            return new DefaultHostnameVerifier();
+        }
+    }
+
+    public SSLSocketFactory buildSSLSocketFactory() {
+        try {
+            TrustManager[] trustManagers = new X509TrustManager[]{buildTrustManager()};
+            SSLContext sslContext = SSLContext.getInstance("TLS");
+            sslContext.init(null, trustManagers, new SecureRandom());
+            return sslContext.getSocketFactory();
+        } catch (Exception e) {
+            throw buildFatalFailure(logger, "Unable to create SSL socket factory", e);
+        }
+    }
+
+    public X509TrustManager buildTrustManager() {
+        if (skipCertificateVerification()) {
+            return new AllTrustedTrustManager();
+        } else {
+            if (StringUtils.isEmpty(trustedCertificates())) {
+                throw buildFatalFailure(logger, "If the skipCertificateVerification is set to false (default) the trustedCertificates can not be empty");
+            }
+            Set<String> trustedPems;
+            String content;
+            try {
+                content = new String(BaseEncoding.base64().decode(trustedCertificates()), StandardCharsets.UTF_8);
+                trustedPems = StoreLoader.getCertifacates(content);
+            } catch (Exception e) {
+                throw buildFatalFailure(logger, "The trustedCertificates must be a base64 encoded collection of PEM certificates", e);
+            }
+            if (trustedPems.isEmpty()) {
+                throw buildFatalFailure(logger, "No certificate can be extracted from " + content);
+            }
+            try {
+                KeyStore keyStore = StoreLoader.loadStore(Joiner.on("\n").join(trustedPems), randomUUID().toString(), randomUUID().toString());
+                TrustManagerFactory trustManagerFactory = TrustManagerFactory.getInstance(TrustManagerFactory.getDefaultAlgorithm());
+                trustManagerFactory.init(keyStore);
+                return (X509TrustManager) trustManagerFactory.getTrustManagers()[0];
+            } catch (Exception e) {
+                throw buildFatalFailure(logger, "Unable to create keystore", e);
+            }
+        }
+    }
+
+    private static class AllTrustedTrustManager implements X509TrustManager {
+        @Override
+        public void checkClientTrusted(X509Certificate[] chain, String authType) throws CertificateException {
+            //no need to check certificates if everything is trusted
+        }
+
+        @Override
+        public void checkServerTrusted(X509Certificate[] chain, String authType) throws CertificateException {
+            //no need to check certificates if everything is trusted
+        }
+
+        @Override
+        public X509Certificate[] getAcceptedIssuers() {
+            return new X509Certificate[0];
+        }
+    }
+}
index 0d078d0..277be9c 100644 (file)
@@ -24,7 +24,8 @@ import com.nokia.cbam.lcm.v32.api.VnfsApi;
 import com.nokia.cbam.lcm.v32.model.OperationExecution;
 import com.nokia.cbam.lcm.v32.model.OperationType;
 import com.nokia.cbam.lcm.v32.model.VnfInfo;
-import org.apache.http.HttpStatus;
+import java.util.*;
+import javax.servlet.http.HttpServletResponse;
 import org.onap.vfc.nfvo.driver.vnfm.svnfm.nokia.onap.core.SelfRegistrationManager;
 import org.onap.vnfmdriver.model.JobDetailInfo;
 import org.onap.vnfmdriver.model.JobDetailInfoResponseDescriptor;
@@ -34,8 +35,9 @@ import org.slf4j.Logger;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
 
-import javax.servlet.http.HttpServletResponse;
-import java.util.*;
+import static javax.servlet.http.HttpServletResponse.SC_SERVICE_UNAVAILABLE;
+import static java.util.Optional.empty;
+import static java.util.Optional.of;
 
 import static com.google.common.base.Splitter.on;
 import static com.google.common.collect.Iterables.find;
@@ -43,8 +45,6 @@ import static com.google.common.collect.Iterables.tryFind;
 import static com.google.common.collect.Lists.newArrayList;
 import static com.nokia.cbam.lcm.v32.model.OperationStatus.FAILED;
 import static com.nokia.cbam.lcm.v32.model.OperationStatus.STARTED;
-import static java.util.Optional.empty;
-import static java.util.Optional.of;
 import static org.onap.vfc.nfvo.driver.vnfm.svnfm.nokia.util.CbamUtils.SEPARATOR;
 import static org.onap.vfc.nfvo.driver.vnfm.svnfm.nokia.util.CbamUtils.buildFatalFailure;
 import static org.onap.vfc.nfvo.driver.vnfm.svnfm.nokia.util.SystemFunctions.systemFunctions;
@@ -109,11 +109,11 @@ public class JobManager {
         String jobId = vnfId + SEPARATOR + UUID.randomUUID().toString();
         synchronized (this) {
             if (preparingForShutDown) {
-                response.setStatus(HttpStatus.SC_SERVICE_UNAVAILABLE);
+                response.setStatus(SC_SERVICE_UNAVAILABLE);
                 throw buildFatalFailure(logger, "The service is preparing to shut down");
             }
             if (!selfRegistrationManager.isReady()) {
-                response.setStatus(HttpStatus.SC_SERVICE_UNAVAILABLE);
+                response.setStatus(SC_SERVICE_UNAVAILABLE);
                 throw buildFatalFailure(logger, "The service is not yet ready");
             }
         }
@@ -285,7 +285,7 @@ public class JobManager {
     }
 
     private boolean isCurrentOperationTriggeredByJob(String jobId, OperationExecutionsApi cbamOperationExecutionApi, OperationExecution operationExecution) {
-        if(OperationType.MODIFY_INFO.equals(operationExecution.getOperationType())){
+        if (OperationType.MODIFY_INFO.equals(operationExecution.getOperationType())) {
             //the modify info is never triggered by an external job
             return false;
         }
index 36df12a..1b813a3 100644 (file)
@@ -23,6 +23,10 @@ import com.google.gson.JsonObject;
 import com.nokia.cbam.catalog.v1.model.CatalogAdapterVnfpackage;
 import com.nokia.cbam.lcm.v32.model.*;
 import com.nokia.cbam.lcm.v32.model.ScaleDirection;
+import java.util.*;
+import java.util.concurrent.ExecutorService;
+import java.util.concurrent.Executors;
+import javax.servlet.http.HttpServletResponse;
 import org.onap.vfc.nfvo.driver.vnfm.svnfm.nokia.api.IGrantManager;
 import org.onap.vfc.nfvo.driver.vnfm.svnfm.nokia.api.VimInfoProvider;
 import org.onap.vfc.nfvo.driver.vnfm.svnfm.nokia.util.StoreLoader;
@@ -36,10 +40,8 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
 import org.yaml.snakeyaml.Yaml;
 
-import javax.servlet.http.HttpServletResponse;
-import java.util.*;
-import java.util.concurrent.ExecutorService;
-import java.util.concurrent.Executors;
+import static java.lang.Integer.parseInt;
+import static java.nio.charset.StandardCharsets.UTF_8;
 
 import static com.google.common.base.Splitter.on;
 import static com.google.common.collect.Iterables.find;
@@ -49,8 +51,6 @@ import static com.nokia.cbam.lcm.v32.model.InstantiationState.INSTANTIATED;
 import static com.nokia.cbam.lcm.v32.model.OperationStatus.FINISHED;
 import static com.nokia.cbam.lcm.v32.model.OperationType.INSTANTIATE;
 import static com.nokia.cbam.lcm.v32.model.VimInfo.VimInfoTypeEnum.*;
-import static java.lang.Integer.parseInt;
-import static java.nio.charset.StandardCharsets.UTF_8;
 import static org.onap.vfc.nfvo.driver.vnfm.svnfm.nokia.util.CbamUtils.*;
 import static org.onap.vfc.nfvo.driver.vnfm.svnfm.nokia.util.SystemFunctions.systemFunctions;
 import static org.onap.vfc.nfvo.driver.vnfm.svnfm.nokia.vnfm.CbamRestApiProvider.NOKIA_LCM_API_VERSION;
@@ -437,11 +437,12 @@ public class LifecycleManager {
                     cbamRequest.setTerminationType(TerminationType.FORCEFUL);
                 }
             }
+            cbamRequest.setAdditionalParams(new Gson().toJsonTree(jobInfo).getAsJsonObject());
             com.nokia.cbam.lcm.v32.model.VnfInfo vnf = cbamRestApiProvider.getCbamLcmApi(vnfmId).vnfsVnfInstanceIdGet(vnfId, NOKIA_LCM_API_VERSION).blockingFirst();
             if (vnf.getInstantiationState() == INSTANTIATED) {
                 terminateVnf(vnfmId, vnfId, jobInfo, cbamRequest, vnf);
             } else {
-                cbamRestApiProvider.getCbamLcmApi(vnfmId).vnfsVnfInstanceIdDelete(vnfId, NOKIA_LCM_API_VERSION);
+                systemFunctions().blockingFirst(cbamRestApiProvider.getCbamLcmApi(vnfmId).vnfsVnfInstanceIdDelete(vnfId, NOKIA_LCM_API_VERSION));
             }
         });
     }
@@ -454,7 +455,7 @@ public class LifecycleManager {
         if (finishedOperation.getStatus() == FINISHED) {
             notificationManager.waitForTerminationToBeProcessed(finishedOperation.getId());
             logger.info("Deleting VNF with {}", vnfId);
-            cbamRestApiProvider.getCbamLcmApi(vnfmId).vnfsVnfInstanceIdDelete(vnfId, NOKIA_LCM_API_VERSION);
+            systemFunctions().blockingFirst(cbamRestApiProvider.getCbamLcmApi(vnfmId).vnfsVnfInstanceIdDelete(vnfId, NOKIA_LCM_API_VERSION));
             logger.info("VNF with {} has been deleted", vnfId);
 
         } else {
index d6fbd33..1485ef5 100644 (file)
@@ -23,6 +23,9 @@ import com.google.gson.JsonObject;
 import com.nokia.cbam.lcm.v32.api.OperationExecutionsApi;
 import com.nokia.cbam.lcm.v32.api.VnfsApi;
 import com.nokia.cbam.lcm.v32.model.*;
+import java.util.List;
+import java.util.Optional;
+import java.util.Set;
 import org.onap.vfc.nfvo.driver.vnfm.svnfm.nokia.api.INotificationSender;
 import org.onap.vfc.nfvo.driver.vnfm.svnfm.nokia.util.SystemFunctions;
 import org.onap.vfc.nfvo.driver.vnfm.svnfm.nokia.vnfm.CbamRestApiProvider;
@@ -33,17 +36,14 @@ import org.slf4j.Logger;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
 
-import java.util.List;
-import java.util.Optional;
-import java.util.Set;
+import static java.util.Optional.empty;
+import static java.util.Optional.of;
 
 import static com.google.common.collect.Iterables.find;
 import static com.google.common.collect.Iterables.tryFind;
 import static com.google.common.collect.Sets.newConcurrentHashSet;
 import static com.google.common.collect.Sets.newHashSet;
 import static com.nokia.cbam.lcm.v32.model.OperationType.INSTANTIATE;
-import static java.util.Optional.empty;
-import static java.util.Optional.of;
 import static org.onap.vfc.nfvo.driver.vnfm.svnfm.nokia.util.CbamUtils.buildFatalFailure;
 import static org.onap.vfc.nfvo.driver.vnfm.svnfm.nokia.util.CbamUtils.childElement;
 import static org.onap.vfc.nfvo.driver.vnfm.svnfm.nokia.vnfm.CbamRestApiProvider.NOKIA_LCM_API_VERSION;
@@ -192,6 +192,10 @@ public class LifecycleChangeNotificationManager implements ILifecycleChangeNotif
     }
 
     private Optional<ReportedAffectedConnectionPoints> buildAffectedCps(OperationExecution operationExecution) {
+        if (!isTerminal(operationExecution.getStatus())) {
+            //connection points can only be calculated after the operation has finished
+            return Optional.empty();
+        }
         if (operationExecution.getOperationType() == OperationType.TERMINATE) {
             String terminationType = childElement(new Gson().toJsonTree(operationExecution.getOperationParams()).getAsJsonObject(), "terminationType").getAsString();
             if (TerminationType.FORCEFUL.name().equals(terminationType)) {
diff --git a/nokiav2/driver/src/test/java/okhttp3/OakExtractor.java b/nokiav2/driver/src/test/java/okhttp3/OakExtractor.java
deleted file mode 100644 (file)
index ffeb88f..0000000
+++ /dev/null
@@ -1,28 +0,0 @@
-/*
- * Copyright 2016-2017, Nokia Corporation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package okhttp3;
-
-import javax.net.ssl.HostnameVerifier;
-
-public class OakExtractor {
-    /**
-     * Cheat access control durting tests
-     */
-    public static HostnameVerifier extract(OkHttpClient.Builder okBuilder) {
-        return okBuilder.hostnameVerifier;
-    }
-}
index f0b2476..640097f 100644 (file)
@@ -41,8 +41,6 @@ import org.onap.vfc.nfvo.driver.vnfm.svnfm.nokia.vnfm.notification.TestProcessed
 import org.onap.vfc.nfvo.driver.vnfm.svnfm.nokia.vnfm.notification.TestReportedAffectedConnectionPoints;
 import org.onap.vfc.nfvo.driver.vnfm.svnfm.nokia.vnfm.notification.TestReportedAffectedCp;
 
-//import org.onap.vfc.nfvo.driver.vnfm.svnfm.nokia.onap.core.TestCbamRestApiProvider;
-
 @RunWith(Suite.class)
 @Suite.SuiteClasses({
         TestGenericExternalSystemInfoProvider.class,
index 78939fd..2bd0820 100644 (file)
@@ -18,6 +18,7 @@ package org.onap.vfc.nfvo.driver.vnfm.svnfm.nokia.ct;
 
 import com.google.gson.JsonObject;
 import com.nokia.cbam.lcm.v32.model.*;
+import java.util.ArrayList;
 import org.junit.Test;
 import org.junit.runner.RunWith;
 import org.onap.vfc.nfvo.driver.vnfm.svnfm.nokia.NokiaSvnfmApplication;
@@ -32,8 +33,6 @@ import org.springframework.boot.test.context.SpringBootTest;
 import org.springframework.test.context.ActiveProfiles;
 import org.springframework.test.context.junit4.SpringRunner;
 
-import java.util.ArrayList;
-
 import static java.util.Optional.of;
 
 @RunWith(value = SpringRunner.class)
index a0d4ea4..efa4523 100644 (file)
@@ -26,6 +26,7 @@ import org.springframework.core.env.Environment;
 import org.springframework.test.util.ReflectionTestUtils;
 
 import static java.lang.Long.valueOf;
+
 import static junit.framework.TestCase.assertEquals;
 import static junit.framework.TestCase.fail;
 import static org.mockito.Mockito.*;
index eb3674c..a056520 100644 (file)
 
 package org.onap.vfc.nfvo.driver.vnfm.svnfm.nokia.onap.core;
 
+import io.reactivex.Observable;
+import java.util.ArrayList;
+import java.util.List;
 import org.junit.Before;
 import org.junit.Test;
 import org.mockito.Mock;
-import org.onap.msb.sdk.discovery.common.RouteException;
-import org.onap.msb.sdk.discovery.entity.MicroServiceFullInfo;
-import org.onap.msb.sdk.discovery.entity.NodeInfo;
-import org.onap.msb.sdk.httpclient.msb.MSBServiceClient;
+import org.onap.msb.ApiClient;
+import org.onap.msb.api.ServiceResourceApi;
+import org.onap.msb.model.MicroServiceFullInfo;
+import org.onap.msb.model.NodeInfo;
 import org.onap.vfc.nfvo.driver.vnfm.svnfm.nokia.vnfm.CbamTokenProvider;
 import org.onap.vfc.nfvo.driver.vnfm.svnfm.nokia.vnfm.TestBase;
 import org.springframework.core.env.Environment;
 
-import java.util.HashSet;
-import java.util.Set;
-
 import static junit.framework.TestCase.assertEquals;
 import static junit.framework.TestCase.fail;
 import static org.mockito.Mockito.verify;
@@ -42,7 +42,7 @@ public class TestMsbApiProvider extends TestBase {
     @Mock
     private CbamTokenProvider cbamTokenProvider;
     private MicroServiceFullInfo microServiceInfo = new MicroServiceFullInfo();
-    private Set<NodeInfo> nodes = new HashSet<>();
+    private List<NodeInfo> nodes = new ArrayList<>();
     private MsbApiProvider msbApiProvider;
 
     @Before
@@ -60,9 +60,9 @@ public class TestMsbApiProvider extends TestBase {
         setFieldWithPropertyAnnotation(msbApiProvider, "${messageBusIp}", "mymessageBusIp");
         setFieldWithPropertyAnnotation(msbApiProvider, "${messageBusPort}", "123");
         //when
-        MSBServiceClient msbClient = msbApiProvider.getMsbClient();
+        ApiClient msbClient = msbApiProvider.buildApiClient();
         //verify
-        assertEquals("mymessageBusIp:123", msbClient.getMsbSvrAddress());
+        assertEquals("http://mymessagebusip:123/api/msdiscover/v1/", msbClient.getAdapterBuilder().build().baseUrl().toString());
     }
 
     /**
@@ -79,18 +79,34 @@ public class TestMsbApiProvider extends TestBase {
         nodes.add(dockerAccessPoint);
         msbApiProvider = new MsbApiProvider(environment) {
             @Override
-            public MSBServiceClient getMsbClient() {
+            public ServiceResourceApi getMsbApi() {
                 return msbClient;
             }
         };
-        when(msbClient.queryMicroServiceInfo("serviceName", "v1")).thenReturn(microServiceInfo);
+        when(msbClient.getMicroService_0("serviceName", "v1", null, null, null, null, null)).thenReturn(buildObservable(microServiceInfo));
         //when
         try {
             msbApiProvider.getMicroServiceUrl("serviceName", "v1");
             fail();
         } catch (Exception e) {
-            assertEquals("The serviceName service with v1 does not have any valid nodes[172.1.2.3:null  ttl:]", e.getMessage());
-            verify(logger).error("The serviceName service with v1 does not have any valid nodes[172.1.2.3:null  ttl:]");
+            String msg = "The serviceName service with v1 does not have any valid nodes[class NodeInfo {\n" +
+                    "    ip: 172.1.2.3\n" +
+                    "    port: null\n" +
+                    "    lbServerParams: null\n" +
+                    "    checkType: null\n" +
+                    "    checkUrl: null\n" +
+                    "    checkInterval: null\n" +
+                    "    checkTimeOut: null\n" +
+                    "    ttl: null\n" +
+                    "    haRole: null\n" +
+                    "    nodeId: null\n" +
+                    "    status: null\n" +
+                    "    expiration: null\n" +
+                    "    createdAt: null\n" +
+                    "    updatedAt: null\n" +
+                    "}]";
+            assertEquals(msg, e.getMessage());
+            verify(logger).error(msg);
         }
     }
 
@@ -109,11 +125,11 @@ public class TestMsbApiProvider extends TestBase {
         nodes.add(nonDocker);
         msbApiProvider = new MsbApiProvider(environment) {
             @Override
-            public MSBServiceClient getMsbClient() {
+            public ServiceResourceApi getMsbApi() {
                 return msbClient;
             }
         };
-        when(msbClient.queryMicroServiceInfo("serviceName", "v1")).thenReturn(microServiceInfo);
+        when(msbClient.getMicroService_0("serviceName", "v1", null, null, null, null, null)).thenReturn(buildObservable(microServiceInfo));
         msbApiProvider.afterPropertiesSet();
         //when
         assertEquals("http://1.2.3.4:234/lead/nslcm/v1", msbApiProvider.getMicroServiceUrl("serviceName", "v1"));
@@ -131,16 +147,16 @@ public class TestMsbApiProvider extends TestBase {
         microServiceInfo.setServiceName("serviceName");
         microServiceInfo.setVersion("v1");
         microServiceInfo.setUrl("/lead/nslcm/v1");
-        microServiceInfo.setEnable_ssl(true);
+        microServiceInfo.setEnableSsl(true);
         when(environment.getProperty(IpMappingProvider.IP_MAP, String.class, "")).thenReturn("173.1.2.3->1.2.3.4");
         nodes.add(nonDocker);
         msbApiProvider = new MsbApiProvider(environment) {
             @Override
-            public MSBServiceClient getMsbClient() {
+            public ServiceResourceApi getMsbApi() {
                 return msbClient;
             }
         };
-        when(msbClient.queryMicroServiceInfo("serviceName", "v1")).thenReturn(microServiceInfo);
+        when(msbClient.getMicroService_0("serviceName", "v1", null, null, null, null, null)).thenReturn(buildObservable(microServiceInfo));
         msbApiProvider.afterPropertiesSet();
         //when
         assertEquals("https://1.2.3.4:123/lead/nslcm/v1", msbApiProvider.getMicroServiceUrl("serviceName", "v1"));
@@ -153,13 +169,12 @@ public class TestMsbApiProvider extends TestBase {
     public void testUnableQueryMicroserviInfo() throws Exception {
         msbApiProvider = new MsbApiProvider(environment) {
             @Override
-            public MSBServiceClient getMsbClient() {
+            public ServiceResourceApi getMsbApi() {
                 return msbClient;
             }
         };
-        RouteException expectedException = new RouteException();
-        when(msbClient.queryMicroServiceInfo("serviceName", "v1")).thenThrow(expectedException);
-
+        RuntimeException expectedException = new RuntimeException();
+        when(msbClient.getMicroService_0("serviceName", "v1", null, null, null, null, null)).thenReturn(Observable.error(expectedException));
         //when
         try {
             msbApiProvider.getMicroServiceUrl("serviceName", "v1");
index c1da617..912a220 100644 (file)
  */
 package org.onap.vfc.nfvo.driver.vnfm.svnfm.nokia.onap.direct;
 
+import java.util.ArrayList;
 import org.junit.Before;
 import org.junit.Test;
 import org.mockito.Mock;
-import org.onap.aai.domain.yang.v11.EsrSystemInfo;
-import org.onap.aai.domain.yang.v11.EsrSystemInfoList;
-import org.onap.aai.domain.yang.v11.EsrVnfm;
-import org.onap.aai.domain.yang.v11.ObjectFactory;
+import org.onap.aai.api.CloudInfrastructureApi;
+import org.onap.aai.api.ExternalSystemApi;
+import org.onap.aai.model.CloudRegion;
+import org.onap.aai.model.EsrSystemInfo;
+import org.onap.aai.model.EsrVnfm;
 import org.onap.vfc.nfvo.driver.vnfm.svnfm.nokia.vnfm.TestBase;
 import org.onap.vnfmdriver.model.VimInfo;
 import org.onap.vnfmdriver.model.VnfmInfo;
@@ -33,15 +35,20 @@ import static org.mockito.Mockito.when;
 import static org.springframework.test.util.ReflectionTestUtils.setField;
 
 public class TestAAIExternalSystemInfoProvider extends TestBase {
-    private ObjectFactory OBJECT_FACTORY = new ObjectFactory();
     private AAIExternalSystemInfoProvider aaiExternalSystemInfoProvider;
     @Mock
     private AAIRestApiProvider aaiRestApiProvider;
+    @Mock
+    private ExternalSystemApi externalSystemApi;
+    @Mock
+    private CloudInfrastructureApi cloudInfrastructureApi;
 
     @Before
     public void init() {
-        aaiExternalSystemInfoProvider = new AAIExternalSystemInfoProvider(environment, aaiRestApiProvider);
         setField(AAIExternalSystemInfoProvider.class, "logger", logger);
+        aaiExternalSystemInfoProvider = new AAIExternalSystemInfoProvider(environment, aaiRestApiProvider);
+        when(aaiRestApiProvider.getExternalSystemApi()).thenReturn(externalSystemApi);
+        when(aaiRestApiProvider.getCloudInfrastructureApi()).thenReturn(cloudInfrastructureApi);
     }
 
     /**
@@ -49,9 +56,10 @@ public class TestAAIExternalSystemInfoProvider extends TestBase {
      */
     @Test
     public void testVim() throws Exception {
-        EsrSystemInfoList vims = OBJECT_FACTORY.createEsrSystemInfoList();
-        EsrSystemInfo vim = OBJECT_FACTORY.createEsrSystemInfo();
-        vims.getEsrSystemInfo().add(vim);
+        CloudRegion cloudRegion = new CloudRegion();
+        cloudRegion.setEsrSystemInfoList(new ArrayList<>());
+        EsrSystemInfo vim = new EsrSystemInfo();
+        cloudRegion.getEsrSystemInfoList().add(vim);
         vim.setPassword("myPassword");
         vim.setUserName("myUsername");
         vim.setServiceUrl("http://1.2.3.4:1234/a");
@@ -61,7 +69,7 @@ public class TestAAIExternalSystemInfoProvider extends TestBase {
         vim.setType("type");
         vim.setSslInsecure(true);
         vim.setVendor("vendor");
-        when(aaiRestApiProvider.get(logger, AAIRestApiProvider.AAIService.CLOUD, "/cloud-regions/cloud-region/myCloudOwnerId/myRegionName/esr-system-info-list", EsrSystemInfoList.class)).thenReturn(vims);
+        when(cloudInfrastructureApi.getCloudInfrastructureCloudRegionsCloudRegion("myCloudOwnerId", "myRegionName", null, null)).thenReturn(buildObservable(cloudRegion));
         //when
         VimInfo vimInfo = aaiExternalSystemInfoProvider.getVimInfo(VIM_ID);
         assertEquals("myPassword", vimInfo.getPassword());
@@ -84,9 +92,10 @@ public class TestAAIExternalSystemInfoProvider extends TestBase {
      */
     @Test
     public void testVimSsl() throws Exception {
-        EsrSystemInfoList vims = OBJECT_FACTORY.createEsrSystemInfoList();
-        EsrSystemInfo vim = OBJECT_FACTORY.createEsrSystemInfo();
-        vims.getEsrSystemInfo().add(vim);
+        CloudRegion cloudRegion = new CloudRegion();
+        cloudRegion.setEsrSystemInfoList(new ArrayList<>());
+        EsrSystemInfo vim = new EsrSystemInfo();
+        cloudRegion.getEsrSystemInfoList().add(vim);
         vim.setPassword("myPassword");
         vim.setUserName("myUsername");
         vim.setServiceUrl("https://1.2.3.4:1234/a");
@@ -97,7 +106,7 @@ public class TestAAIExternalSystemInfoProvider extends TestBase {
         vim.setSslInsecure(false);
         vim.setSslCacert("cert");
         vim.setVendor("vendor");
-        when(aaiRestApiProvider.get(logger, AAIRestApiProvider.AAIService.CLOUD, "/cloud-regions/cloud-region/myCloudOwnerId/myRegionName/esr-system-info-list", EsrSystemInfoList.class)).thenReturn(vims);
+        when(cloudInfrastructureApi.getCloudInfrastructureCloudRegionsCloudRegion("myCloudOwnerId", "myRegionName", null, null)).thenReturn(buildObservable(cloudRegion));
         //when
         VimInfo vimInfo = aaiExternalSystemInfoProvider.getVimInfo(VIM_ID);
         assertEquals("myPassword", vimInfo.getPassword());
@@ -120,7 +129,7 @@ public class TestAAIExternalSystemInfoProvider extends TestBase {
     @Test
     public void testVimUnableToQuery() throws Exception {
         RuntimeException expectedException = new RuntimeException();
-        when(aaiRestApiProvider.get(logger, AAIRestApiProvider.AAIService.CLOUD, "/cloud-regions/cloud-region/myCloudOwnerId/myRegionName/esr-system-info-list", EsrSystemInfoList.class)).thenThrow(expectedException);
+        when(cloudInfrastructureApi.getCloudInfrastructureCloudRegionsCloudRegion("myCloudOwnerId", "myRegionName", null, null)).thenThrow(expectedException);
         //when
         try {
             aaiExternalSystemInfoProvider.getVimInfo(VIM_ID);
@@ -136,11 +145,11 @@ public class TestAAIExternalSystemInfoProvider extends TestBase {
      */
     @Test
     public void testVnfmQuery() throws Exception {
-        EsrVnfm vnfm = OBJECT_FACTORY.createEsrVnfm();
+        EsrVnfm vnfm = new EsrVnfm();
         vnfm.setVimId(VIM_ID);
-        vnfm.setEsrSystemInfoList(OBJECT_FACTORY.createEsrSystemInfoList());
-        EsrSystemInfo esrInfo = OBJECT_FACTORY.createEsrSystemInfo();
-        vnfm.getEsrSystemInfoList().getEsrSystemInfo().add(esrInfo);
+        vnfm.setEsrSystemInfoList(new ArrayList<>());
+        EsrSystemInfo esrInfo = new EsrSystemInfo();
+        vnfm.getEsrSystemInfoList().add(esrInfo);
         esrInfo.setPassword("myPassword");
         esrInfo.setUserName("myUsername");
         esrInfo.setServiceUrl("https://1.2.3.4:1234/a");
@@ -152,7 +161,7 @@ public class TestAAIExternalSystemInfoProvider extends TestBase {
         esrInfo.setSslCacert("cert");
         esrInfo.setVendor("vendor");
         vnfm.setVnfmId(VNFM_ID);
-        when(aaiRestApiProvider.get(logger, AAIRestApiProvider.AAIService.ESR, "/esr-vnfm-list/esr-vnfm/" + VNFM_ID + "?depth=all", EsrVnfm.class)).thenReturn(vnfm);
+        when(externalSystemApi.getExternalSystemEsrVnfmListEsrVnfm(VNFM_ID)).thenReturn(buildObservable(vnfm));
 
         //when
         VnfmInfo actualVnfmInfo = aaiExternalSystemInfoProvider.queryVnfmInfoFromSource(VNFM_ID);
@@ -176,7 +185,7 @@ public class TestAAIExternalSystemInfoProvider extends TestBase {
     @Test
     public void testVnfmUnableToQuery() throws Exception {
         RuntimeException expectedException = new RuntimeException();
-        when(aaiRestApiProvider.get(logger, AAIRestApiProvider.AAIService.ESR, "/esr-vnfm-list/esr-vnfm/" + VNFM_ID + "?depth=all", EsrVnfm.class)).thenThrow(expectedException);
+        when(externalSystemApi.getExternalSystemEsrVnfmListEsrVnfm(VNFM_ID)).thenThrow(expectedException);
         //when
         try {
             aaiExternalSystemInfoProvider.queryVnfmInfoFromSource(VNFM_ID);
index 953f7da..9c53aba 100644 (file)
  */
 package org.onap.vfc.nfvo.driver.vnfm.svnfm.nokia.onap.direct;
 
+import javax.net.ssl.HostnameVerifier;
+import javax.net.ssl.SSLSocketFactory;
+import okhttp3.Protocol;
+import okhttp3.Request;
+import okhttp3.Response;
 import org.junit.Before;
 import org.junit.Test;
-import org.mockito.ArgumentCaptor;
 import org.mockito.Mock;
 import org.mockito.Mockito;
-import org.onap.aai.domain.yang.v11.GenericVnf;
-import org.onap.aai.domain.yang.v11.L3Network;
-import org.onap.aai.domain.yang.v11.ObjectFactory;
-import org.onap.aai.restclient.client.OperationResult;
-import org.onap.aai.restclient.client.RestClient;
-import org.onap.aai.restclient.enums.RestAuthenticationMode;
+import org.mockito.invocation.InvocationOnMock;
+import org.mockito.stubbing.Answer;
+import org.onap.aai.api.CloudInfrastructureApi;
+import org.onap.aai.api.ExternalSystemApi;
+import org.onap.aai.api.NetworkApi;
 import org.onap.vfc.nfvo.driver.vnfm.svnfm.nokia.vnfm.TestBase;
 
-import javax.xml.bind.JAXBContext;
-import java.io.ByteArrayOutputStream;
-import java.io.StringReader;
-import java.util.List;
-import java.util.Map;
-import java.util.NoSuchElementException;
-
-import static com.google.common.collect.Lists.newArrayList;
-import static java.util.Base64.getEncoder;
-import static javax.ws.rs.core.MediaType.APPLICATION_XML_TYPE;
-import static junit.framework.TestCase.*;
-import static org.mockito.Matchers.eq;
-import static org.mockito.Mockito.verify;
-import static org.mockito.Mockito.when;
+import static junit.framework.TestCase.assertEquals;
+import static org.mockito.Mockito.*;
 import static org.springframework.test.util.ReflectionTestUtils.setField;
 
-public class TestAAIRestApiProvider extends TestBase {
-    private ObjectFactory OBJECT_FACTORY = new ObjectFactory();
-    @Mock
-    private RestClient restClient;
-    private AAIRestApiProvider aaiRestApiProvider;
-    private ArgumentCaptor<Map> headers = ArgumentCaptor.forClass(Map.class);
-    private ArgumentCaptor<String> payload = ArgumentCaptor.forClass(String.class);
-
-    private OperationResult result = new OperationResult();
+class ResultCaptor<T> implements Answer {
+    private T result = null;
 
-    public static String marshall(Object object) throws Exception {
-        ByteArrayOutputStream bos = new ByteArrayOutputStream();
-        JAXBContext.newInstance(object.getClass()).createMarshaller().marshal(object, bos);
-        return bos.toString();
+    public T getResult() {
+        return result;
     }
 
-    public static <T> T unmarshal(String content, Class<T> clazz) {
-        try {
-            return (T) JAXBContext.newInstance(clazz).createUnmarshaller().unmarshal(new StringReader(content));
-        } catch (Exception e) {
-            throw new RuntimeException();
-        }
+    @Override
+    public T answer(InvocationOnMock invocationOnMock) throws Throwable {
+        result = (T) invocationOnMock.callRealMethod();
+        return result;
     }
+}
+
+public class TestAAIRestApiProvider extends TestBase {
+    private AAIRestApiProvider aaiRestApiProvider;
+    @Mock
+    private HostnameVerifier hostnameVerifier;
+    private AaiSecurityProvider aaiSecurityProvider = spy(new AaiSecurityProvider());
 
     @Before
     public void init() {
-        //MockitoAnnotations.initMocks(this);
-        AAIRestApiProvider real = new AAIRestApiProvider(msbApiProvider);
-        setField(AAIRestApiProvider.class, "logger", logger);
-        setFieldWithPropertyAnnotation(real, "${aaiUsername}", "aaiUsername");
-        setFieldWithPropertyAnnotation(real, "${aaiPassword}", "aaiPassword");
-        aaiRestApiProvider = Mockito.spy(real);
-        when(aaiRestApiProvider.buildRawClient()).thenReturn(restClient);
-        when(restClient.basicAuthPassword("aaiPassword")).thenReturn(restClient);
-        when(restClient.basicAuthUsername("aaiUsername")).thenReturn(restClient);
-        when(restClient.authenticationMode(RestAuthenticationMode.SSL_BASIC)).thenReturn(restClient);
-        when(msbApiProvider.getMicroServiceUrl(AAIRestApiProvider.AAIService.CLOUD.getServiceName(), "v11")).thenReturn("x://1.2.3.4:4/a");
-        result.setResultCode(201);
+        aaiRestApiProvider = new AAIRestApiProvider(msbApiProvider, aaiSecurityProvider);
     }
 
     /**
-     * test HTTP GET success scenario
+     * test building a client to access AAI API
      */
     @Test
-    public void testGetSuccess() throws Exception {
-        GenericVnf vnf = OBJECT_FACTORY.createGenericVnf();
-        vnf.setVnfId("myVnfId");
-        when(restClient.get(eq("x://1.2.3.4:4/a/myurl"), headers.capture(), eq(APPLICATION_XML_TYPE))).thenReturn(result);
-        result.setResult(marshall(vnf));
+    public void testApiClientBuilder() throws Exception {
+        setField(aaiSecurityProvider, "skipCertificateVerification", true);
+        setField(aaiSecurityProvider, "skipHostnameVerification", true);
+        setFieldWithPropertyAnnotation(aaiRestApiProvider, "${aaiUsername}", "username");
+        setFieldWithPropertyAnnotation(aaiRestApiProvider, "${aaiPassword}", "aaiPassword");
+        ResultCaptor<SSLSocketFactory> sslSocketFactoryResultCaptor = new ResultCaptor<>();
+        doAnswer(sslSocketFactoryResultCaptor).when(aaiSecurityProvider).buildSSLSocketFactory();
+        when(msbApiProvider.getMicroServiceUrl(AAIRestApiProvider.AAIService.NETWORK.getServiceName(), "v11")).thenReturn("http://1.2.3.4/a/");
+        when(aaiSecurityProvider.buildHostnameVerifier()).thenReturn(hostnameVerifier);
         //when
-        GenericVnf actualVnf = aaiRestApiProvider.get(logger, AAIRestApiProvider.AAIService.CLOUD, "/myurl", GenericVnf.class);
+        org.onap.aai.ApiClient apiClient = aaiRestApiProvider.buildApiClient(AAIRestApiProvider.AAIService.NETWORK);
         //verify
-        assertEquals(vnf.getVnfId(), actualVnf.getVnfId());
-        assertHeaders();
-    }
-
-    /**
-     * HTTP GET on non existing resource results in {@link java.util.NoSuchElementException}
-     */
-    @Test
-    public void testGetMissingResource() throws Exception {
-        when(restClient.get(eq("x://1.2.3.4:4/a/myurl"), headers.capture(), eq(APPLICATION_XML_TYPE))).thenReturn(result);
-        result.setResultCode(404);
-        //when
-        try {
-            aaiRestApiProvider.get(logger, AAIRestApiProvider.AAIService.CLOUD, "/myurl", GenericVnf.class);
-            fail();
-        } catch (NoSuchElementException e) {
-            verify(logger).debug("The resource at /myurl does not exists");
-            assertEquals("The resource at /myurl does not exists", e.getMessage());
-        }
-    }
-
-    /**
-     * Non known HTTP response code is propagated
-     */
-    @Test
-    public void testUnknownErroCode() throws Exception {
-        when(restClient.get(eq("x://1.2.3.4:4/a/myurl"), headers.capture(), eq(APPLICATION_XML_TYPE))).thenReturn(result);
-        result.setResultCode(502);
-        result.setFailureCause("myFail");
-        //when
-        try {
-            aaiRestApiProvider.get(logger, AAIRestApiProvider.AAIService.CLOUD, "/myurl", GenericVnf.class);
-            fail();
-        } catch (RuntimeException e) {
-            verify(logger).error("Bad response. Code: 502 cause: myFail");
-            assertEquals("Bad response. Code: 502 cause: myFail", e.getMessage());
-        }
+        assertEquals("http://1.2.3.4/a/", apiClient.getAdapterBuilder().build().baseUrl().toString());
+        assertEquals(sslSocketFactoryResultCaptor.getResult(), apiClient.getOkBuilder().build().sslSocketFactory());
+        assertEquals(hostnameVerifier, apiClient.getOkBuilder().build().hostnameVerifier());
+        Response resp = new Response.Builder().message("a").code(200).protocol(Protocol.HTTP_1_0).request(new Request.Builder().url("http://1.2.3.4/d").build()).build();
+        Request authenticate = apiClient.getOkBuilder().build().authenticator().authenticate(null, resp);
+        assertEquals("Basic dXNlcm5hbWU6YWFpUGFzc3dvcmQ=", authenticate.headers().get("Authorization"));
     }
 
     /**
-     * response content is not used when not requesting result
+     * is slash is missing from micro service URL it is added
      */
     @Test
-    public void testNoResult() throws Exception {
-        when(restClient.get(eq("x://1.2.3.4:4/a/myurl"), headers.capture(), eq(APPLICATION_XML_TYPE))).thenReturn(result);
-        result.setResultCode(202);
+    public void testApiClientBuilderMissingSlash() throws Exception {
+        setField(aaiSecurityProvider, "skipCertificateVerification", true);
+        setField(aaiSecurityProvider, "skipHostnameVerification", true);
+        setFieldWithPropertyAnnotation(aaiRestApiProvider, "${aaiUsername}", "username");
+        setFieldWithPropertyAnnotation(aaiRestApiProvider, "${aaiPassword}", "aaiPassword");
+        ResultCaptor<SSLSocketFactory> sslSocketFactoryResultCaptor = new ResultCaptor<>();
+        doAnswer(sslSocketFactoryResultCaptor).when(aaiSecurityProvider).buildSSLSocketFactory();
+        when(msbApiProvider.getMicroServiceUrl(AAIRestApiProvider.AAIService.NETWORK.getServiceName(), "v11")).thenReturn("http://1.2.3.4/a");
+        when(aaiSecurityProvider.buildHostnameVerifier()).thenReturn(hostnameVerifier);
         //when
-        Void result = aaiRestApiProvider.get(logger, AAIRestApiProvider.AAIService.CLOUD, "/myurl", Void.class);
+        org.onap.aai.ApiClient apiClient = aaiRestApiProvider.buildApiClient(AAIRestApiProvider.AAIService.NETWORK);
         //verify
-        assertNull(result);
+        assertEquals("http://1.2.3.4/a/", apiClient.getAdapterBuilder().build().baseUrl().toString());
+        assertEquals(sslSocketFactoryResultCaptor.getResult(), apiClient.getOkBuilder().build().sslSocketFactory());
+        assertEquals(hostnameVerifier, apiClient.getOkBuilder().build().hostnameVerifier());
+        Response resp = new Response.Builder().message("a").code(200).protocol(Protocol.HTTP_1_0).request(new Request.Builder().url("http://1.2.3.4/d").build()).build();
+        Request authenticate = apiClient.getOkBuilder().build().authenticator().authenticate(null, resp);
+        assertEquals("Basic dXNlcm5hbWU6YWFpUGFzc3dvcmQ=", authenticate.headers().get("Authorization"));
     }
 
     /**
-     * test HTTP PUT success scenario
+     * test building a client to access AAI API
      */
     @Test
-    public void putSuccess() throws Exception {
-        when(restClient.put(eq("x://1.2.3.4:4/a/myurl"), payload.capture(), headers.capture(), eq(APPLICATION_XML_TYPE), eq(APPLICATION_XML_TYPE))).thenReturn(result);
-        GenericVnf request = OBJECT_FACTORY.createGenericVnf();
-        request.setVnfId("myVnfId");
-        L3Network response = OBJECT_FACTORY.createL3Network();
-        response.setNetworkId("myNetworkId");
-        result.setResult(marshall(response));
+    public void testApiClientBuilderForCloud() throws Exception {
+        setField(aaiSecurityProvider, "skipCertificateVerification", true);
+        setField(aaiSecurityProvider, "skipHostnameVerification", true);
+        setFieldWithPropertyAnnotation(aaiRestApiProvider, "${aaiUsername}", "username");
+        setFieldWithPropertyAnnotation(aaiRestApiProvider, "${aaiPassword}", "aaiPassword");
+        ResultCaptor<SSLSocketFactory> sslSocketFactoryResultCaptor = new ResultCaptor<>();
+        doAnswer(sslSocketFactoryResultCaptor).when(aaiSecurityProvider).buildSSLSocketFactory();
+        when(msbApiProvider.getMicroServiceUrl(AAIRestApiProvider.AAIService.CLOUD.getServiceName(), "v11")).thenReturn("http://1.2.3.4/a/");
+        when(aaiSecurityProvider.buildHostnameVerifier()).thenReturn(hostnameVerifier);
         //when
-        L3Network actualResponse = aaiRestApiProvider.put(logger, AAIRestApiProvider.AAIService.CLOUD, "/myurl", request, L3Network.class);
+        org.onap.aai.ApiClient apiClient = aaiRestApiProvider.buildApiClient(AAIRestApiProvider.AAIService.CLOUD);
         //verify
-        GenericVnf actualValue = unmarshal(payload.getValue(), GenericVnf.class);
-        assertEquals("myVnfId", actualValue.getVnfId());
-        assertEquals("myNetworkId", actualResponse.getNetworkId());
-        assertHeaders();
+        assertEquals("http://1.2.3.4/a/", apiClient.getAdapterBuilder().build().baseUrl().toString());
+        assertEquals(sslSocketFactoryResultCaptor.getResult(), apiClient.getOkBuilder().build().sslSocketFactory());
+        assertEquals(hostnameVerifier, apiClient.getOkBuilder().build().hostnameVerifier());
+        Response resp = new Response.Builder().message("a").code(200).protocol(Protocol.HTTP_1_0).request(new Request.Builder().url("http://1.2.3.4/d").build()).build();
+        Request authenticate = apiClient.getOkBuilder().build().authenticator().authenticate(null, resp);
+        assertEquals("Basic dXNlcm5hbWU6YWFpUGFzc3dvcmQ=", authenticate.headers().get("Authorization"));
     }
 
     /**
-     * test HTTP delete success scenario
+     * test building a client to access AAI API
      */
     @Test
-    public void deleteSuccess() throws Exception {
-        when(restClient.delete(eq("x://1.2.3.4:4/a/myurl"), headers.capture(), eq(APPLICATION_XML_TYPE))).thenReturn(result);
+    public void testApiClientBuilderForExternalSystems() throws Exception {
+        setField(aaiSecurityProvider, "skipCertificateVerification", true);
+        setField(aaiSecurityProvider, "skipHostnameVerification", true);
+        setFieldWithPropertyAnnotation(aaiRestApiProvider, "${aaiUsername}", "username");
+        setFieldWithPropertyAnnotation(aaiRestApiProvider, "${aaiPassword}", "aaiPassword");
+        ResultCaptor<SSLSocketFactory> sslSocketFactoryResultCaptor = new ResultCaptor<>();
+        doAnswer(sslSocketFactoryResultCaptor).when(aaiSecurityProvider).buildSSLSocketFactory();
+        when(msbApiProvider.getMicroServiceUrl(AAIRestApiProvider.AAIService.ESR.getServiceName(), "v11")).thenReturn("http://1.2.3.4/a/");
+        when(aaiSecurityProvider.buildHostnameVerifier()).thenReturn(hostnameVerifier);
         //when
-        aaiRestApiProvider.delete(logger, AAIRestApiProvider.AAIService.CLOUD, "/myurl");
+        org.onap.aai.ApiClient apiClient = aaiRestApiProvider.buildApiClient(AAIRestApiProvider.AAIService.ESR);
         //verify
-        assertHeaders();
-        //the when above is the verify
+        assertEquals("http://1.2.3.4/a/", apiClient.getAdapterBuilder().build().baseUrl().toString());
+        assertEquals(sslSocketFactoryResultCaptor.getResult(), apiClient.getOkBuilder().build().sslSocketFactory());
+        assertEquals(hostnameVerifier, apiClient.getOkBuilder().build().hostnameVerifier());
+        Response resp = new Response.Builder().message("a").code(200).protocol(Protocol.HTTP_1_0).request(new Request.Builder().url("http://1.2.3.4/d").build()).build();
+        Request authenticate = apiClient.getOkBuilder().build().authenticator().authenticate(null, resp);
+        assertEquals("Basic dXNlcm5hbWU6YWFpUGFzc3dvcmQ=", authenticate.headers().get("Authorization"));
     }
 
     /**
-     * invalid request content results in error
+     * Test API wrapping for NetworkApi
+     * (questionable benefit [ this is more less ensured by Java type safety) ]
      */
     @Test
-    public void testInvalidInput() throws Exception {
-        when(restClient.put(eq("x://1.2.3.4:4/a/myurl"), payload.capture(), headers.capture(), eq(APPLICATION_XML_TYPE), eq(APPLICATION_XML_TYPE))).thenReturn(result);
-        //when
-        try {
-            aaiRestApiProvider.put(logger, AAIRestApiProvider.AAIService.CLOUD, "/myurl", "Invalid content", L3Network.class);
-            //verify
-            fail();
-        } catch (Exception e) {
-            assertEquals("Unable to marshal content", e.getMessage());
-            verify(logger).error("Unable to marshal content", e.getCause());
+    public void testNetworkApiAPiWrapping() {
+        org.onap.aai.ApiClient c = Mockito.mock(org.onap.aai.ApiClient.class);
+        class TestClasss extends AAIRestApiProvider {
+            public TestClasss() {
+                super(msbApiProvider, aaiSecurityProvider);
+            }
+
+            @Override
+            org.onap.aai.ApiClient buildApiClient(AAIRestApiProvider.AAIService service) {
+                return c;
+            }
         }
+        NetworkApi defaultApi = Mockito.mock(NetworkApi.class);
+        when(c.createService(NetworkApi.class)).thenReturn(defaultApi);
+        //verify
+        TestClasss testInstnace = new TestClasss();
+        assertEquals(defaultApi, testInstnace.getNetworkApi());
     }
 
     /**
-     * invalid response content results in error
+     * Test API wrapping for CloudInfrastructureApi
+     * (questionable benefit [ this is more less ensured by Java type safety) ]
      */
     @Test
-    public void testInvalidResponse() throws Exception {
-        when(restClient.put(eq("x://1.2.3.4:4/a/myurl"), payload.capture(), headers.capture(), eq(APPLICATION_XML_TYPE), eq(APPLICATION_XML_TYPE))).thenReturn(result);
-        GenericVnf request = OBJECT_FACTORY.createGenericVnf();
-        request.setVnfId("myVnfId");
-        result.setResult("invalid");
-        //when
-        try {
-            aaiRestApiProvider.put(logger, AAIRestApiProvider.AAIService.CLOUD, "/myurl", request, L3Network.class);
-            //verify
-            fail();
-        } catch (Exception e) {
-            assertEquals("Unable to unmarshal content", e.getMessage());
-            verify(logger).error("Unable to unmarshal content", e.getCause());
+    public void testCloudInfrastructureApiWrapping() {
+        org.onap.aai.ApiClient c = Mockito.mock(org.onap.aai.ApiClient.class);
+        class TestClasss extends AAIRestApiProvider {
+            public TestClasss() {
+                super(msbApiProvider, aaiSecurityProvider);
+            }
+
+            @Override
+            org.onap.aai.ApiClient buildApiClient(AAIRestApiProvider.AAIService service) {
+                return c;
+            }
         }
+        CloudInfrastructureApi defaultApi = Mockito.mock(CloudInfrastructureApi.class);
+        when(c.createService(CloudInfrastructureApi.class)).thenReturn(defaultApi);
+        //verify
+        TestClasss testInstnace = new TestClasss();
+        assertEquals(defaultApi, testInstnace.getCloudInfrastructureApi());
     }
 
     /**
-     * test AAI service names in AAI
+     * Test API wrapping for ExternalSystemApi
+     * (questionable benefit [ this is more less ensured by Java type safety) ]
      */
     @Test
-    public void testServiceNames() {
-        //the names have been base64-ed to prevent "smart" IDEs (idea) to refactor the tests too for the otherwise known fix constants in external systems
-        assertEquals("YWFpLWNsb3VkSW5mcmFzdHJ1Y3R1cmU=", getEncoder().encodeToString(AAIRestApiProvider.AAIService.CLOUD.getServiceName().getBytes()));
-        assertEquals("YWFpLW5ldHdvcms=", getEncoder().encodeToString(AAIRestApiProvider.AAIService.NETWORK.getServiceName().getBytes()));
-        assertEquals("YWFpLWV4dGVybmFsU3lzdGVt", getEncoder().encodeToString(AAIRestApiProvider.AAIService.ESR.getServiceName().getBytes()));
-    }
-
-    private void assertHeaders() {
-        Map<String, List<String>> actualHeaders = headers.getValue();
-        assertEquals(2, actualHeaders.size());
-        assertEquals(newArrayList("NokiaSVNFM"), actualHeaders.get("X-FromAppId"));
-        assertEquals(newArrayList("application/xml"), actualHeaders.get("Accept"));
+    public void testExternalSystemApiWrapping() {
+        org.onap.aai.ApiClient c = Mockito.mock(org.onap.aai.ApiClient.class);
+        class TestClasss extends AAIRestApiProvider {
+            public TestClasss() {
+                super(msbApiProvider, aaiSecurityProvider);
+            }
+
+            @Override
+            org.onap.aai.ApiClient buildApiClient(AAIRestApiProvider.AAIService service) {
+                return c;
+            }
+        }
+        ExternalSystemApi defaultApi = Mockito.mock(ExternalSystemApi.class);
+        when(c.createService(ExternalSystemApi.class)).thenReturn(defaultApi);
+        //verify
+        TestClasss testInstnace = new TestClasss();
+        assertEquals(defaultApi, testInstnace.getExternalSystemApi());
     }
 }
diff --git a/nokiav2/driver/src/test/java/org/onap/vfc/nfvo/driver/vnfm/svnfm/nokia/onap/direct/TestAaiSecurityProvider.java b/nokiav2/driver/src/test/java/org/onap/vfc/nfvo/driver/vnfm/svnfm/nokia/onap/direct/TestAaiSecurityProvider.java
new file mode 100644 (file)
index 0000000..4fbd0b2
--- /dev/null
@@ -0,0 +1,42 @@
+/*
+ * Copyright 2016-2017, Nokia Corporation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.onap.vfc.nfvo.driver.vnfm.svnfm.nokia.onap.direct;
+
+import org.junit.Test;
+import org.onap.vfc.nfvo.driver.vnfm.svnfm.nokia.vnfm.TestBase;
+
+import static junit.framework.TestCase.assertEquals;
+
+
+public class TestAaiSecurityProvider extends TestBase {
+    private AaiSecurityProvider securityProvider = new AaiSecurityProvider();
+
+    /**
+     * test property handling
+     */
+    @Test
+    public void init() throws Exception {
+        setFieldWithPropertyAnnotation(securityProvider, "${skipHostnameVerificationForAai}", true);
+        setFieldWithPropertyAnnotation(securityProvider, "${skipCertificateVerificationForAai}", true);
+        setFieldWithPropertyAnnotation(securityProvider, "${trustedCertificatesForAai}", "cert");
+
+        assertEquals(true, securityProvider.skipCertificateVerification());
+        assertEquals(true, securityProvider.skipHostnameVerification());
+        assertEquals("cert", securityProvider.trustedCertificates());
+    }
+
+}
index 199f725..87b065f 100644 (file)
  */
 package org.onap.vfc.nfvo.driver.vnfm.svnfm.nokia.onap.direct;
 
+import java.io.ByteArrayInputStream;
+import java.io.IOException;
+import java.util.NoSuchElementException;
 import org.apache.http.client.methods.HttpGet;
 import org.junit.Before;
 import org.junit.Test;
 import org.onap.vfc.nfvo.driver.vnfm.svnfm.nokia.util.TestUtil;
 import org.onap.vfc.nfvo.driver.vnfm.svnfm.nokia.vnfm.TestBase;
 
-import java.io.ByteArrayInputStream;
-import java.io.IOException;
-import java.util.NoSuchElementException;
-
 import static junit.framework.TestCase.assertEquals;
 import static junit.framework.TestCase.fail;
 import static org.apache.http.HttpHeaders.ACCEPT;
index 7bc7df7..d183e38 100644 (file)
@@ -17,6 +17,8 @@ package org.onap.vfc.nfvo.driver.vnfm.svnfm.nokia.onap.direct.notification;
 
 import com.google.gson.JsonObject;
 import com.nokia.cbam.lcm.v32.model.*;
+import java.util.ArrayList;
+import java.util.UUID;
 import org.junit.Before;
 import org.junit.Test;
 import org.mockito.InOrder;
@@ -26,12 +28,10 @@ import org.onap.vfc.nfvo.driver.vnfm.svnfm.nokia.vnfm.TestBase;
 import org.onap.vfc.nfvo.driver.vnfm.svnfm.nokia.vnfm.notification.ReportedAffectedConnectionPoints;
 import org.onap.vfc.nfvo.driver.vnfm.svnfm.nokia.vnfm.notification.ReportedAffectedCp;
 
-import java.util.ArrayList;
-import java.util.UUID;
-
-import static com.nokia.cbam.lcm.v32.model.ChangeType.*;
 import static java.util.Optional.empty;
 import static java.util.Optional.of;
+
+import static com.nokia.cbam.lcm.v32.model.ChangeType.*;
 import static org.mockito.Mockito.never;
 import static org.mockito.Mockito.verify;
 import static org.springframework.test.util.ReflectionTestUtils.setField;
index 2495daf..8991b81 100644 (file)
 package org.onap.vfc.nfvo.driver.vnfm.svnfm.nokia.onap.direct.notification;
 
 import com.google.gson.JsonObject;
+import java.util.ArrayList;
+import java.util.List;
 import org.junit.Before;
 import org.junit.Test;
 import org.mockito.Mock;
-import org.onap.aai.domain.yang.v11.*;
+import org.onap.aai.model.GenericVnf;
+import org.onap.aai.model.Relationship;
+import org.onap.aai.model.RelationshipData;
 import org.onap.vfc.nfvo.driver.vnfm.svnfm.nokia.onap.direct.AAIRestApiProvider;
 import org.onap.vfc.nfvo.driver.vnfm.svnfm.nokia.vnfm.CbamRestApiProvider;
 import org.onap.vfc.nfvo.driver.vnfm.svnfm.nokia.vnfm.DriverProperties;
 import org.onap.vfc.nfvo.driver.vnfm.svnfm.nokia.vnfm.TestBase;
 import org.slf4j.Logger;
 
-import java.util.NoSuchElementException;
-
+import static io.reactivex.Observable.error;
 import static junit.framework.TestCase.assertEquals;
-import static org.mockito.Mockito.when;
 
 public class TestAbstractManager extends TestBase {
-    private ObjectFactory OBJECT_FACTORY = new ObjectFactory();
     @Mock
     private AAIRestApiProvider aaiRestApiProvider;
     private DummyManager dummyManager;
@@ -47,10 +48,9 @@ public class TestAbstractManager extends TestBase {
      */
     @Test
     public void testIfResourceDoesNotExists() throws Exception {
-        GenericVnf newInstance = OBJECT_FACTORY.createGenericVnf();
-        when(aaiRestApiProvider.get(logger, AAIRestApiProvider.AAIService.CLOUD, "url", GenericVnf.class)).thenThrow(new NoSuchElementException());
+        GenericVnf newInstance = new GenericVnf();
         //when
-        GenericVnf actualInstance = dummyManager.createOrGet(AAIRestApiProvider.AAIService.CLOUD, "url", newInstance);
+        GenericVnf actualInstance = dummyManager.createOrGet(error(new RuntimeException()), newInstance);
         //verify
         assertEquals(newInstance, actualInstance);
     }
@@ -60,16 +60,17 @@ public class TestAbstractManager extends TestBase {
      */
     @Test
     public void testIfResourceExists() throws Exception {
-        GenericVnf newInstance = OBJECT_FACTORY.createGenericVnf();
-        GenericVnf existingInstance = OBJECT_FACTORY.createGenericVnf();
-        existingInstance.setVnfId("id");
-        when(aaiRestApiProvider.get(logger, AAIRestApiProvider.AAIService.CLOUD, "url", GenericVnf.class)).thenReturn(existingInstance);
+        GenericVnf newInstance = new GenericVnf();
+        GenericVnf existingInstance = new GenericVnf();
         //when
-        GenericVnf actualInstance = dummyManager.createOrGet(AAIRestApiProvider.AAIService.CLOUD, "url", newInstance);
+        GenericVnf actualInstance = dummyManager.createOrGet(buildObservable(existingInstance), newInstance);
         //verify
         assertEquals(existingInstance, actualInstance);
     }
 
+    /**
+     * Test relationship data builder
+     */
     @Test
     public void testBuildRelationshipData() {
         RelationshipData relationshipData = AbstractManager.buildRelationshipData("key", "value");
@@ -77,6 +78,9 @@ public class TestAbstractManager extends TestBase {
         assertEquals("value", relationshipData.getRelationshipValue());
     }
 
+    /**
+     * test mandatory value extraction
+     */
     @Test
     public void testExtractMandatoryValue() {
         JsonObject object = new JsonObject();
@@ -89,33 +93,36 @@ public class TestAbstractManager extends TestBase {
      */
     @Test
     public void testAddSingletonRelationForExisting() {
-        RelationshipList relations = OBJECT_FACTORY.createRelationshipList();
-        Relationship relation = OBJECT_FACTORY.createRelationship();
+        List<Relationship> relationships = new ArrayList<>();
+        Relationship relation = new Relationship();
         relation.setRelatedTo("unknownRelation");
-        relations.getRelationship().add(relation);
-        Relationship sameRelation = OBJECT_FACTORY.createRelationship();
+        relation.setRelationshipData(new ArrayList<>());
+        relationships.add(relation);
+        Relationship sameRelation = new Relationship();
         sameRelation.setRelatedTo("relatedTo");
-        relations.getRelationship().add(sameRelation);
-        RelationshipData data = OBJECT_FACTORY.createRelationshipData();
+        relationships.add(sameRelation);
+        RelationshipData data = new RelationshipData();
         data.setRelationshipValue("v");
         data.setRelationshipKey("k");
+        sameRelation.setRelationshipData(new ArrayList<>());
         sameRelation.getRelationshipData().add(data);
 
-        Relationship newRelation = OBJECT_FACTORY.createRelationship();
+        Relationship newRelation = new Relationship();
         newRelation.setRelatedTo("relatedTo");
-        RelationshipData data2 = OBJECT_FACTORY.createRelationshipData();
+        RelationshipData data2 = new RelationshipData();
         data2.setRelationshipValue("v2");
         data2.setRelationshipKey("k2");
+        newRelation.setRelationshipData(new ArrayList<>());
         newRelation.getRelationshipData().add(data2);
 
         //when
-        AbstractManager.addSingletonRelation(relations, newRelation);
+        AbstractManager.addSingletonRelation(relationships, newRelation);
         //verify
 
-        assertEquals(2, relations.getRelationship().size());
-        assertEquals(1, relations.getRelationship().get(1).getRelationshipData().size());
-        assertEquals("k2", relations.getRelationship().get(1).getRelationshipData().get(0).getRelationshipKey());
-        assertEquals("v2", relations.getRelationship().get(1).getRelationshipData().get(0).getRelationshipValue());
+        assertEquals(2, relationships.size());
+        assertEquals(1, relationships.get(1).getRelationshipData().size());
+        assertEquals("k2", relationships.get(1).getRelationshipData().get(0).getRelationshipKey());
+        assertEquals("v2", relationships.get(1).getRelationshipData().get(0).getRelationshipValue());
     }
 
     /**
@@ -123,25 +130,28 @@ public class TestAbstractManager extends TestBase {
      */
     @Test
     public void testAddSingletonRelation() {
-        RelationshipList relations = OBJECT_FACTORY.createRelationshipList();
-        Relationship relation = OBJECT_FACTORY.createRelationship();
+        Relationship relation = new Relationship();
         relation.setRelatedTo("unknownRelation");
-        relations.getRelationship().add(relation);
+        List<Relationship> relationships = new ArrayList<>();
+
+        relationships.add(relation);
 
-        Relationship newRelation = OBJECT_FACTORY.createRelationship();
+        Relationship newRelation = new Relationship();
         newRelation.setRelatedTo("relatedTo");
-        RelationshipData data2 = OBJECT_FACTORY.createRelationshipData();
+        RelationshipData data2 = new RelationshipData();
+        ;
         data2.setRelationshipValue("v2");
         data2.setRelationshipKey("k2");
+        newRelation.setRelationshipData(new ArrayList<>());
         newRelation.getRelationshipData().add(data2);
 
         //when
-        AbstractManager.addSingletonRelation(relations, newRelation);
+        AbstractManager.addSingletonRelation(relationships, newRelation);
         //verify
-        assertEquals(2, relations.getRelationship().size());
-        assertEquals(1, relations.getRelationship().get(1).getRelationshipData().size());
-        assertEquals("k2", relations.getRelationship().get(1).getRelationshipData().get(0).getRelationshipKey());
-        assertEquals("v2", relations.getRelationship().get(1).getRelationshipData().get(0).getRelationshipValue());
+        assertEquals(2, relationships.size());
+        assertEquals(1, relationships.get(1).getRelationshipData().size());
+        assertEquals("k2", relationships.get(1).getRelationshipData().get(0).getRelationshipKey());
+        assertEquals("v2", relationships.get(1).getRelationshipData().get(0).getRelationshipValue());
     }
 
     /**
@@ -149,35 +159,39 @@ public class TestAbstractManager extends TestBase {
      */
     @Test
     public void testAddMissingRelationForExisting() {
-        RelationshipList relations = OBJECT_FACTORY.createRelationshipList();
-        Relationship relation = OBJECT_FACTORY.createRelationship();
+        List<Relationship> relationships = new ArrayList<>();
+        Relationship relation = new Relationship();
         relation.setRelatedTo("unknownRelation");
-        relations.getRelationship().add(relation);
-        Relationship sameRelation = OBJECT_FACTORY.createRelationship();
+        relationships.add(relation);
+        Relationship sameRelation = new Relationship();
         sameRelation.setRelatedTo("relatedTo");
-        relations.getRelationship().add(sameRelation);
-        RelationshipData data = OBJECT_FACTORY.createRelationshipData();
+        relationships.add(sameRelation);
+        RelationshipData data = new RelationshipData();
+        ;
         data.setRelationshipValue("v");
         data.setRelationshipKey("k");
+        sameRelation.setRelationshipData(new ArrayList<>());
         sameRelation.getRelationshipData().add(data);
 
-        Relationship newRelation = OBJECT_FACTORY.createRelationship();
+        Relationship newRelation = new Relationship();
         newRelation.setRelatedTo("relatedTo");
-        RelationshipData data2 = OBJECT_FACTORY.createRelationshipData();
+        RelationshipData data2 = new RelationshipData();
+        ;
         data2.setRelationshipValue("v2");
         data2.setRelationshipKey("k2");
+        newRelation.setRelationshipData(new ArrayList<>());
         newRelation.getRelationshipData().add(data2);
 
         //when
-        AbstractManager.addMissingRelation(relations, newRelation);
+        AbstractManager.addMissingRelation(relationships, newRelation);
         //verify
 
-        assertEquals(3, relations.getRelationship().size());
-        assertEquals(1, relations.getRelationship().get(1).getRelationshipData().size());
-        assertEquals("k", relations.getRelationship().get(1).getRelationshipData().get(0).getRelationshipKey());
-        assertEquals("v", relations.getRelationship().get(1).getRelationshipData().get(0).getRelationshipValue());
-        assertEquals("k2", relations.getRelationship().get(2).getRelationshipData().get(0).getRelationshipKey());
-        assertEquals("v2", relations.getRelationship().get(2).getRelationshipData().get(0).getRelationshipValue());
+        assertEquals(3, relationships.size());
+        assertEquals(1, relationships.get(1).getRelationshipData().size());
+        assertEquals("k", relationships.get(1).getRelationshipData().get(0).getRelationshipKey());
+        assertEquals("v", relationships.get(1).getRelationshipData().get(0).getRelationshipValue());
+        assertEquals("k2", relationships.get(2).getRelationshipData().get(0).getRelationshipKey());
+        assertEquals("v2", relationships.get(2).getRelationshipData().get(0).getRelationshipValue());
     }
 
     /**
@@ -185,33 +199,37 @@ public class TestAbstractManager extends TestBase {
      */
     @Test
     public void testAddMissingRelation() {
-        RelationshipList relations = OBJECT_FACTORY.createRelationshipList();
-        Relationship relation = OBJECT_FACTORY.createRelationship();
+        Relationship relation = new Relationship();
         relation.setRelatedTo("unknownRelation");
-        relations.getRelationship().add(relation);
+        List<Relationship> relationships = new ArrayList<>();
+        relationships.add(relation);
 
-        Relationship sameRelation = OBJECT_FACTORY.createRelationship();
+        Relationship sameRelation = new Relationship();
         sameRelation.setRelatedTo("relatedTo");
-        relations.getRelationship().add(sameRelation);
-        RelationshipData data = OBJECT_FACTORY.createRelationshipData();
+        relationships.add(sameRelation);
+        RelationshipData data = new RelationshipData();
+        ;
         data.setRelationshipValue("v");
         data.setRelationshipKey("k");
+        sameRelation.setRelationshipData(new ArrayList<>());
         sameRelation.getRelationshipData().add(data);
 
-        Relationship newRelation = OBJECT_FACTORY.createRelationship();
+        Relationship newRelation = new Relationship();
         newRelation.setRelatedTo("relatedTo");
-        RelationshipData data2 = OBJECT_FACTORY.createRelationshipData();
+        RelationshipData data2 = new RelationshipData();
+        ;
         data2.setRelationshipValue("v");
         data2.setRelationshipKey("k");
+        newRelation.setRelationshipData(new ArrayList<>());
         newRelation.getRelationshipData().add(data2);
 
         //when
-        AbstractManager.addMissingRelation(relations, newRelation);
+        AbstractManager.addMissingRelation(relationships, newRelation);
         //verify
-        assertEquals(2, relations.getRelationship().size());
-        assertEquals(1, relations.getRelationship().get(1).getRelationshipData().size());
-        assertEquals("k", relations.getRelationship().get(1).getRelationshipData().get(0).getRelationshipKey());
-        assertEquals("v", relations.getRelationship().get(1).getRelationshipData().get(0).getRelationshipValue());
+        assertEquals(2, relationships.size());
+        assertEquals(1, relationships.get(1).getRelationshipData().size());
+        assertEquals("k", relationships.get(1).getRelationshipData().get(0).getRelationshipKey());
+        assertEquals("v", relationships.get(1).getRelationshipData().get(0).getRelationshipValue());
     }
 
     class DummyManager extends AbstractManager {
index 7cddb50..514098b 100644 (file)
 package org.onap.vfc.nfvo.driver.vnfm.svnfm.nokia.onap.direct.notification;
 
 import com.nokia.cbam.lcm.v32.model.VnfInfo;
+import io.reactivex.Observable;
+import java.util.HashSet;
+import java.util.List;
+import java.util.NoSuchElementException;
+import java.util.Set;
+import java.util.concurrent.atomic.AtomicLong;
 import org.junit.Before;
 import org.junit.Test;
 import org.mockito.ArgumentCaptor;
@@ -23,35 +29,35 @@ import org.mockito.Mock;
 import org.mockito.Mockito;
 import org.mockito.invocation.InvocationOnMock;
 import org.mockito.stubbing.Answer;
-import org.onap.aai.domain.yang.v11.*;
+import org.onap.aai.api.NetworkApi;
+import org.onap.aai.model.GenericVnf;
+import org.onap.aai.model.Relationship;
+import org.onap.aai.model.RelationshipData;
 import org.onap.vfc.nfvo.driver.vnfm.svnfm.nokia.onap.direct.AAIRestApiProvider;
 import org.onap.vfc.nfvo.driver.vnfm.svnfm.nokia.vnfm.CbamRestApiProvider;
 import org.onap.vfc.nfvo.driver.vnfm.svnfm.nokia.vnfm.TestBase;
 
-import java.util.HashSet;
-import java.util.NoSuchElementException;
-import java.util.Set;
-import java.util.concurrent.atomic.AtomicLong;
+import static java.lang.Boolean.TRUE;
 
 import static junit.framework.TestCase.assertEquals;
 import static junit.framework.TestCase.fail;
 import static org.mockito.Matchers.anyLong;
 import static org.mockito.Matchers.eq;
 import static org.mockito.Mockito.*;
-import static org.onap.vfc.nfvo.driver.vnfm.svnfm.nokia.onap.direct.AAIRestApiProvider.AAIService.NETWORK;
 import static org.springframework.test.util.ReflectionTestUtils.setField;
 
 public class TestGenericVnfManager extends TestBase {
-    private ObjectFactory OBJECT_FACTORY = new ObjectFactory();
     private ArgumentCaptor<GenericVnf> payload = ArgumentCaptor.forClass(GenericVnf.class);
 
     @Mock
     private AAIRestApiProvider aaiRestApiProvider;
+    @Mock
+    private NetworkApi networkApi;
     private GenericVnfManager genericVnfManager;
     private VnfInfo vnfInfo = new VnfInfo();
 
-    static void assertRelation(RelationshipList relationShips, String relatedTo, RelationshipData... data) {
-        for (Relationship relationship : relationShips.getRelationship()) {
+    static void assertRelation(List<Relationship> relationShips, String relatedTo, RelationshipData... data) {
+        for (Relationship relationship : relationShips) {
             if (relationship.getRelatedTo().equals(relatedTo)) {
                 assertEquals(data.length, relationship.getRelationshipData().size());
                 int i = 0;
@@ -68,6 +74,7 @@ public class TestGenericVnfManager extends TestBase {
 
     @Before
     public void init() {
+        when(aaiRestApiProvider.getNetworkApi()).thenReturn(networkApi);
         genericVnfManager = new GenericVnfManager(aaiRestApiProvider, cbamRestApiProvider, driverProperties);
         setField(GenericVnfManager.class, "logger", logger);
         AtomicLong currentTime = new AtomicLong(0L);
@@ -86,34 +93,21 @@ public class TestGenericVnfManager extends TestBase {
         }).when(systemFunctions).sleep(anyLong());
     }
 
-    /**
-     * retrieving an existing VNF
-     */
-    @Test
-    public void testGetExistingVnf() throws Exception {
-        GenericVnf aaiVnf = OBJECT_FACTORY.createGenericVnf();
-        when(aaiRestApiProvider.get(logger, NETWORK, "/generic-vnfs/generic-vnf/" + VNF_ID, GenericVnf.class)).thenReturn(aaiVnf);
-        //when
-        GenericVnf vnf = genericVnfManager.getExistingVnf(VNF_ID);
-        //verify
-        assertEquals(aaiVnf, vnf);
-    }
-
     /**
      * if the VNF does not exist it is created
      */
     @Test
     public void createNonExistingVnf() throws Exception {
-        GenericVnf vnfInAaai = OBJECT_FACTORY.createGenericVnf();
+        GenericVnf vnfInAaai = new GenericVnf();
         Set<GenericVnf> vnfs = new HashSet<>();
-        when(aaiRestApiProvider.get(logger, NETWORK, "/generic-vnfs/generic-vnf/" + VNF_ID, GenericVnf.class)).thenAnswer((Answer<GenericVnf>) invocation -> {
+        when(networkApi.getNetworkGenericVnfsGenericVnf(VNF_ID, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null)).thenAnswer((Answer<Observable<GenericVnf>>) invocation -> {
             if (vnfs.size() == 0) {
                 throw new NoSuchElementException();
             }
-            return vnfs.iterator().next();
+            return buildObservable(vnfs.iterator().next());
         });
         when(cbamRestApiProvider.getCbamLcmApi(VNFM_ID).vnfsVnfInstanceIdGet(VNF_ID, CbamRestApiProvider.NOKIA_LCM_API_VERSION)).thenReturn(buildObservable(vnfInfo));
-        when(aaiRestApiProvider.put(eq(logger), eq(NETWORK), eq("/generic-vnfs/generic-vnf/" + VNF_ID), payload.capture(), eq(Void.class))).thenAnswer(invocation -> {
+        when(networkApi.createOrUpdateNetworkGenericVnfsGenericVnf(eq(VNF_ID), payload.capture())).thenAnswer(invocation -> {
             vnfs.add(vnfInAaai);
             return null;
         });
@@ -123,13 +117,13 @@ public class TestGenericVnfManager extends TestBase {
         //verify
         GenericVnf vnfSentToAai = payload.getValue();
         assertEquals(VNF_ID, vnfSentToAai.getVnfId());
-        assertEquals(VNF_ID, vnfSentToAai.getVnfInstanceId());
+        assertEquals(VNF_ID, vnfSentToAai.getVnfId());
         assertEquals("NokiaVNF", vnfSentToAai.getVnfType());
-        assertEquals(true, vnfSentToAai.isInMaint());
-        assertEquals(true, vnfSentToAai.isIsClosedLoopDisabled());
+        assertEquals(TRUE, vnfSentToAai.isInMaint());
+        assertEquals(TRUE, vnfSentToAai.isIsClosedLoopDisabled());
         assertEquals("vnfName", vnfSentToAai.getVnfName());
         verify(systemFunctions, times(10)).sleep(3000);
-        verify(aaiRestApiProvider, times(10)).get(logger, NETWORK, "/generic-vnfs/generic-vnf/" + VNF_ID, GenericVnf.class);
+        verify(networkApi, times(10)).getNetworkGenericVnfsGenericVnf(VNF_ID, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null);
     }
 
     /**
@@ -137,24 +131,24 @@ public class TestGenericVnfManager extends TestBase {
      */
     @Test
     public void testUpdateExistingVnf() throws Exception {
-        GenericVnf vnfInAaai = OBJECT_FACTORY.createGenericVnf();
+        GenericVnf vnfInAaai = new GenericVnf();
         vnfInAaai.setResourceVersion("v1");
-        when(aaiRestApiProvider.get(logger, NETWORK, "/generic-vnfs/generic-vnf/" + VNF_ID, GenericVnf.class)).thenReturn(vnfInAaai);
+        when(networkApi.getNetworkGenericVnfsGenericVnf(VNF_ID, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null)).thenReturn(buildObservable(vnfInAaai));
         when(cbamRestApiProvider.getCbamLcmApi(VNFM_ID).vnfsVnfInstanceIdGet(VNF_ID, CbamRestApiProvider.NOKIA_LCM_API_VERSION)).thenReturn(buildObservable(vnfInfo));
-        when(aaiRestApiProvider.put(eq(logger), eq(NETWORK), eq("/generic-vnfs/generic-vnf/" + VNF_ID), payload.capture(), eq(Void.class))).thenReturn(null);
+        when(networkApi.createOrUpdateNetworkGenericVnfsGenericVnf(eq(VNF_ID), payload.capture())).thenReturn(null);
         vnfInfo.setName("vnfName");
         //when
         genericVnfManager.createOrUpdate(VNF_ID, true);
         //verify
         GenericVnf vnfSentToAai = payload.getValue();
         assertEquals(VNF_ID, vnfSentToAai.getVnfId());
-        assertEquals(VNF_ID, vnfSentToAai.getVnfInstanceId());
+        assertEquals(VNF_ID, vnfSentToAai.getVnfId());
         assertEquals("NokiaVNF", vnfSentToAai.getVnfType());
-        assertEquals(true, vnfSentToAai.isInMaint());
-        assertEquals(true, vnfSentToAai.isIsClosedLoopDisabled());
+        assertEquals(TRUE, vnfSentToAai.isInMaint());
+        assertEquals(TRUE, vnfSentToAai.isIsClosedLoopDisabled());
         assertEquals("vnfName", vnfSentToAai.getVnfName());
         verify(systemFunctions, never()).sleep(anyLong());
-        verify(aaiRestApiProvider, times(1)).get(logger, NETWORK, "/generic-vnfs/generic-vnf/" + VNF_ID, GenericVnf.class);
+        verify(networkApi, times(1)).getNetworkGenericVnfsGenericVnf(VNF_ID, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null);
     }
 
     /**
@@ -162,12 +156,12 @@ public class TestGenericVnfManager extends TestBase {
      */
     @Test
     public void testUnableToQueryVnfFromCBAM() throws Exception {
-        GenericVnf vnfInAaai = OBJECT_FACTORY.createGenericVnf();
+        GenericVnf vnfInAaai = new GenericVnf();
         vnfInAaai.setResourceVersion("v1");
-        when(aaiRestApiProvider.get(logger, NETWORK, "/generic-vnfs/generic-vnf/" + VNF_ID, GenericVnf.class)).thenReturn(vnfInAaai);
+        when(networkApi.getNetworkGenericVnfsGenericVnf(VNF_ID, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null)).thenReturn(buildObservable(vnfInAaai));
         RuntimeException expectedException = new RuntimeException();
         when(cbamRestApiProvider.getCbamLcmApi(VNFM_ID).vnfsVnfInstanceIdGet(VNF_ID, CbamRestApiProvider.NOKIA_LCM_API_VERSION)).thenThrow(expectedException);
-        when(aaiRestApiProvider.put(eq(logger), eq(NETWORK), eq("/generic-vnfs/generic-vnf/" + VNF_ID), payload.capture(), eq(Void.class))).thenAnswer(invocation -> {
+        when(networkApi.createOrUpdateNetworkGenericVnfsGenericVnf(eq(VNF_ID), payload.capture())).thenAnswer(invocation -> {
             vnfInAaai.setResourceVersion("v2");
             return null;
         });
@@ -187,20 +181,20 @@ public class TestGenericVnfManager extends TestBase {
      */
     @Test
     public void testConcurency1() throws Exception {
-        GenericVnf vnfInAaai = OBJECT_FACTORY.createGenericVnf();
+        GenericVnf vnfInAaai = new GenericVnf();
         vnfInAaai.setResourceVersion("v3");
         Set<Integer> queryCount = new HashSet<>();
-        when(aaiRestApiProvider.get(logger, NETWORK, "/generic-vnfs/generic-vnf/" + VNF_ID, GenericVnf.class)).thenAnswer((Answer<GenericVnf>) invocation -> {
+        when(networkApi.getNetworkGenericVnfsGenericVnf(VNF_ID, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null)).thenAnswer((Answer<Observable>) invocationOnMock -> {
             queryCount.add(queryCount.size());
             if (queryCount.size() >= 11) {
-                return vnfInAaai;
+                return buildObservable(vnfInAaai);
             }
             throw new NoSuchElementException();
         });
         when(cbamRestApiProvider.getCbamLcmApi(VNFM_ID).vnfsVnfInstanceIdGet(VNF_ID, CbamRestApiProvider.NOKIA_LCM_API_VERSION)).thenReturn(buildObservable(vnfInfo));
         RuntimeException runtimeException = new RuntimeException();
-        when(aaiRestApiProvider.put(eq(logger), eq(NETWORK), eq("/generic-vnfs/generic-vnf/" + VNF_ID), payload.capture(), eq(Void.class))).thenAnswer(invocation -> {
-            GenericVnf vnfSentToAAi = (GenericVnf) invocation.getArguments()[3];
+        when(networkApi.createOrUpdateNetworkGenericVnfsGenericVnf(eq(VNF_ID), payload.capture())).thenAnswer(invocation -> {
+            GenericVnf vnfSentToAAi = (GenericVnf) invocation.getArguments()[1];
             if (vnfSentToAAi.getResourceVersion() == null) {
                 throw runtimeException;
             }
@@ -212,15 +206,15 @@ public class TestGenericVnfManager extends TestBase {
         //verify
         GenericVnf vnfSentToAai = payload.getValue();
         assertEquals(VNF_ID, vnfSentToAai.getVnfId());
-        assertEquals(VNF_ID, vnfSentToAai.getVnfInstanceId());
+        assertEquals(VNF_ID, vnfSentToAai.getVnfId());
         assertEquals("NokiaVNF", vnfSentToAai.getVnfType());
-        assertEquals(true, vnfSentToAai.isInMaint());
-        assertEquals(true, vnfSentToAai.isIsClosedLoopDisabled());
+        assertEquals(TRUE, vnfSentToAai.isInMaint());
+        assertEquals(TRUE, vnfSentToAai.isIsClosedLoopDisabled());
         assertEquals("vnfName", vnfSentToAai.getVnfName());
         assertEquals("v3", vnfSentToAai.getResourceVersion());
         verify(systemFunctions, times(10)).sleep(3000);
-        verify(aaiRestApiProvider, times(11)).get(logger, NETWORK, "/generic-vnfs/generic-vnf/" + VNF_ID, GenericVnf.class);
-        verify(aaiRestApiProvider, times(2)).put(eq(logger), eq(NETWORK), eq("/generic-vnfs/generic-vnf/" + VNF_ID), any(), eq(Void.class));
+        verify(networkApi, times(11)).getNetworkGenericVnfsGenericVnf(VNF_ID, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null);
+        verify(networkApi, times(2)).createOrUpdateNetworkGenericVnfsGenericVnf(eq(VNF_ID), any());
         verify(logger).warn(eq("The VNF with myVnfId identifier did not appear in time"), any(NoSuchElementException.class));
         verify(logger).warn("The VNF with myVnfId identifier has been created since after the maximal wait for VNF to appear timeout", runtimeException);
     }
index 373c5dd..47dbb95 100644 (file)
@@ -18,24 +18,20 @@ package org.onap.vfc.nfvo.driver.vnfm.svnfm.nokia.onap.direct.notification;
 import com.google.gson.JsonObject;
 import com.nokia.cbam.lcm.v32.model.AffectedVirtualLink;
 import com.nokia.cbam.lcm.v32.model.ResourceHandle;
+import java.util.ArrayList;
 import org.junit.Before;
 import org.junit.Test;
 import org.mockito.ArgumentCaptor;
 import org.mockito.Mock;
-import org.onap.aai.domain.yang.v11.L3Network;
-import org.onap.aai.domain.yang.v11.ObjectFactory;
-import org.onap.aai.domain.yang.v11.RelationshipList;
+import org.onap.aai.api.NetworkApi;
+import org.onap.aai.model.L3Network;
 import org.onap.vfc.nfvo.driver.vnfm.svnfm.nokia.onap.direct.AAIRestApiProvider;
 import org.onap.vfc.nfvo.driver.vnfm.svnfm.nokia.vnfm.TestBase;
 
-import java.util.NoSuchElementException;
-
 import static junit.framework.TestCase.assertEquals;
 import static junit.framework.TestCase.assertFalse;
 import static org.mockito.Matchers.eq;
-import static org.mockito.Mockito.verify;
 import static org.mockito.Mockito.when;
-import static org.onap.vfc.nfvo.driver.vnfm.svnfm.nokia.onap.direct.AAIRestApiProvider.AAIService.NETWORK;
 import static org.onap.vfc.nfvo.driver.vnfm.svnfm.nokia.onap.direct.notification.AbstractManager.buildRelationshipData;
 import static org.onap.vfc.nfvo.driver.vnfm.svnfm.nokia.onap.direct.notification.TestGenericVnfManager.assertRelation;
 import static org.onap.vfc.nfvo.driver.vnfm.svnfm.nokia.vnfm.LifecycleManager.getCloudOwner;
@@ -43,17 +39,19 @@ import static org.onap.vfc.nfvo.driver.vnfm.svnfm.nokia.vnfm.LifecycleManager.ge
 import static org.springframework.test.util.ReflectionTestUtils.setField;
 
 public class TestL3NetworkManager extends TestBase {
-    private ObjectFactory OBJECT_FACTORY = new ObjectFactory();
     private ArgumentCaptor<L3Network> payload = ArgumentCaptor.forClass(L3Network.class);
     private AffectedVirtualLink affectedVirtualLink = new AffectedVirtualLink();
     @Mock
     private AAIRestApiProvider aaiRestApiProvider;
     private L3NetworkManager l3NetworkManager;
+    @Mock
+    private NetworkApi networkApi;
 
     @Before
     public void init() {
         l3NetworkManager = new L3NetworkManager(aaiRestApiProvider, cbamRestApiProvider, driverProperties);
         setField(L3NetworkManager.class, "logger", logger);
+        when(aaiRestApiProvider.getNetworkApi()).thenReturn(networkApi);
     }
 
     /**
@@ -68,8 +66,9 @@ public class TestL3NetworkManager extends TestBase {
         affectedVirtualLink.setResource(new ResourceHandle());
         affectedVirtualLink.getResource().setAdditionalData(additionalData);
         affectedVirtualLink.getResource().setResourceId("netProviderId");
-        when(aaiRestApiProvider.get(logger, NETWORK, "/l3-networks/l3-network/myVnfId_vlId", L3Network.class)).thenThrow(new NoSuchElementException());
-        when(aaiRestApiProvider.put(eq(logger), eq(NETWORK), eq("/l3-networks/l3-network/myVnfId_vlId"), payload.capture(), eq(Void.class))).thenReturn(null);
+        L3Network existingNetwork = new L3Network();
+        when(networkApi.getNetworkL3NetworksL3Network("myVnfId_vlId", null, null, null, null, null, null, null, null, null)).thenReturn(buildObservable(existingNetwork));
+        when(networkApi.createOrUpdateNetworkL3NetworksL3Network(eq("myVnfId_vlId"), payload.capture())).thenReturn(null);
         //when
         l3NetworkManager.update(VIM_ID, VNF_ID, affectedVirtualLink);
         //verify
@@ -98,11 +97,11 @@ public class TestL3NetworkManager extends TestBase {
         affectedVirtualLink.setResource(new ResourceHandle());
         affectedVirtualLink.getResource().setAdditionalData(additionalData);
         affectedVirtualLink.getResource().setResourceId("netProviderId");
-        L3Network l3Network = OBJECT_FACTORY.createL3Network();
+        L3Network l3Network = new L3Network();
         l3Network.setResourceVersion("v3");
-        l3Network.setRelationshipList(new RelationshipList());
-        when(aaiRestApiProvider.get(logger, NETWORK, "/l3-networks/l3-network/myVnfId_vlId", L3Network.class)).thenReturn(l3Network);
-        when(aaiRestApiProvider.put(eq(logger), eq(NETWORK), eq("/l3-networks/l3-network/myVnfId_vlId"), payload.capture(), eq(Void.class))).thenReturn(null);
+        l3Network.setRelationshipList(new ArrayList<>());
+        when(networkApi.getNetworkL3NetworksL3Network("myVnfId_vlId", null, null, null, null, null, null, null, null, null)).thenReturn(buildObservable(l3Network));
+        when(networkApi.createOrUpdateNetworkL3NetworksL3Network(eq("myVnfId_vlId"), payload.capture())).thenReturn(null);
         //when
         l3NetworkManager.update(VIM_ID, VNF_ID, affectedVirtualLink);
         //verify
@@ -126,10 +125,13 @@ public class TestL3NetworkManager extends TestBase {
     @Test
     public void testDelete() throws Exception {
         affectedVirtualLink.setId("vlId");
+        L3Network l3Network = new L3Network();
+        l3Network.setResourceVersion("v3");
+        when(networkApi.getNetworkL3NetworksL3Network("myVnfId_vlId", null, null, null, null, null, null, null, null, null)).thenReturn(buildObservable(l3Network));
         //when
         l3NetworkManager.delete(VNF_ID, affectedVirtualLink);
         //verify
-        verify(aaiRestApiProvider).delete(logger, NETWORK, "/l3-networks/l3-network/myVnfId_vlId");
+        networkApi.deleteNetworkL3NetworksL3Network("myVnfId_vlId", "v3");
     }
 
     /**
index ef9f569..3728bdb 100644 (file)
  */
 package org.onap.vfc.nfvo.driver.vnfm.svnfm.nokia.onap.direct.notification;
 
+import java.util.ArrayList;
 import org.junit.Before;
 import org.junit.Test;
 import org.mockito.ArgumentCaptor;
 import org.mockito.Mock;
-import org.onap.aai.domain.yang.v11.LInterface;
-import org.onap.aai.domain.yang.v11.ObjectFactory;
-import org.onap.aai.domain.yang.v11.RelationshipList;
+import org.onap.aai.api.CloudInfrastructureApi;
+import org.onap.aai.model.LInterface;
 import org.onap.vfc.nfvo.driver.vnfm.svnfm.nokia.onap.direct.AAIRestApiProvider;
 import org.onap.vfc.nfvo.driver.vnfm.svnfm.nokia.vnfm.TestBase;
 import org.onap.vfc.nfvo.driver.vnfm.svnfm.nokia.vnfm.notification.ReportedAffectedCp;
 
-import java.util.NoSuchElementException;
+import static java.lang.Boolean.FALSE;
+import static java.lang.Boolean.TRUE;
 
 import static junit.framework.TestCase.assertEquals;
 import static org.mockito.Matchers.eq;
-import static org.mockito.Mockito.verify;
 import static org.mockito.Mockito.when;
-import static org.onap.vfc.nfvo.driver.vnfm.svnfm.nokia.onap.direct.AAIRestApiProvider.AAIService.CLOUD;
 import static org.onap.vfc.nfvo.driver.vnfm.svnfm.nokia.onap.direct.notification.AbstractManager.buildRelationshipData;
 import static org.onap.vfc.nfvo.driver.vnfm.svnfm.nokia.onap.direct.notification.TestGenericVnfManager.assertRelation;
 import static org.springframework.test.util.ReflectionTestUtils.setField;
 
 public class TestLInterfaceManager extends TestBase {
-    private ObjectFactory OBJECT_FACTORY = new ObjectFactory();
     private ArgumentCaptor<LInterface> payload = ArgumentCaptor.forClass(LInterface.class);
 
     @Mock
     private AAIRestApiProvider aaiRestApiProvider;
     private LInterfaceManager lInterfaceManager;
+    @Mock
+    private CloudInfrastructureApi cloudInfrastructureApi;
 
     @Before
     public void init() {
         lInterfaceManager = new LInterfaceManager(aaiRestApiProvider, cbamRestApiProvider, driverProperties);
         setField(LInterfaceManager.class, "logger", logger);
+        when(aaiRestApiProvider.getCloudInfrastructureApi()).thenReturn(cloudInfrastructureApi);
     }
 
     /**
@@ -67,22 +68,25 @@ public class TestLInterfaceManager extends TestBase {
         affectedCp.setEcpdId("ecpdId");
         affectedCp.setName("name");
         affectedCp.setCpId("cpId");
-        when(aaiRestApiProvider.get(eq(logger), eq(CLOUD), eq("/cloud-regions/cloud-region/myCloudOwnerId/myRegionName/tenants/tenant/myTenantId/vservers/vserver/serverProviderId/l-interfaces/l-interface/cpId"), eq(LInterface.class))).thenThrow(new NoSuchElementException());
-        when(aaiRestApiProvider.put(eq(logger), eq(CLOUD), eq("/cloud-regions/cloud-region/myCloudOwnerId/myRegionName/tenants/tenant/myTenantId/vservers/vserver/serverProviderId/l-interfaces/l-interface/cpId"), payload.capture(), eq(Void.class))).thenReturn(null);
+        LInterface lInterface = new LInterface();
+        lInterface.setResourceVersion("v3");
+        lInterface.setRelationshipList(new ArrayList<>());
+        when(cloudInfrastructureApi.getCloudInfrastructureCloudRegionsCloudRegionTenantsTenantVserversVserverLInterfacesLInterface("myCloudOwnerId", "myRegionName", "myTenantId", "serverProviderId", "cpId", null, null, null, null, null, null, null, null, null, null, null, null)).thenReturn(buildObservable(lInterface));
+        when(cloudInfrastructureApi.createOrUpdateCloudInfrastructureCloudRegionsCloudRegionTenantsTenantVserversVserverLInterfacesLInterface(eq("myCloudOwnerId"), eq("myRegionName"), eq("myTenantId"), eq("serverProviderId"), eq("cpId"), payload.capture())).thenReturn(null);
         //when
         lInterfaceManager.update(VNF_ID, VIM_ID, affectedCp, true);
         //verify
         LInterface actualInterface = payload.getValue();
-        assertEquals(true, actualInterface.isInMaint());
-        assertEquals(false, actualInterface.isIsIpUnnumbered());
-        assertEquals(false, actualInterface.isIsPortMirrored());
+        assertEquals(TRUE, actualInterface.isInMaint());
+        assertEquals(FALSE, actualInterface.isIsIpUnnumbered());
+        assertEquals(FALSE, actualInterface.isIsPortMirrored());
         assertEquals("name", actualInterface.getInterfaceName());
         assertEquals("cpId", actualInterface.getInterfaceId());
         assertEquals("cpdId", actualInterface.getInterfaceRole());
         assertEquals("mac", actualInterface.getMacaddr());
         assertEquals("active", actualInterface.getProvStatus());
         assertEquals(1, actualInterface.getL3InterfaceIpv4AddressList().size());
-        assertEquals(0, actualInterface.getL3InterfaceIpv6AddressList().size());
+        assertEquals(null, actualInterface.getL3InterfaceIpv6AddressList());
         assertEquals("networkProviderId", actualInterface.getL3InterfaceIpv4AddressList().get(0).getNeutronNetworkId());
         assertEquals("1.2.3.4", actualInterface.getL3InterfaceIpv4AddressList().get(0).getL3InterfaceIpv4Address());
         assertRelation(actualInterface.getRelationshipList(), "generic-vnf", buildRelationshipData("generic-vnf.vnf-id", VNF_ID));
@@ -103,22 +107,25 @@ public class TestLInterfaceManager extends TestBase {
         affectedCp.setEcpdId("ecpdId");
         affectedCp.setName("name");
         affectedCp.setCpId("cpId");
-        when(aaiRestApiProvider.get(eq(logger), eq(CLOUD), eq("/cloud-regions/cloud-region/myCloudOwnerId/myRegionName/tenants/tenant/myTenantId/vservers/vserver/serverProviderId/l-interfaces/l-interface/cpId"), eq(LInterface.class))).thenThrow(new NoSuchElementException());
-        when(aaiRestApiProvider.put(eq(logger), eq(CLOUD), eq("/cloud-regions/cloud-region/myCloudOwnerId/myRegionName/tenants/tenant/myTenantId/vservers/vserver/serverProviderId/l-interfaces/l-interface/cpId"), payload.capture(), eq(Void.class))).thenReturn(null);
+        LInterface lInterface = new LInterface();
+        lInterface.setResourceVersion("v3");
+        lInterface.setRelationshipList(new ArrayList<>());
+        when(cloudInfrastructureApi.getCloudInfrastructureCloudRegionsCloudRegionTenantsTenantVserversVserverLInterfacesLInterface("myCloudOwnerId", "myRegionName", "myTenantId", "serverProviderId", "cpId", null, null, null, null, null, null, null, null, null, null, null, null)).thenReturn(buildObservable(lInterface));
+        when(cloudInfrastructureApi.createOrUpdateCloudInfrastructureCloudRegionsCloudRegionTenantsTenantVserversVserverLInterfacesLInterface(eq("myCloudOwnerId"), eq("myRegionName"), eq("myTenantId"), eq("serverProviderId"), eq("cpId"), payload.capture())).thenReturn(null);
         //when
         lInterfaceManager.update(VNF_ID, VIM_ID, affectedCp, true);
         //verify
         LInterface actualInterface = payload.getValue();
-        assertEquals(true, actualInterface.isInMaint());
-        assertEquals(false, actualInterface.isIsIpUnnumbered());
-        assertEquals(false, actualInterface.isIsPortMirrored());
+        assertEquals(TRUE, actualInterface.isInMaint());
+        assertEquals(FALSE, actualInterface.isIsIpUnnumbered());
+        assertEquals(FALSE, actualInterface.isIsPortMirrored());
         assertEquals("name", actualInterface.getInterfaceName());
         assertEquals("cpId", actualInterface.getInterfaceId());
         assertEquals("cpdId", actualInterface.getInterfaceRole());
         assertEquals("mac", actualInterface.getMacaddr());
         assertEquals("active", actualInterface.getProvStatus());
-        assertEquals(0, actualInterface.getL3InterfaceIpv6AddressList().size());
-        assertEquals(0, actualInterface.getL3InterfaceIpv4AddressList().size());
+        assertEquals(null, actualInterface.getL3InterfaceIpv6AddressList());
+        assertEquals(null, actualInterface.getL3InterfaceIpv4AddressList());
         assertRelation(actualInterface.getRelationshipList(), "generic-vnf", buildRelationshipData("generic-vnf.vnf-id", VNF_ID));
     }
 
@@ -138,25 +145,25 @@ public class TestLInterfaceManager extends TestBase {
         affectedCp.setEcpdId("ecpdId");
         affectedCp.setName("name");
         affectedCp.setCpId("cpId");
-        LInterface lInterface = OBJECT_FACTORY.createLInterface();
+        LInterface lInterface = new LInterface();
         lInterface.setResourceVersion("v3");
-        lInterface.setRelationshipList(new RelationshipList());
-        when(aaiRestApiProvider.get(eq(logger), eq(CLOUD), eq("/cloud-regions/cloud-region/myCloudOwnerId/myRegionName/tenants/tenant/myTenantId/vservers/vserver/serverProviderId/l-interfaces/l-interface/cpId"), eq(LInterface.class))).thenReturn(lInterface);
-        when(aaiRestApiProvider.put(eq(logger), eq(CLOUD), eq("/cloud-regions/cloud-region/myCloudOwnerId/myRegionName/tenants/tenant/myTenantId/vservers/vserver/serverProviderId/l-interfaces/l-interface/cpId"), payload.capture(), eq(Void.class))).thenReturn(null);
+        lInterface.setRelationshipList(new ArrayList<>());
+        when(cloudInfrastructureApi.getCloudInfrastructureCloudRegionsCloudRegionTenantsTenantVserversVserverLInterfacesLInterface("myCloudOwnerId", "myRegionName", "myTenantId", "serverProviderId", "cpId", null, null, null, null, null, null, null, null, null, null, null, null)).thenReturn(buildObservable(lInterface));
+        when(cloudInfrastructureApi.createOrUpdateCloudInfrastructureCloudRegionsCloudRegionTenantsTenantVserversVserverLInterfacesLInterface(eq("myCloudOwnerId"), eq("myRegionName"), eq("myTenantId"), eq("serverProviderId"), eq("cpId"), payload.capture())).thenReturn(null);
         //when
         lInterfaceManager.update(VNF_ID, VIM_ID, affectedCp, true);
         //verify
         LInterface actualInterface = payload.getValue();
-        assertEquals(true, actualInterface.isInMaint());
-        assertEquals(false, actualInterface.isIsIpUnnumbered());
-        assertEquals(false, actualInterface.isIsPortMirrored());
+        assertEquals(TRUE, actualInterface.isInMaint());
+        assertEquals(FALSE, actualInterface.isIsIpUnnumbered());
+        assertEquals(FALSE, actualInterface.isIsPortMirrored());
         assertEquals("name", actualInterface.getInterfaceName());
         assertEquals("cpId", actualInterface.getInterfaceId());
         assertEquals("cpdId", actualInterface.getInterfaceRole());
         assertEquals("mac", actualInterface.getMacaddr());
         assertEquals("active", actualInterface.getProvStatus());
         assertEquals(1, actualInterface.getL3InterfaceIpv4AddressList().size());
-        assertEquals(0, actualInterface.getL3InterfaceIpv6AddressList().size());
+        assertEquals(null, actualInterface.getL3InterfaceIpv6AddressList());
         assertEquals("networkProviderId", actualInterface.getL3InterfaceIpv4AddressList().get(0).getNeutronNetworkId());
         assertEquals("1.2.3.4", actualInterface.getL3InterfaceIpv4AddressList().get(0).getL3InterfaceIpv4Address());
         assertEquals("v3", lInterface.getResourceVersion());
@@ -179,21 +186,24 @@ public class TestLInterfaceManager extends TestBase {
         affectedCp.setEcpdId("ecpdId");
         affectedCp.setName("name");
         affectedCp.setCpId("cpId");
-        when(aaiRestApiProvider.get(eq(logger), eq(CLOUD), eq("/cloud-regions/cloud-region/myCloudOwnerId/myRegionName/tenants/tenant/myTenantId/vservers/vserver/serverProviderId/l-interfaces/l-interface/cpId"), eq(LInterface.class))).thenThrow(new NoSuchElementException());
-        when(aaiRestApiProvider.put(eq(logger), eq(CLOUD), eq("/cloud-regions/cloud-region/myCloudOwnerId/myRegionName/tenants/tenant/myTenantId/vservers/vserver/serverProviderId/l-interfaces/l-interface/cpId"), payload.capture(), eq(Void.class))).thenReturn(null);
+        LInterface lInterface = new LInterface();
+        lInterface.setResourceVersion("v3");
+        lInterface.setRelationshipList(new ArrayList<>());
+        when(cloudInfrastructureApi.getCloudInfrastructureCloudRegionsCloudRegionTenantsTenantVserversVserverLInterfacesLInterface("myCloudOwnerId", "myRegionName", "myTenantId", "serverProviderId", "cpId", null, null, null, null, null, null, null, null, null, null, null, null)).thenReturn(buildObservable(lInterface));
+        when(cloudInfrastructureApi.createOrUpdateCloudInfrastructureCloudRegionsCloudRegionTenantsTenantVserversVserverLInterfacesLInterface(eq("myCloudOwnerId"), eq("myRegionName"), eq("myTenantId"), eq("serverProviderId"), eq("cpId"), payload.capture())).thenReturn(null);
         //when
         lInterfaceManager.update(VNF_ID, VIM_ID, affectedCp, false);
         //verify
         LInterface actualInterface = payload.getValue();
-        assertEquals(false, actualInterface.isInMaint());
-        assertEquals(false, actualInterface.isIsIpUnnumbered());
-        assertEquals(false, actualInterface.isIsPortMirrored());
+        assertEquals(FALSE, actualInterface.isInMaint());
+        assertEquals(FALSE, actualInterface.isIsIpUnnumbered());
+        assertEquals(FALSE, actualInterface.isIsPortMirrored());
         assertEquals("name", actualInterface.getInterfaceName());
         assertEquals("cpId", actualInterface.getInterfaceId());
         assertEquals("cpdId", actualInterface.getInterfaceRole());
         assertEquals("mac", actualInterface.getMacaddr());
         assertEquals("active", actualInterface.getProvStatus());
-        assertEquals(0, actualInterface.getL3InterfaceIpv4AddressList().size());
+        assertEquals(null, actualInterface.getL3InterfaceIpv4AddressList());
         assertEquals(1, actualInterface.getL3InterfaceIpv6AddressList().size());
         assertEquals("networkProviderId", actualInterface.getL3InterfaceIpv6AddressList().get(0).getNeutronNetworkId());
         assertEquals("::", actualInterface.getL3InterfaceIpv6AddressList().get(0).getL3InterfaceIpv6Address());
@@ -212,10 +222,14 @@ public class TestLInterfaceManager extends TestBase {
         affectedCp.setProviderId("portProviderId");
         affectedCp.setServerProviderId("serverProviderId");
         affectedCp.setNetworkProviderId("networkProviderId");
+        LInterface lInterface = new LInterface();
+        lInterface.setResourceVersion("v3");
+        lInterface.setRelationshipList(new ArrayList<>());
+        when(cloudInfrastructureApi.getCloudInfrastructureCloudRegionsCloudRegionTenantsTenantVserversVserverLInterfacesLInterface("myCloudOwnerId", "myRegionName", "myTenantId", "serverProviderId", "cpId", null, null, null, null, null, null, null, null, null, null, null, null)).thenReturn(buildObservable(lInterface));
         //when
         lInterfaceManager.delete(VIM_ID, affectedCp);
         //verify
-        verify(aaiRestApiProvider).delete(logger, CLOUD, "/cloud-regions/cloud-region/myCloudOwnerId/myRegionName/tenants/tenant/myTenantId/vservers/vserver/serverProviderId/l-interfaces/l-interface/cpId");
+        cloudInfrastructureApi.deleteCloudInfrastructureCloudRegionsCloudRegionTenantsTenantVserversVserverLInterfacesLInterface("myCloudOwnerId", "myRegionName", "myTenantId", "serverProviderId", "cpId", "v3");
     }
 
     /**
index 87a1149..8b41c3f 100644 (file)
@@ -21,17 +21,15 @@ import org.junit.Before;
 import org.junit.Test;
 import org.mockito.ArgumentCaptor;
 import org.mockito.Mock;
-import org.onap.aai.domain.yang.v11.ObjectFactory;
-import org.onap.aai.domain.yang.v11.Vnfc;
+import org.onap.aai.api.NetworkApi;
+import org.onap.aai.model.Vnfc;
 import org.onap.vfc.nfvo.driver.vnfm.svnfm.nokia.onap.direct.AAIRestApiProvider;
 import org.onap.vfc.nfvo.driver.vnfm.svnfm.nokia.vnfm.TestBase;
 
-import java.util.NoSuchElementException;
-
 import static junit.framework.TestCase.assertEquals;
 import static org.mockito.Matchers.eq;
+import static org.mockito.Mockito.verify;
 import static org.mockito.Mockito.when;
-import static org.onap.vfc.nfvo.driver.vnfm.svnfm.nokia.onap.direct.AAIRestApiProvider.AAIService.NETWORK;
 import static org.onap.vfc.nfvo.driver.vnfm.svnfm.nokia.onap.direct.notification.AbstractManager.buildRelationshipData;
 import static org.onap.vfc.nfvo.driver.vnfm.svnfm.nokia.onap.direct.notification.TestGenericVnfManager.assertRelation;
 import static org.onap.vfc.nfvo.driver.vnfm.svnfm.nokia.vnfm.LifecycleManager.getCloudOwner;
@@ -39,17 +37,19 @@ import static org.onap.vfc.nfvo.driver.vnfm.svnfm.nokia.vnfm.LifecycleManager.ge
 import static org.springframework.test.util.ReflectionTestUtils.setField;
 
 public class TestVnfcManager extends TestBase {
-    private ObjectFactory OBJECT_FACTORY = new ObjectFactory();
     private ArgumentCaptor<Vnfc> payload = ArgumentCaptor.forClass(Vnfc.class);
 
     @Mock
     private AAIRestApiProvider aaiRestApiProvider;
     private VnfcManager vnfcManager;
+    @Mock
+    private NetworkApi networkApi;
 
     @Before
     public void init() {
         vnfcManager = new VnfcManager(aaiRestApiProvider, cbamRestApiProvider, driverProperties);
         setField(VnfcManager.class, "logger", logger);
+        when(aaiRestApiProvider.getNetworkApi()).thenReturn(networkApi);
     }
 
     /**
@@ -61,8 +61,9 @@ public class TestVnfcManager extends TestBase {
         affectedVnfc.setComputeResource(new ResourceHandle());
         affectedVnfc.getComputeResource().setResourceId("serverProviderId");
         affectedVnfc.setId("vnfcId");
-        when(aaiRestApiProvider.get(eq(logger), eq(NETWORK), eq("/vnfcs/vnfc/myVnfId_vnfcId"), eq(Vnfc.class))).thenThrow(new NoSuchElementException());
-        when(aaiRestApiProvider.put(eq(logger), eq(NETWORK), eq("/vnfcs/vnfc/myVnfId_vnfcId"), payload.capture(), eq(Void.class))).thenReturn(null);
+        Vnfc existingVnfc = new Vnfc();
+        when(networkApi.getNetworkVnfcsVnfc("myVnfId_vnfcId", null, null, null, null, null, null, null, null, null)).thenReturn(buildObservable(existingVnfc));
+        when(networkApi.createOrUpdateNetworkVnfcsVnfc(eq("myVnfId_vnfcId"), payload.capture())).thenReturn(null);
         //when
         vnfcManager.update(VIM_ID, "myTenantPrivderId", VNF_ID, affectedVnfc, true);
         //verify
@@ -88,12 +89,14 @@ public class TestVnfcManager extends TestBase {
         affectedVnfc.setComputeResource(new ResourceHandle());
         affectedVnfc.getComputeResource().setResourceId("serverProviderId");
         affectedVnfc.setId("vnfcId");
-        when(aaiRestApiProvider.get(eq(logger), eq(NETWORK), eq("/vnfcs/vnfc/myVnfId_vnfcId"), eq(Vnfc.class))).thenThrow(new NoSuchElementException());
-        when(aaiRestApiProvider.put(eq(logger), eq(NETWORK), eq("/vnfcs/vnfc/myVnfId_vnfcId"), payload.capture(), eq(Void.class))).thenReturn(null);
+        Vnfc existingVnfc = new Vnfc();
+        existingVnfc.setResourceVersion("v3");
+        existingVnfc.setVnfcName("myVnfId_vnfcId");
+        when(networkApi.getNetworkVnfcsVnfc("myVnfId_vnfcId", null, null, null, null, null, null, null, null, null)).thenReturn(buildObservable(existingVnfc));
         //when
         vnfcManager.delete(VNF_ID, affectedVnfc);
         //verify
-        aaiRestApiProvider.delete(logger, NETWORK, "/vnfcs/vnfc/myVnfId_vnfcId");
+        verify(networkApi).deleteNetworkVnfcsVnfc("myVnfId_vnfcId", "v3");
     }
 
     /**
index bb5d1d3..68f5ab5 100644 (file)
@@ -20,22 +20,22 @@ import com.google.gson.JsonObject;
 import com.nokia.cbam.lcm.v32.model.AffectedVirtualStorage;
 import com.nokia.cbam.lcm.v32.model.AffectedVnfc;
 import com.nokia.cbam.lcm.v32.model.ResourceHandle;
+import java.util.ArrayList;
+import java.util.List;
 import org.junit.Before;
 import org.junit.Test;
 import org.mockito.ArgumentCaptor;
 import org.mockito.Mock;
-import org.onap.aai.domain.yang.v11.*;
+import org.onap.aai.api.CloudInfrastructureApi;
+import org.onap.aai.model.Relationship;
+import org.onap.aai.model.Vserver;
 import org.onap.vfc.nfvo.driver.vnfm.svnfm.nokia.onap.direct.AAIRestApiProvider;
 import org.onap.vfc.nfvo.driver.vnfm.svnfm.nokia.vnfm.TestBase;
 
-import java.util.ArrayList;
-import java.util.List;
-import java.util.NoSuchElementException;
-
 import static junit.framework.TestCase.assertEquals;
 import static org.mockito.Matchers.eq;
+import static org.mockito.Mockito.verify;
 import static org.mockito.Mockito.when;
-import static org.onap.vfc.nfvo.driver.vnfm.svnfm.nokia.onap.direct.AAIRestApiProvider.AAIService.CLOUD;
 import static org.onap.vfc.nfvo.driver.vnfm.svnfm.nokia.onap.direct.notification.AbstractManager.buildRelationshipData;
 import static org.onap.vfc.nfvo.driver.vnfm.svnfm.nokia.onap.direct.notification.TestGenericVnfManager.assertRelation;
 import static org.onap.vfc.nfvo.driver.vnfm.svnfm.nokia.vnfm.LifecycleManager.getCloudOwner;
@@ -43,17 +43,19 @@ import static org.onap.vfc.nfvo.driver.vnfm.svnfm.nokia.vnfm.LifecycleManager.ge
 import static org.springframework.test.util.ReflectionTestUtils.setField;
 
 public class TestVserverManager extends TestBase {
-    private ObjectFactory OBJECT_FACTORY = new ObjectFactory();
     private ArgumentCaptor<Vserver> payload = ArgumentCaptor.forClass(Vserver.class);
 
     @Mock
     private AAIRestApiProvider aaiRestApiProvider;
     private VserverManager vserverManager;
+    @Mock
+    private CloudInfrastructureApi cloudInfrastructureApi;
 
     @Before
     public void init() {
         vserverManager = new VserverManager(aaiRestApiProvider, cbamRestApiProvider, driverProperties);
         setField(VserverManager.class, "logger", logger);
+        when(aaiRestApiProvider.getCloudInfrastructureApi()).thenReturn(cloudInfrastructureApi);
     }
 
     /**
@@ -89,12 +91,12 @@ public class TestVserverManager extends TestBase {
         affectedVnfc.setStorageResourceIds(new ArrayList<>());
         affectedVnfc.getStorageResourceIds().add("sId");
 
-        String url = "/cloud-regions/cloud-region/myCloudOwnerId/myRegionName/tenants/tenant/myTenantId/vservers/vserver/serverProviderId";
+        String url = "/cloud-regions/cloud-region///tenants/tenant//vservers/vserver/";
 
-        Vserver existingVserver = OBJECT_FACTORY.createVserver();
-        existingVserver.setVolumes(new Volumes());
-        when(aaiRestApiProvider.get(eq(logger), eq(CLOUD), eq(url), eq(Vserver.class))).thenReturn(existingVserver);
-        when(aaiRestApiProvider.put(eq(logger), eq(CLOUD), eq(url), payload.capture(), eq(Void.class))).thenReturn(null);
+        Vserver existingVserver = new Vserver();
+        existingVserver.setVolumes(new ArrayList<>());
+        when(cloudInfrastructureApi.getCloudInfrastructureCloudRegionsCloudRegionTenantsTenantVserversVserver("myCloudOwnerId", "myRegionName", "myTenantId", "serverProviderId", null, null, null, null, null, null, null, null, null)).thenReturn(buildObservable(existingVserver));
+        when(cloudInfrastructureApi.createOrUpdateCloudInfrastructureCloudRegionsCloudRegionTenantsTenantVserversVserver(eq("myCloudOwnerId"), eq("myRegionName"), eq("myTenantId"), eq("serverProviderId"), payload.capture())).thenReturn(null);
         //when
         vserverManager.update(VIM_ID, VNF_ID, affectedVnfc, affectedStorages, true);
         //verify
@@ -103,8 +105,8 @@ public class TestVserverManager extends TestBase {
         assertEquals("active", vserver.getProvStatus());
         assertEquals("serverName", vserver.getVserverName());
         assertEquals("url", vserver.getVserverSelflink());
-        assertEquals(1, vserver.getVolumes().getVolume().size());
-        assertEquals("storageProviderId", vserver.getVolumes().getVolume().get(0).getVolumeId());
+        assertEquals(1, vserver.getVolumes().size());
+        assertEquals("storageProviderId", vserver.getVolumes().get(0).getVolumeId());
     }
 
     /**
@@ -130,9 +132,10 @@ public class TestVserverManager extends TestBase {
         affectedVnfc.setStorageResourceIds(new ArrayList<>());
         affectedVnfc.getStorageResourceIds().add("sId");
 
-        String url = "/cloud-regions/cloud-region/myCloudOwnerId/myRegionName/tenants/tenant/myTenantId/vservers/vserver/serverProviderId";
-        when(aaiRestApiProvider.get(eq(logger), eq(CLOUD), eq(url), eq(Vserver.class))).thenThrow(new NoSuchElementException());
-        when(aaiRestApiProvider.put(eq(logger), eq(CLOUD), eq(url), payload.capture(), eq(Void.class))).thenReturn(null);
+        Vserver existingVserver = new Vserver();
+        existingVserver.setVolumes(new ArrayList<>());
+        when(cloudInfrastructureApi.getCloudInfrastructureCloudRegionsCloudRegionTenantsTenantVserversVserver("myCloudOwnerId", "myRegionName", "myTenantId", "serverProviderId", null, null, null, null, null, null, null, null, null)).thenReturn(buildObservable(existingVserver));
+        when(cloudInfrastructureApi.createOrUpdateCloudInfrastructureCloudRegionsCloudRegionTenantsTenantVserversVserver(eq("myCloudOwnerId"), eq("myRegionName"), eq("myTenantId"), eq("serverProviderId"), payload.capture())).thenReturn(null);
         //when
         vserverManager.update(VIM_ID, VNF_ID, affectedVnfc, affectedStorages, true);
         //verify
@@ -141,8 +144,8 @@ public class TestVserverManager extends TestBase {
         assertEquals("active", vserver.getProvStatus());
         assertEquals("serverName", vserver.getVserverName());
         assertEquals("unknown", vserver.getVserverSelflink());
-        assertEquals(1, vserver.getVolumes().getVolume().size());
-        assertEquals("storageProviderId", vserver.getVolumes().getVolume().get(0).getVolumeId());
+        assertEquals(1, vserver.getVolumes().size());
+        assertEquals("storageProviderId", vserver.getVolumes().get(0).getVolumeId());
     }
 
     /**
@@ -166,9 +169,10 @@ public class TestVserverManager extends TestBase {
         affectedVnfc.setStorageResourceIds(new ArrayList<>());
         affectedVnfc.getStorageResourceIds().add("sId");
 
-        String url = "/cloud-regions/cloud-region/myCloudOwnerId/myRegionName/tenants/tenant/myTenantId/vservers/vserver/serverProviderId";
-        when(aaiRestApiProvider.get(eq(logger), eq(CLOUD), eq(url), eq(Vserver.class))).thenThrow(new NoSuchElementException());
-        when(aaiRestApiProvider.put(eq(logger), eq(CLOUD), eq(url), payload.capture(), eq(Void.class))).thenReturn(null);
+        Vserver existingVserver = new Vserver();
+        existingVserver.setVolumes(new ArrayList<>());
+        when(cloudInfrastructureApi.getCloudInfrastructureCloudRegionsCloudRegionTenantsTenantVserversVserver("myCloudOwnerId", "myRegionName", "myTenantId", "serverProviderId", null, null, null, null, null, null, null, null, null)).thenReturn(buildObservable(existingVserver));
+        when(cloudInfrastructureApi.createOrUpdateCloudInfrastructureCloudRegionsCloudRegionTenantsTenantVserversVserver(eq("myCloudOwnerId"), eq("myRegionName"), eq("myTenantId"), eq("serverProviderId"), payload.capture())).thenReturn(null);
         //when
         vserverManager.update(VIM_ID, VNF_ID, affectedVnfc, affectedStorages, true);
         //verify
@@ -177,8 +181,8 @@ public class TestVserverManager extends TestBase {
         assertEquals("active", vserver.getProvStatus());
         assertEquals("serverName", vserver.getVserverName());
         assertEquals("unknown", vserver.getVserverSelflink());
-        assertEquals(1, vserver.getVolumes().getVolume().size());
-        assertEquals("storageProviderId", vserver.getVolumes().getVolume().get(0).getVolumeId());
+        assertEquals(1, vserver.getVolumes().size());
+        assertEquals("storageProviderId", vserver.getVolumes().get(0).getVolumeId());
     }
 
     /**
@@ -195,9 +199,10 @@ public class TestVserverManager extends TestBase {
         affectedVnfc.getComputeResource().setAdditionalData(additionalData);
         affectedVnfc.setId("vnfcId");
         List<AffectedVirtualStorage> affectedStorages = new ArrayList<>();
-        String url = "/cloud-regions/cloud-region/myCloudOwnerId/myRegionName/tenants/tenant/myTenantId/vservers/vserver/serverProviderId";
-        when(aaiRestApiProvider.get(eq(logger), eq(CLOUD), eq(url), eq(Vserver.class))).thenThrow(new NoSuchElementException());
-        when(aaiRestApiProvider.put(eq(logger), eq(CLOUD), eq(url), payload.capture(), eq(Void.class))).thenReturn(null);
+        Vserver existingVserver = new Vserver();
+        existingVserver.setVolumes(new ArrayList<>());
+        when(cloudInfrastructureApi.getCloudInfrastructureCloudRegionsCloudRegionTenantsTenantVserversVserver("myCloudOwnerId", "myRegionName", "myTenantId", "serverProviderId", null, null, null, null, null, null, null, null, null)).thenReturn(buildObservable(existingVserver));
+        when(cloudInfrastructureApi.createOrUpdateCloudInfrastructureCloudRegionsCloudRegionTenantsTenantVserversVserver(eq("myCloudOwnerId"), eq("myRegionName"), eq("myTenantId"), eq("serverProviderId"), payload.capture())).thenReturn(null);
         //when
         vserverManager.update(VIM_ID, VNF_ID, affectedVnfc, affectedStorages, true);
         //verify
@@ -206,7 +211,7 @@ public class TestVserverManager extends TestBase {
         assertEquals("active", vserver.getProvStatus());
         assertEquals("serverName", vserver.getVserverName());
         assertEquals("unknown", vserver.getVserverSelflink());
-        assertEquals(0, vserver.getVolumes().getVolume().size());
+        assertEquals(0, vserver.getVolumes().size());
     }
 
     /**
@@ -222,18 +227,23 @@ public class TestVserverManager extends TestBase {
         additionalData.addProperty("tenantId", "myTenantId");
         affectedVnfc.getComputeResource().setAdditionalData(additionalData);
         affectedVnfc.setId("vnfcId");
+        Vserver existingVserver = new Vserver();
+        existingVserver.setResourceVersion("v3");
+        existingVserver.setVserverId("serverProviderId");
+        when(cloudInfrastructureApi.getCloudInfrastructureCloudRegionsCloudRegionTenantsTenantVserversVserver("myCloudOwnerId", "myRegionName", "myTenantId", "serverProviderId", null, null, null, null, null, null, null, null, null)).thenReturn(buildObservable(existingVserver));
+        when(cloudInfrastructureApi.createOrUpdateCloudInfrastructureCloudRegionsCloudRegionTenantsTenantVserversVserver(eq("myCloudOwnerId"), eq("myRegionName"), eq("myTenantId"), eq("serverProviderId"), payload.capture())).thenReturn(null);
+
         //when
         vserverManager.delete(VIM_ID, affectedVnfc);
         //verify
-        String url = "/cloud-regions/cloud-region/myCloudOwnerId/myRegionName/tenants/tenant/myTenantId/vservers/vserver/serverProviderId";
-        aaiRestApiProvider.delete(logger, CLOUD, url);
+        verify(cloudInfrastructureApi).deleteCloudInfrastructureCloudRegionsCloudRegionTenantsTenantVserversVserver("myCloudOwnerId", "myRegionName", "myTenantId", "serverProviderId", "v3");
     }
 
     @Test
     public void testLinks() {
         Relationship relationship = VserverManager.linkTo(VIM_ID, "myTenantPrivderId", "serverProviderId");
-        RelationshipList relationships = new RelationshipList();
-        relationships.getRelationship().add(relationship);
+        List<Relationship> relationships = new ArrayList<>();
+        relationships.add(relationship);
         assertRelation(relationships, "vserver",
                 buildRelationshipData("cloud-region.cloud-owner", getCloudOwner(VIM_ID)),
                 buildRelationshipData("cloud-region.cloud-region-id", getRegionName(VIM_ID)),
index 53e8f8d..6fc6198 100644 (file)
@@ -21,6 +21,10 @@ import com.google.gson.JsonObject;
 import com.nokia.cbam.lcm.v32.model.*;
 import com.nokia.cbam.lcm.v32.model.VnfInfo;
 import io.reactivex.Observable;
+import java.nio.file.Paths;
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.List;
 import org.junit.Before;
 import org.junit.Test;
 import org.mockito.ArgumentCaptor;
@@ -34,12 +38,8 @@ import org.onap.vnfmdriver.model.*;
 import org.onap.vnfmdriver.model.ScaleDirection;
 import retrofit2.Call;
 
-import java.nio.file.Paths;
-import java.util.ArrayList;
-import java.util.Iterator;
-import java.util.List;
-
 import static java.nio.file.Files.readAllBytes;
+
 import static junit.framework.TestCase.*;
 import static org.mockito.Mockito.*;
 import static org.onap.vfc.nfvo.driver.vnfm.svnfm.nokia.vnfm.CbamRestApiProvider.NOKIA_LCM_API_VERSION;
index 4fbae45..a701a15 100644 (file)
@@ -27,6 +27,8 @@ import com.nokia.cbam.lcm.v32.model.ChangeType;
 import com.nokia.cbam.lcm.v32.model.*;
 import com.nokia.cbam.lcm.v32.model.OperationType;
 import com.nokia.cbam.lcm.v32.model.ScaleDirection;
+import java.util.ArrayList;
+import java.util.List;
 import org.junit.Before;
 import org.junit.Test;
 import org.mockito.ArgumentCaptor;
@@ -36,11 +38,9 @@ import org.onap.vfc.nfvo.driver.vnfm.svnfm.nokia.vnfm.notification.ReportedAffec
 import org.onap.vnfmdriver.model.*;
 import org.threeten.bp.OffsetDateTime;
 
-import java.util.ArrayList;
-import java.util.List;
-
 import static java.util.Optional.empty;
 import static java.util.Optional.of;
+
 import static junit.framework.TestCase.*;
 import static org.mockito.Matchers.any;
 import static org.mockito.Matchers.eq;
index b09a11b..8d344c5 100644 (file)
@@ -15,6 +15,8 @@
  */
 package org.onap.vfc.nfvo.driver.vnfm.svnfm.nokia.onap.vfc;
 
+import java.io.ByteArrayInputStream;
+import java.io.IOException;
 import org.apache.http.HttpHeaders;
 import org.apache.http.client.methods.HttpGet;
 import org.junit.Assert;
@@ -29,9 +31,6 @@ import org.onap.vfccatalog.model.VnfPkgDetailInfo;
 import org.onap.vfccatalog.model.VnfPkgInfo;
 import retrofit2.Call;
 
-import java.io.ByteArrayInputStream;
-import java.io.IOException;
-
 import static junit.framework.TestCase.assertEquals;
 import static junit.framework.TestCase.fail;
 import static org.mockito.Mockito.verify;
index 9c9f795..8ba697d 100644 (file)
  */
 package org.onap.vfc.nfvo.driver.vnfm.svnfm.nokia.packagetransformer;
 
-import org.junit.Test;
-import org.onap.vfc.nfvo.driver.vnfm.svnfm.nokia.util.TestUtil;
-import org.onap.vfc.nfvo.driver.vnfm.svnfm.nokia.vnfm.TestBase;
-
 import java.io.ByteArrayInputStream;
 import java.io.ByteArrayOutputStream;
 import java.io.PrintStream;
+import org.junit.Test;
+import org.onap.vfc.nfvo.driver.vnfm.svnfm.nokia.util.TestUtil;
+import org.onap.vfc.nfvo.driver.vnfm.svnfm.nokia.vnfm.TestBase;
 
 import static junit.framework.TestCase.assertEquals;
 import static org.mockito.Mockito.when;
index 2cd0aa1..a97ee4f 100644 (file)
  */
 package org.onap.vfc.nfvo.driver.vnfm.svnfm.nokia.packagetransformer;
 
+import java.util.NoSuchElementException;
 import org.junit.Before;
 import org.junit.Test;
 import org.onap.vfc.nfvo.driver.vnfm.svnfm.nokia.util.TestUtil;
 import org.onap.vfc.nfvo.driver.vnfm.svnfm.nokia.vnfm.TestBase;
 
-import java.util.NoSuchElementException;
-
 import static junit.framework.TestCase.assertEquals;
 import static junit.framework.TestCase.fail;
 import static org.mockito.Mockito.verify;
index 218c478..8f8cc8c 100644 (file)
 package org.onap.vfc.nfvo.driver.vnfm.svnfm.nokia.restapi;
 
 import com.google.common.collect.Lists;
+import java.io.ByteArrayInputStream;
+import java.io.ByteArrayOutputStream;
+import java.io.IOException;
+import java.io.PrintStream;
+import java.util.Arrays;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.Part;
 import org.apache.http.entity.ContentType;
 import org.junit.Before;
 import org.junit.Test;
@@ -32,14 +39,6 @@ import org.springframework.http.HttpHeaders;
 import org.springframework.http.HttpStatus;
 import org.springframework.mock.web.DelegatingServletOutputStream;
 
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.Part;
-import java.io.ByteArrayInputStream;
-import java.io.ByteArrayOutputStream;
-import java.io.IOException;
-import java.io.PrintStream;
-import java.util.Arrays;
-
 import static junit.framework.TestCase.*;
 import static org.mockito.Matchers.any;
 import static org.mockito.Matchers.eq;
index 6b04d69..dbbad3f 100644 (file)
@@ -29,6 +29,7 @@ import org.onap.vnfmdriver.model.VnfScaleRequest;
 import org.onap.vnfmdriver.model.VnfTerminateRequest;
 
 import static java.util.Optional.empty;
+
 import static org.apache.http.HttpStatus.SC_CREATED;
 import static org.mockito.Mockito.verify;
 import static org.springframework.test.util.ReflectionTestUtils.setField;
index fc6b97b..67842f6 100644 (file)
@@ -57,7 +57,7 @@ public class TestLcnApi extends TestBase {
     @Test
     public void testHandleLcn() {
         //when
-        lcnApi.handleLcn(lcn, httpResponse);
+        lcnApi.handleLcn(lcn);
         //verify
         verify(lcnManager).handleLcn(lcn);
         verify(logger).info("REST: handle LCN");
index 638f723..f9b6f3c 100644 (file)
@@ -16,6 +16,7 @@
 
 package org.onap.vfc.nfvo.driver.vnfm.svnfm.nokia.restapi;
 
+import javax.servlet.ServletOutputStream;
 import org.junit.Before;
 import org.junit.Test;
 import org.mockito.InjectMocks;
@@ -24,8 +25,6 @@ import org.onap.vfc.nfvo.driver.vnfm.svnfm.nokia.vnfm.TestBase;
 import org.springframework.http.HttpHeaders;
 import org.springframework.http.MediaType;
 
-import javax.servlet.ServletOutputStream;
-
 import static org.mockito.Mockito.verify;
 import static org.mockito.Mockito.when;
 import static org.springframework.test.util.ReflectionTestUtils.setField;
index 6096802..f88305a 100644 (file)
@@ -21,17 +21,16 @@ import com.google.common.collect.Sets;
 import com.google.gson.JsonElement;
 import com.google.gson.JsonObject;
 import com.google.gson.JsonParser;
-import junit.framework.TestCase;
-import org.junit.Test;
-import org.onap.vfc.nfvo.driver.vnfm.svnfm.nokia.vnfm.TestBase;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RequestMethod;
-
 import java.lang.reflect.Method;
 import java.util.HashSet;
 import java.util.Map;
 import java.util.NoSuchElementException;
 import java.util.Set;
+import junit.framework.TestCase;
+import org.junit.Test;
+import org.onap.vfc.nfvo.driver.vnfm.svnfm.nokia.vnfm.TestBase;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestMethod;
 
 import static org.onap.vfc.nfvo.driver.vnfm.svnfm.nokia.util.CbamUtils.child;
 import static org.onap.vfc.nfvo.driver.vnfm.svnfm.nokia.util.TestUtil.loadFile;
index 6bcce07..22a9d06 100644 (file)
 package org.onap.vfc.nfvo.driver.vnfm.svnfm.nokia.spring;
 
 import com.nokia.cbam.lcm.v32.model.*;
-import junit.framework.TestCase;
 import org.junit.Test;
 import org.springframework.boot.autoconfigure.http.HttpMessageConverters;
-import org.springframework.http.HttpHeaders;
 import org.springframework.http.HttpInputMessage;
 import org.springframework.http.MediaType;
-import org.springframework.http.converter.HttpMessageConverter;
+import org.springframework.http.converter.json.GsonHttpMessageConverter;
 import org.springframework.mock.http.MockHttpInputMessage;
 import org.springframework.mock.http.MockHttpOutputMessage;
+import org.threeten.bp.OffsetDateTime;
 
-import java.io.IOException;
-import java.io.InputStream;
-
+import static com.google.common.collect.Iterables.filter;
 import static junit.framework.TestCase.assertEquals;
 
 public class TestRealConfig {
@@ -41,22 +38,26 @@ public class TestRealConfig {
     public void test() throws Exception {
         HttpMessageConverters converters = new RealConfig().customConverters();
         //verify
-        converters.getConverters().get(0).canRead(VnfIdentifierCreationNotification.class, MediaType.APPLICATION_JSON);
-        converters.getConverters().get(0).canRead(VnfIdentifierDeletionNotification.class, MediaType.APPLICATION_JSON);
-        converters.getConverters().get(0).canRead(VnfInfoAttributeValueChangeNotification.class, MediaType.APPLICATION_JSON);
-        converters.getConverters().get(0).canRead(VnfLifecycleChangeNotification.class, MediaType.APPLICATION_JSON);
-        converters.getConverters().get(0).canRead(String.class, MediaType.APPLICATION_JSON);
+        GsonHttpMessageConverter httpMessageConverter1 = filter(converters.getConverters(), GsonHttpMessageConverter.class).iterator().next();
+        httpMessageConverter1.canRead(VnfIdentifierCreationNotification.class, MediaType.APPLICATION_JSON);
+        httpMessageConverter1.canRead(VnfIdentifierDeletionNotification.class, MediaType.APPLICATION_JSON);
+        httpMessageConverter1.canRead(VnfInfoAttributeValueChangeNotification.class, MediaType.APPLICATION_JSON);
+        httpMessageConverter1.canRead(VnfLifecycleChangeNotification.class, MediaType.APPLICATION_JSON);
+        httpMessageConverter1.canRead(String.class, MediaType.APPLICATION_JSON);
 
-        HttpMessageConverter<VnfLifecycleChangeNotification> httpMessageConverter = (HttpMessageConverter<VnfLifecycleChangeNotification>) converters.getConverters().get(0);
         MockHttpOutputMessage out = new MockHttpOutputMessage();
         VnfLifecycleChangeNotification not = new VnfLifecycleChangeNotification();
         not.setNotificationType(VnfNotificationType.VNFLIFECYCLECHANGENOTIFICATION);
         not.setVnfInstanceId("vnfId");
-        httpMessageConverter.write(not, MediaType.APPLICATION_JSON, out);
+        OffsetDateTime now = OffsetDateTime.now();
+        not.setTimestamp(now);
+        httpMessageConverter1.write(not, MediaType.APPLICATION_JSON, out);
         String write = out.getBodyAsString();
         HttpInputMessage x = new MockHttpInputMessage(write.getBytes());
-        VnfLifecycleChangeNotification deserialized = (VnfLifecycleChangeNotification) httpMessageConverter.read(VnfLifecycleChangeNotification.class, x);
+        VnfLifecycleChangeNotification deserialized = (VnfLifecycleChangeNotification) httpMessageConverter1.read(VnfLifecycleChangeNotification.class, x);
         assertEquals("vnfId", deserialized.getVnfInstanceId());
+        assertEquals(now, deserialized.getTimestamp());
+
     }
 
 }
index 39a8e64..d1cbbb6 100644 (file)
@@ -16,6 +16,8 @@
 
 package org.onap.vfc.nfvo.driver.vnfm.svnfm.nokia.spring;
 
+import java.util.HashMap;
+import java.util.List;
 import org.junit.Test;
 import org.mockito.Mockito;
 import org.springframework.security.config.annotation.ObjectPostProcessor;
@@ -27,9 +29,6 @@ import org.springframework.security.web.util.matcher.AnyRequestMatcher;
 import org.springframework.security.web.util.matcher.RequestMatcher;
 import org.springframework.test.util.ReflectionTestUtils;
 
-import java.util.HashMap;
-import java.util.List;
-
 import static junit.framework.TestCase.assertTrue;
 
 public class TestSecurityConfig {
index 2dc33f3..d995fcd 100644 (file)
@@ -16,9 +16,6 @@
 
 package org.onap.vfc.nfvo.driver.vnfm.svnfm.nokia.util;
 
-import org.junit.BeforeClass;
-import org.junit.Test;
-
 import java.io.File;
 import java.io.FileInputStream;
 import java.io.IOException;
@@ -31,6 +28,8 @@ import java.security.cert.CertificateException;
 import java.util.Arrays;
 import java.util.HashSet;
 import java.util.Set;
+import org.junit.BeforeClass;
+import org.junit.Test;
 
 import static com.google.common.collect.Sets.newHashSet;
 import static org.junit.Assert.*;
index ec1ebd7..df97d4a 100644 (file)
 
 package org.onap.vfc.nfvo.driver.vnfm.svnfm.nokia.util;
 
-import org.junit.Test;
-
 import java.util.Base64;
 import java.util.HashSet;
 import java.util.Set;
+import org.junit.Test;
 
 import static org.junit.Assert.*;
 
index 4109b13..a99e8d8 100644 (file)
 package org.onap.vfc.nfvo.driver.vnfm.svnfm.nokia.vnfm;
 
 import com.google.common.io.ByteStreams;
-import org.eclipse.jetty.server.NetworkTrafficServerConnector;
-import org.eclipse.jetty.server.Server;
-import org.eclipse.jetty.server.handler.AbstractHandler;
-import org.eclipse.jetty.util.ssl.SslContextFactory;
-
-import javax.servlet.ServletException;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
 import java.io.IOException;
 import java.nio.file.Path;
 import java.nio.file.Paths;
@@ -34,6 +26,13 @@ import java.util.concurrent.ExecutorService;
 import java.util.concurrent.Executors;
 import java.util.concurrent.Future;
 import java.util.concurrent.TimeUnit;
+import javax.servlet.ServletException;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import org.eclipse.jetty.server.NetworkTrafficServerConnector;
+import org.eclipse.jetty.server.Server;
+import org.eclipse.jetty.server.handler.AbstractHandler;
+import org.eclipse.jetty.util.ssl.SslContextFactory;
 
 public class HttpTestServer {
     public Server _server;
index d1afeac..00cb83b 100644 (file)
@@ -18,15 +18,14 @@ package org.onap.vfc.nfvo.driver.vnfm.svnfm.nokia.vnfm;
 
 import com.google.common.collect.Maps;
 import com.nokia.cbam.lcm.v32.model.NetworkAddress;
+import java.util.List;
+import java.util.Map;
+import java.util.UUID;
 import org.junit.Test;
 import pl.pojo.tester.internal.field.AbstractFieldValueChanger;
 import pl.pojo.tester.internal.field.DefaultFieldValueChanger;
 import pl.pojo.tester.internal.field.collections.map.AbstractMapFieldValueChanger;
 
-import java.util.List;
-import java.util.Map;
-import java.util.UUID;
-
 import static pl.pojo.tester.api.assertion.Assertions.assertPojoMethodsFor;
 
 
index 2489d3c..190f78e 100644 (file)
@@ -22,6 +22,16 @@ import com.nokia.cbam.lcm.v32.api.OperationExecutionsApi;
 import com.nokia.cbam.lcm.v32.api.VnfsApi;
 import com.nokia.cbam.lcn.v32.api.SubscriptionsApi;
 import io.reactivex.Observable;
+import java.io.ByteArrayInputStream;
+import java.io.ByteArrayOutputStream;
+import java.lang.reflect.Field;
+import java.util.Arrays;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.zip.ZipEntry;
+import java.util.zip.ZipInputStream;
+import javax.servlet.http.HttpServletResponse;
 import okhttp3.RequestBody;
 import okio.Buffer;
 import org.apache.commons.lang3.ArrayUtils;
@@ -36,11 +46,12 @@ import org.mockito.ArgumentCaptor;
 import org.mockito.Mock;
 import org.mockito.Mockito;
 import org.mockito.MockitoAnnotations;
-import org.onap.msb.sdk.httpclient.msb.MSBServiceClient;
+import org.onap.msb.api.ServiceResourceApi;
 import org.onap.vfc.nfvo.driver.vnfm.svnfm.nokia.api.INotificationSender;
 import org.onap.vfc.nfvo.driver.vnfm.svnfm.nokia.api.VnfmInfoProvider;
 import org.onap.vfc.nfvo.driver.vnfm.svnfm.nokia.onap.core.MsbApiProvider;
 import org.onap.vfc.nfvo.driver.vnfm.svnfm.nokia.onap.core.SelfRegistrationManager;
+import org.onap.vfc.nfvo.driver.vnfm.svnfm.nokia.onap.direct.AaiSecurityProvider;
 import org.onap.vfc.nfvo.driver.vnfm.svnfm.nokia.onap.vfc.VfcRestApiProvider;
 import org.onap.vfc.nfvo.driver.vnfm.svnfm.nokia.util.SystemFunctions;
 import org.onap.vfccatalog.api.VnfpackageApi;
@@ -52,17 +63,6 @@ import org.springframework.test.util.ReflectionTestUtils;
 import retrofit2.Call;
 import retrofit2.Response;
 
-import javax.servlet.http.HttpServletResponse;
-import java.io.ByteArrayInputStream;
-import java.io.ByteArrayOutputStream;
-import java.lang.reflect.Field;
-import java.util.Arrays;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.zip.ZipEntry;
-import java.util.zip.ZipInputStream;
-
 import static junit.framework.TestCase.assertEquals;
 import static junit.framework.TestCase.assertTrue;
 import static org.mockito.Mockito.when;
@@ -83,6 +83,8 @@ public class TestBase {
     @Mock
     protected MsbApiProvider msbApiProvider;
     @Mock
+    protected AaiSecurityProvider aaiSecurityProvider;
+    @Mock
     protected VnfmInfoProvider vnfmInfoProvider;
     @Mock
     protected VnfsApi vnfApi;
@@ -95,7 +97,7 @@ public class TestBase {
     @Mock
     protected SubscriptionsApi lcnApi;
     @Mock
-    protected MSBServiceClient msbClient;
+    protected ServiceResourceApi msbClient;
     @Mock
     protected DriverProperties driverProperties;
     @Mock
@@ -142,7 +144,7 @@ public class TestBase {
         when(cbamRestApiProvider.getCbamOperationExecutionApi(VNFM_ID)).thenReturn(operationExecutionApi);
         when(cbamRestApiProvider.getCbamLcnApi(VNFM_ID)).thenReturn(lcnApi);
         when(cbamRestApiProvider.getCbamCatalogApi(VNFM_ID)).thenReturn(cbamCatalogApi);
-        when(msbApiProvider.getMsbClient()).thenReturn(msbClient);
+        when(msbApiProvider.getMsbApi()).thenReturn(msbClient);
         when(vfcRestApiProvider.getNsLcmApi()).thenReturn(nsLcmApi);
         when(vfcRestApiProvider.getVfcCatalogApi()).thenReturn(vfcCatalogApi);
         when(systemFunctions.getHttpClient()).thenReturn(httpClient);
@@ -194,7 +196,7 @@ public class TestBase {
         return files;
     }
 
-    protected void setFieldWithPropertyAnnotation(Object obj, String key, String value) {
+    protected void setFieldWithPropertyAnnotation(Object obj, String key, Object value) {
         for (Field field : obj.getClass().getDeclaredFields()) {
             for (Value fieldValue : field.getAnnotationsByType(Value.class)) {
                 if (fieldValue.value().equals(key)) {
index 1425d97..90e064a 100644 (file)
 package org.onap.vfc.nfvo.driver.vnfm.svnfm.nokia.vnfm;
 
 import com.nokia.cbam.catalog.v1.model.CatalogAdapterVnfpackage;
+import java.io.ByteArrayInputStream;
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
 import okhttp3.Headers;
 import okhttp3.RequestBody;
 import okhttp3.ResponseBody;
@@ -33,12 +38,6 @@ import org.onap.vfc.nfvo.driver.vnfm.svnfm.nokia.api.IPackageProvider;
 import org.onap.vfc.nfvo.driver.vnfm.svnfm.nokia.util.TestUtil;
 import retrofit2.Call;
 
-import java.io.ByteArrayInputStream;
-import java.io.IOException;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.List;
-
 import static junit.framework.TestCase.*;
 import static org.junit.Assert.assertArrayEquals;
 import static org.mockito.Mockito.*;
index cb54127..e21e638 100644 (file)
@@ -21,27 +21,24 @@ import com.nokia.cbam.lcm.v32.ApiClient;
 import com.nokia.cbam.lcm.v32.api.OperationExecutionsApi;
 import com.nokia.cbam.lcm.v32.api.VnfsApi;
 import com.nokia.cbam.lcn.v32.api.SubscriptionsApi;
+import java.util.ArrayList;
+import java.util.Map;
+import javax.net.ssl.HostnameVerifier;
+import javax.net.ssl.SSLSocketFactory;
 import okhttp3.Interceptor;
-import okhttp3.OakExtractor;
 import org.junit.Before;
 import org.junit.Test;
 import org.mockito.Mock;
 import org.mockito.Mockito;
 import org.mockito.invocation.InvocationOnMock;
 import org.mockito.stubbing.Answer;
-import org.onap.msb.sdk.discovery.entity.MicroServiceFullInfo;
-import org.onap.msb.sdk.discovery.entity.NodeInfo;
+import org.onap.msb.model.MicroServiceFullInfo;
+import org.onap.msb.model.NodeInfo;
 import org.onap.vfc.nfvo.driver.vnfm.svnfm.nokia.onap.core.GenericExternalSystemInfoProvider;
 import org.onap.vfc.nfvo.driver.vnfm.svnfm.nokia.onap.core.IpMappingProvider;
 import org.onap.vnfmdriver.model.VnfmInfo;
 import org.springframework.core.env.Environment;
 
-import javax.net.ssl.HostnameVerifier;
-import javax.net.ssl.SSLSocketFactory;
-import java.util.HashSet;
-import java.util.Map;
-import java.util.Set;
-
 import static junit.framework.TestCase.assertEquals;
 import static junit.framework.TestCase.assertNotNull;
 import static org.mockito.Mockito.*;
@@ -72,7 +69,7 @@ public class TestCbamRestApiProvider extends TestBase {
     private Interceptor interceptor;
     @Mock
     private HostnameVerifier hostnameVerifier;
-    private Set<NodeInfo> nodes = new HashSet<>();
+    private java.util.List<NodeInfo> nodes = new ArrayList<>();
 
     private CbamRestApiProvider cbamRestApiProvider;
     private CbamSecurityProvider cbamSecurityProvider = spy(new CbamSecurityProvider());
@@ -102,13 +99,12 @@ public class TestCbamRestApiProvider extends TestBase {
         //when
         ApiClient cbamLcmApi = cbamRestApiProvider.buildLcmApiClient(VNFM_ID);
         //verify
-        String actual = cbamLcmApi.getAdapterBuilder().build().baseUrl().toString();
-        assertEquals("https://cbamurl:123/d/", actual);
+        assertEquals("https://cbamurl:123/d/", cbamLcmApi.getAdapterBuilder().build().baseUrl().toString());
         assertEquals(sslSocketFactoryResultCaptor.getResult(), cbamLcmApi.getOkBuilder().build().sslSocketFactory());
         Map<String, Interceptor> apiAuthorizations = cbamLcmApi.getApiAuthorizations();
         assertEquals(1, apiAuthorizations.size());
         assertEquals(interceptor, apiAuthorizations.values().iterator().next());
-        assertEquals(hostnameVerifier, OakExtractor.extract(cbamLcmApi.getOkBuilder()));
+        assertEquals(hostnameVerifier, cbamLcmApi.getOkBuilder().build().hostnameVerifier());
     }
 
     /**
@@ -130,7 +126,7 @@ public class TestCbamRestApiProvider extends TestBase {
         Map<String, Interceptor> apiAuthorizations = cbamLcmApi.getApiAuthorizations();
         assertEquals(1, apiAuthorizations.size());
         assertEquals(interceptor, apiAuthorizations.values().iterator().next());
-        assertEquals(hostnameVerifier, OakExtractor.extract(cbamLcmApi.getOkBuilder()));
+        assertEquals(hostnameVerifier, cbamLcmApi.getOkBuilder().build().hostnameVerifier());
     }
 
     /**
@@ -152,7 +148,7 @@ public class TestCbamRestApiProvider extends TestBase {
         Map<String, Interceptor> apiAuthorizations = cbamLcmApi.getApiAuthorizations();
         assertEquals(1, apiAuthorizations.size());
         assertEquals(interceptor, apiAuthorizations.values().iterator().next());
-        assertEquals(hostnameVerifier, OakExtractor.extract(cbamLcmApi.getOkBuilder()));
+        assertEquals(hostnameVerifier, cbamLcmApi.getOkBuilder().build().hostnameVerifier());
     }
 
     /**
index 17c68e4..55d949e 100644 (file)
 
 package org.onap.vfc.nfvo.driver.vnfm.svnfm.nokia.vnfm;
 
-import com.google.gson.Gson;
-import com.google.gson.JsonParseException;
-import com.google.gson.annotations.SerializedName;
-import com.nokia.cbam.lcn.v32.JSON;
-import io.reactivex.Observable;
-import okhttp3.OkHttpClient;
-import okhttp3.RequestBody;
-import okhttp3.ResponseBody;
-import org.junit.After;
-import org.junit.Before;
 import org.junit.Test;
-import retrofit2.Converter;
-import retrofit2.Retrofit;
-import retrofit2.adapter.rxjava2.RxJava2CallAdapterFactory;
-import retrofit2.converter.gson.GsonConverterFactory;
-import retrofit2.http.GET;
-import retrofit2.http.Headers;
 
-import javax.xml.bind.annotation.XmlAccessType;
-import javax.xml.bind.annotation.XmlAccessorType;
-import javax.xml.bind.annotation.XmlElement;
-import javax.xml.bind.annotation.XmlRootElement;
-import java.io.IOException;
-import java.lang.annotation.Annotation;
-import java.lang.reflect.Type;
-import java.nio.file.Files;
-import java.nio.file.Path;
-import java.nio.file.Paths;
-import java.util.Base64;
+import static junit.framework.TestCase.assertEquals;
 
-import static junit.framework.TestCase.*;
-import static org.springframework.test.util.ReflectionTestUtils.setField;
-
-interface TestService {
-    @Headers({
-            "Content-Type:application/json"
-    })
-    @GET("subscriptions")
-    Observable<TestResource> subscriptionsGet();
-}
-
-@XmlRootElement(name = "Subscription")
-@XmlAccessorType(XmlAccessType.FIELD)
-class TestResource {
-    @XmlElement(name = "id")
-    @SerializedName("id")
-    public String id = null;
-}
-
-class GsonCustomConverterFactory extends Converter.Factory {
-    private final Gson gson;
-    private final GsonConverterFactory gsonConverterFactory;
-
-    private GsonCustomConverterFactory(Gson gson) {
-        if (gson == null)
-            throw new NullPointerException("gson == null");
-        this.gson = gson;
-        this.gsonConverterFactory = GsonConverterFactory.create(gson);
-    }
-
-    public static GsonCustomConverterFactory create(Gson gson) {
-        return new GsonCustomConverterFactory(gson);
-    }
-
-    @Override
-    public Converter<ResponseBody, ?> responseBodyConverter(Type type, Annotation[] annotations, Retrofit retrofit) {
-        if (type.equals(String.class))
-            return new GsonResponseBodyConverterToString<Object>(gson, type);
-        else
-            return gsonConverterFactory.responseBodyConverter(type, annotations, retrofit);
-    }
-
-    @Override
-    public Converter<?, RequestBody> requestBodyConverter(Type type, Annotation[] parameterAnnotations, Annotation[] methodAnnotations, Retrofit retrofit) {
-        return gsonConverterFactory.requestBodyConverter(type, parameterAnnotations, methodAnnotations, retrofit);
-    }
-}
-
-class GsonResponseBodyConverterToString<T> implements Converter<ResponseBody, T> {
-    private final Gson gson;
-    private final Type type;
-
-    GsonResponseBodyConverterToString(Gson gson, Type type) {
-        this.gson = gson;
-        this.type = type;
-    }
-
-    @Override
-    public T convert(ResponseBody value) throws IOException {
-        String returned = value.string();
-        try {
-            return gson.fromJson(returned, type);
-        } catch (JsonParseException e) {
-            return (T) returned;
-        }
-    }
-}
 
 public class TestCbamSecurityProvider extends TestBase {
-    CbamSecurityProvider securityProvider = new CbamSecurityProvider() {
-    };
-
-    HttpTestServer testServer = new HttpTestServer();
-    String url;
-
-    @Before
-    public void init() throws Exception {
-        setField(securityProvider, "skipCertificateVerification", true);
-        setField(securityProvider, "skipHostnameVerification", true);
-        testServer = new HttpTestServer();
-        testServer.start();
-        url = testServer._server.getURI().toString();
-    }
-
-    @After
-    public void testServer() throws Exception {
-        testServer.stop();
-    }
-
-    /**
-     * test skipping certificate and skipping hostname verification
-     */
-    @Test
-    public void testSkipHostAndSkipCertifiacateVerification() throws Exception {
-        setField(securityProvider, "skipCertificateVerification", true);
-        setField(securityProvider, "skipHostnameVerification", true);
-        //when
-        TestResource testResource = fireRequest();
-        //verify
-        assertEquals("1234", testResource.id);
-        //when
-        securityProvider.buildTrustManager().checkClientTrusted(null, null);
-        //verify
-        //no security exception is thrown
-    }
-
-    /**
-     * test skipping certificate and doing hostname verification
-     */
-    @Test
-    public void testHostAndSkipCertifiacateVerification() throws Exception {
-        setField(securityProvider, "skipCertificateVerification", true);
-        setField(securityProvider, "skipHostnameVerification", false);
-        url = url.replace("127.0.0.1", "localhost");
-        TestResource testResource = fireRequest();
-        assertEquals("1234", testResource.id);
-    }
-
-    /**
-     * test skipping certificate and doing hostname verification
-     * (if hostname is invalid exception is propagated)
-     */
-    @Test
-    public void testHostAndSkipCertifiacateVerificationNegativeCase() throws Exception {
-        setField(securityProvider, "skipCertificateVerification", true);
-        setField(securityProvider, "skipHostnameVerification", false);
-        //url = url.replace("127.0.0.1", "localhost");
-        try {
-            fireRequest();
-            fail();
-        } catch (Exception e) {
-            assertEquals(javax.net.ssl.SSLPeerUnverifiedException.class, e.getCause().getClass());
-            assertTrue(e.getCause().getMessage().contains("Hostname 127.0.0.1 not verified"));
-        }
-    }
-
-    /**
-     * test certificate and hostname verification
-     */
-    @Test
-    public void testHostAndCertifiacateVerification() throws Exception {
-        Path jksPath = Paths.get(TestCbamTokenProvider.class.getResource("/unittests/localhost.cert.pem").toURI());
-        String cert = Base64.getEncoder().encodeToString(Files.readAllBytes(jksPath));
-        setField(securityProvider, "trustedCertificates", cert);
-        setField(securityProvider, "skipCertificateVerification", false);
-        setField(securityProvider, "skipHostnameVerification", false);
-        url = url.replace("127.0.0.1", "localhost");
-        TestResource testResource = fireRequest();
-        assertEquals("1234", testResource.id);
-    }
-
-    /**
-     * test certificate and hostname verification
-     * (not trusted certificate)
-     */
-    @Test
-    public void testHostAndCertifiacateVerificationNegative() throws Exception {
-        Path jksPath = Paths.get(TestCbamTokenProvider.class.getResource("/unittests/sample.cert.pem").toURI());
-        String cert = Base64.getEncoder().encodeToString(Files.readAllBytes(jksPath));
-        setField(securityProvider, "trustedCertificates", cert);
-        setField(securityProvider, "skipCertificateVerification", false);
-        setField(securityProvider, "skipHostnameVerification", false);
-        url = url.replace("127.0.0.1", "localhost");
-        try {
-            fireRequest();
-            fail();
-        } catch (Exception e) {
-            assertEquals(javax.net.ssl.SSLHandshakeException.class, e.getCause().getClass());
-            assertTrue(e.getCause().getMessage().contains("unable to find valid certification path to requested target"));
-        }
-    }
-
-    /**
-     * test certificate and hostname verification
-     */
-    @Test
-    public void testSkipHostAndCertifiacateVerification() throws Exception {
-        Path jksPath = Paths.get(TestCbamTokenProvider.class.getResource("/unittests/localhost.cert.pem").toURI());
-        String cert = Base64.getEncoder().encodeToString(Files.readAllBytes(jksPath));
-        setField(securityProvider, "trustedCertificates", cert);
-        setField(securityProvider, "skipCertificateVerification", false);
-        setField(securityProvider, "skipHostnameVerification", true);
-        //url = url.replace("127.0.0.1", "localhost");
-        TestResource testResource = fireRequest();
-        assertEquals("1234", testResource.id);
-    }
+    private CbamSecurityProvider securityProvider = new CbamSecurityProvider();
 
     /**
-     * empty trusted pem results in error if verification is required
+     * test property handling
      */
     @Test
-    public void testEmptyTrustStoreWhenCheckingIsRequired() throws Exception {
-        setField(securityProvider, "trustedCertificates", "");
-        setField(securityProvider, "skipCertificateVerification", false);
-        try {
-            securityProvider.buildTrustManager();
-            fail();
-        } catch (Exception e) {
-            assertEquals("If the skipCertificateVerification is set to false (default) the trustedCertificates can not be empty", e.getMessage());
-        }
-    }
-
-    /**
-     * invalid PEM results in fast fail error
-     */
-    @Test
-    public void testInvalidPem() throws Exception {
-        setField(securityProvider, "trustedCertificates", "______");
-        setField(securityProvider, "skipCertificateVerification", false);
-        try {
-            securityProvider.buildTrustManager();
-            fail();
-        } catch (Exception e) {
-            assertEquals("The trustedCertificates must be a base64 encoded collection of PEM certificates", e.getMessage());
-        }
-    }
-
-    /**
-     * invalid PEM results in fast fail error
-     */
-    @Test
-    public void testEmptyInvalidPem() throws Exception {
-        setField(securityProvider, "trustedCertificates", "a3VrdQo=");
-        setField(securityProvider, "skipCertificateVerification", false);
-        try {
-            securityProvider.buildTrustManager();
-            fail();
-        } catch (Exception e) {
-            assertEquals("No certificate can be extracted from kuku\n", e.getMessage());
-        }
-    }
-
-    /**
-     * bad certificate content results in fast fail error
-     */
-    @Test
-    public void testEmptyInvalidPemContent() throws Exception {
-        String badCert = "-----BEGIN CERTIFICATE-----\nXXXXXX\n-----END CERTIFICATE-----";
-        setField(securityProvider, "trustedCertificates", Base64.getEncoder().encodeToString(badCert.getBytes()));
-        setField(securityProvider, "skipCertificateVerification", false);
-        try {
-            securityProvider.buildTrustManager();
-            fail();
-        } catch (Exception e) {
-            assertEquals("Unable to create keystore", e.getMessage());
-        }
-    }
-
-    /**
-     * bad certificate content results in fast fail error for SSL socket factory
-     */
-    @Test
-    public void testEmptyInvalidPemContentSSl() throws Exception {
-        String badCert = "-----BEGIN CERTIFICATE-----\nXXXXXX\n-----END CERTIFICATE-----";
-        setField(securityProvider, "trustedCertificates", Base64.getEncoder().encodeToString(badCert.getBytes()));
-        setField(securityProvider, "skipCertificateVerification", false);
-        try {
-            securityProvider.buildSSLSocketFactory();
-            fail();
-        } catch (Exception e) {
-            assertEquals("Unable to create SSL socket factory", e.getMessage());
-        }
-    }
+    public void init() throws Exception {
+        setFieldWithPropertyAnnotation(securityProvider, "${skipCertificateVerification}", true);
+        setFieldWithPropertyAnnotation(securityProvider, "${skipHostnameVerification}", true);
+        setFieldWithPropertyAnnotation(securityProvider, "${trustedCertificates}", "cert");
 
-    private TestResource fireRequest() {
-        OkHttpClient client =
-                new OkHttpClient.Builder()
-                        .sslSocketFactory(securityProvider.buildSSLSocketFactory(), securityProvider.buildTrustManager())
-                        .hostnameVerifier(securityProvider.buildHostnameVerifier()).build();
-        TestService test1 = new Retrofit.Builder().baseUrl(url).client(client)
-                .addConverterFactory(GsonCustomConverterFactory.create(new JSON().getGson()))
-                .addCallAdapterFactory(RxJava2CallAdapterFactory.create()).build().create(TestService.class);
-        testServer.respones.add("{ \"id\" : \"1234\" } ");
-        testServer.codes.add(200);
-        TestService test = test1;
-        return test.subscriptionsGet().blockingFirst();
+        assertEquals(true, securityProvider.skipCertificateVerification());
+        assertEquals(true, securityProvider.skipHostnameVerification());
+        assertEquals("cert", securityProvider.trustedCertificates());
     }
 
 }
index 699a590..7c1b117 100644 (file)
@@ -16,6 +16,8 @@
 
 package org.onap.vfc.nfvo.driver.vnfm.svnfm.nokia.vnfm;
 
+import java.io.IOException;
+import java.net.URI;
 import okhttp3.Interceptor;
 import okhttp3.Request;
 import org.junit.After;
@@ -27,9 +29,6 @@ import org.mockito.Mockito;
 import org.onap.vnfmdriver.model.VnfmInfo;
 import org.springframework.http.HttpStatus;
 
-import java.io.IOException;
-import java.net.URI;
-
 import static junit.framework.TestCase.*;
 import static org.mockito.Matchers.eq;
 import static org.mockito.Mockito.verify;
diff --git a/nokiav2/driver/src/test/java/org/onap/vfc/nfvo/driver/vnfm/svnfm/nokia/vnfm/TestGenericSecurityProvider.java b/nokiav2/driver/src/test/java/org/onap/vfc/nfvo/driver/vnfm/svnfm/nokia/vnfm/TestGenericSecurityProvider.java
new file mode 100644 (file)
index 0000000..8823b2e
--- /dev/null
@@ -0,0 +1,326 @@
+/*
+ * Copyright 2016-2017, Nokia Corporation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.onap.vfc.nfvo.driver.vnfm.svnfm.nokia.vnfm;
+
+import com.google.gson.Gson;
+import com.google.gson.JsonParseException;
+import com.google.gson.annotations.SerializedName;
+import com.nokia.cbam.lcn.v32.JSON;
+import io.reactivex.Observable;
+import java.io.IOException;
+import java.lang.annotation.Annotation;
+import java.lang.reflect.Type;
+import java.nio.file.Files;
+import java.nio.file.Path;
+import java.nio.file.Paths;
+import java.util.Base64;
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlRootElement;
+import okhttp3.OkHttpClient;
+import okhttp3.RequestBody;
+import okhttp3.ResponseBody;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import retrofit2.Converter;
+import retrofit2.Retrofit;
+import retrofit2.adapter.rxjava2.RxJava2CallAdapterFactory;
+import retrofit2.converter.gson.GsonConverterFactory;
+import retrofit2.http.GET;
+import retrofit2.http.Headers;
+
+import static junit.framework.TestCase.*;
+import static org.springframework.test.util.ReflectionTestUtils.setField;
+
+interface TestService {
+    @Headers({
+            "Content-Type:application/json"
+    })
+    @GET("subscriptions")
+    Observable<TestResource> subscriptionsGet();
+}
+
+@XmlRootElement(name = "Subscription")
+@XmlAccessorType(XmlAccessType.FIELD)
+class TestResource {
+    @XmlElement(name = "id")
+    @SerializedName("id")
+    public String id = null;
+}
+
+class GsonCustomConverterFactory extends Converter.Factory {
+    private final Gson gson;
+    private final GsonConverterFactory gsonConverterFactory;
+
+    private GsonCustomConverterFactory(Gson gson) {
+        if (gson == null)
+            throw new NullPointerException("gson == null");
+        this.gson = gson;
+        this.gsonConverterFactory = GsonConverterFactory.create(gson);
+    }
+
+    public static GsonCustomConverterFactory create(Gson gson) {
+        return new GsonCustomConverterFactory(gson);
+    }
+
+    @Override
+    public Converter<ResponseBody, ?> responseBodyConverter(Type type, Annotation[] annotations, Retrofit retrofit) {
+        if (type.equals(String.class))
+            return new GsonResponseBodyConverterToString<Object>(gson, type);
+        else
+            return gsonConverterFactory.responseBodyConverter(type, annotations, retrofit);
+    }
+
+    @Override
+    public Converter<?, RequestBody> requestBodyConverter(Type type, Annotation[] parameterAnnotations, Annotation[] methodAnnotations, Retrofit retrofit) {
+        return gsonConverterFactory.requestBodyConverter(type, parameterAnnotations, methodAnnotations, retrofit);
+    }
+}
+
+class GsonResponseBodyConverterToString<T> implements Converter<ResponseBody, T> {
+    private final Gson gson;
+    private final Type type;
+
+    GsonResponseBodyConverterToString(Gson gson, Type type) {
+        this.gson = gson;
+        this.type = type;
+    }
+
+    @Override
+    public T convert(ResponseBody value) throws IOException {
+        String returned = value.string();
+        try {
+            return gson.fromJson(returned, type);
+        } catch (JsonParseException e) {
+            return (T) returned;
+        }
+    }
+}
+
+public class TestGenericSecurityProvider extends TestBase {
+    GenericSecurityProvider securityProvider = new CbamSecurityProvider() {
+    };
+
+    HttpTestServer testServer = new HttpTestServer();
+    String url;
+
+    @Before
+    public void init() throws Exception {
+        setField(securityProvider, "skipCertificateVerification", true);
+        setField(securityProvider, "skipHostnameVerification", true);
+        testServer = new HttpTestServer();
+        testServer.start();
+        url = testServer._server.getURI().toString();
+    }
+
+    @After
+    public void testServer() throws Exception {
+        testServer.stop();
+    }
+
+    /**
+     * test skipping certificate and skipping hostname verification
+     */
+    @Test
+    public void testSkipHostAndSkipCertifiacateVerification() throws Exception {
+        setField(securityProvider, "skipCertificateVerification", true);
+        setField(securityProvider, "skipHostnameVerification", true);
+        //when
+        TestResource testResource = fireRequest();
+        //verify
+        assertEquals("1234", testResource.id);
+        //when
+        securityProvider.buildTrustManager().checkClientTrusted(null, null);
+        //verify
+        //no security exception is thrown
+    }
+
+    /**
+     * test skipping certificate and doing hostname verification
+     */
+    @Test
+    public void testHostAndSkipCertifiacateVerification() throws Exception {
+        setField(securityProvider, "skipCertificateVerification", true);
+        setField(securityProvider, "skipHostnameVerification", false);
+        url = url.replace("127.0.0.1", "localhost");
+        TestResource testResource = fireRequest();
+        assertEquals("1234", testResource.id);
+    }
+
+    /**
+     * test skipping certificate and doing hostname verification
+     * (if hostname is invalid exception is propagated)
+     */
+    @Test
+    public void testHostAndSkipCertifiacateVerificationNegativeCase() throws Exception {
+        setField(securityProvider, "skipCertificateVerification", true);
+        setField(securityProvider, "skipHostnameVerification", false);
+        //url = url.replace("127.0.0.1", "localhost");
+        try {
+            fireRequest();
+            fail();
+        } catch (Exception e) {
+            assertEquals(javax.net.ssl.SSLPeerUnverifiedException.class, e.getCause().getClass());
+            assertTrue(e.getCause().getMessage().contains("Hostname 127.0.0.1 not verified"));
+        }
+    }
+
+    /**
+     * test certificate and hostname verification
+     */
+    @Test
+    public void testHostAndCertifiacateVerification() throws Exception {
+        Path jksPath = Paths.get(TestCbamTokenProvider.class.getResource("/unittests/localhost.cert.pem").toURI());
+        String cert = Base64.getEncoder().encodeToString(Files.readAllBytes(jksPath));
+        setField(securityProvider, "trustedCertificates", cert);
+        setField(securityProvider, "skipCertificateVerification", false);
+        setField(securityProvider, "skipHostnameVerification", false);
+        url = url.replace("127.0.0.1", "localhost");
+        TestResource testResource = fireRequest();
+        assertEquals("1234", testResource.id);
+    }
+
+    /**
+     * test certificate and hostname verification
+     * (not trusted certificate)
+     */
+    @Test
+    public void testHostAndCertifiacateVerificationNegative() throws Exception {
+        Path jksPath = Paths.get(TestCbamTokenProvider.class.getResource("/unittests/sample.cert.pem").toURI());
+        String cert = Base64.getEncoder().encodeToString(Files.readAllBytes(jksPath));
+        setField(securityProvider, "trustedCertificates", cert);
+        setField(securityProvider, "skipCertificateVerification", false);
+        setField(securityProvider, "skipHostnameVerification", false);
+        url = url.replace("127.0.0.1", "localhost");
+        try {
+            fireRequest();
+            fail();
+        } catch (Exception e) {
+            assertEquals(javax.net.ssl.SSLHandshakeException.class, e.getCause().getClass());
+            assertTrue(e.getCause().getMessage().contains("unable to find valid certification path to requested target"));
+        }
+    }
+
+    /**
+     * test certificate and hostname verification
+     */
+    @Test
+    public void testSkipHostAndCertifiacateVerification() throws Exception {
+        Path jksPath = Paths.get(TestCbamTokenProvider.class.getResource("/unittests/localhost.cert.pem").toURI());
+        String cert = Base64.getEncoder().encodeToString(Files.readAllBytes(jksPath));
+        setField(securityProvider, "trustedCertificates", cert);
+        setField(securityProvider, "skipCertificateVerification", false);
+        setField(securityProvider, "skipHostnameVerification", true);
+        //url = url.replace("127.0.0.1", "localhost");
+        TestResource testResource = fireRequest();
+        assertEquals("1234", testResource.id);
+    }
+
+    /**
+     * empty trusted pem results in error if verification is required
+     */
+    @Test
+    public void testEmptyTrustStoreWhenCheckingIsRequired() throws Exception {
+        setField(securityProvider, "trustedCertificates", "");
+        setField(securityProvider, "skipCertificateVerification", false);
+        try {
+            securityProvider.buildTrustManager();
+            fail();
+        } catch (Exception e) {
+            assertEquals("If the skipCertificateVerification is set to false (default) the trustedCertificates can not be empty", e.getMessage());
+        }
+    }
+
+    /**
+     * invalid PEM results in fast fail error
+     */
+    @Test
+    public void testInvalidPem() throws Exception {
+        setField(securityProvider, "trustedCertificates", "______");
+        setField(securityProvider, "skipCertificateVerification", false);
+        try {
+            securityProvider.buildTrustManager();
+            fail();
+        } catch (Exception e) {
+            assertEquals("The trustedCertificates must be a base64 encoded collection of PEM certificates", e.getMessage());
+        }
+    }
+
+    /**
+     * invalid PEM results in fast fail error
+     */
+    @Test
+    public void testEmptyInvalidPem() throws Exception {
+        setField(securityProvider, "trustedCertificates", "a3VrdQo=");
+        setField(securityProvider, "skipCertificateVerification", false);
+        try {
+            securityProvider.buildTrustManager();
+            fail();
+        } catch (Exception e) {
+            assertEquals("No certificate can be extracted from kuku\n", e.getMessage());
+        }
+    }
+
+    /**
+     * bad certificate content results in fast fail error
+     */
+    @Test
+    public void testEmptyInvalidPemContent() throws Exception {
+        String badCert = "-----BEGIN CERTIFICATE-----\nXXXXXX\n-----END CERTIFICATE-----";
+        setField(securityProvider, "trustedCertificates", Base64.getEncoder().encodeToString(badCert.getBytes()));
+        setField(securityProvider, "skipCertificateVerification", false);
+        try {
+            securityProvider.buildTrustManager();
+            fail();
+        } catch (Exception e) {
+            assertEquals("Unable to create keystore", e.getMessage());
+        }
+    }
+
+    /**
+     * bad certificate content results in fast fail error for SSL socket factory
+     */
+    @Test
+    public void testEmptyInvalidPemContentSSl() throws Exception {
+        String badCert = "-----BEGIN CERTIFICATE-----\nXXXXXX\n-----END CERTIFICATE-----";
+        setField(securityProvider, "trustedCertificates", Base64.getEncoder().encodeToString(badCert.getBytes()));
+        setField(securityProvider, "skipCertificateVerification", false);
+        try {
+            securityProvider.buildSSLSocketFactory();
+            fail();
+        } catch (Exception e) {
+            assertEquals("Unable to create SSL socket factory", e.getMessage());
+        }
+    }
+
+    private TestResource fireRequest() {
+        OkHttpClient client =
+                new OkHttpClient.Builder()
+                        .sslSocketFactory(securityProvider.buildSSLSocketFactory(), securityProvider.buildTrustManager())
+                        .hostnameVerifier(securityProvider.buildHostnameVerifier()).build();
+        TestService test1 = new Retrofit.Builder().baseUrl(url).client(client)
+                .addConverterFactory(GsonCustomConverterFactory.create(new JSON().getGson()))
+                .addCallAdapterFactory(RxJava2CallAdapterFactory.create()).build().create(TestService.class);
+        testServer.respones.add("{ \"id\" : \"1234\" } ");
+        testServer.codes.add(200);
+        TestService test = test1;
+        return test.subscriptionsGet().blockingFirst();
+    }
+
+}
index bed2540..743fb95 100644 (file)
@@ -20,6 +20,14 @@ import com.google.gson.JsonElement;
 import com.google.gson.JsonParser;
 import com.nokia.cbam.lcm.v32.model.*;
 import io.reactivex.Observable;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.NoSuchElementException;
+import java.util.UUID;
+import java.util.concurrent.ExecutorService;
+import java.util.concurrent.Executors;
+import java.util.concurrent.Future;
+import javax.servlet.http.HttpServletResponse;
 import org.junit.Before;
 import org.junit.Test;
 import org.mockito.ArgumentCaptor;
@@ -34,15 +42,6 @@ import org.onap.vnfmdriver.model.JobStatus;
 import org.springframework.test.util.ReflectionTestUtils;
 import org.threeten.bp.OffsetDateTime;
 
-import javax.servlet.http.HttpServletResponse;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.NoSuchElementException;
-import java.util.UUID;
-import java.util.concurrent.ExecutorService;
-import java.util.concurrent.Executors;
-import java.util.concurrent.Future;
-
 import static junit.framework.TestCase.*;
 import static org.mockito.Mockito.*;
 import static org.onap.vfc.nfvo.driver.vnfm.svnfm.nokia.util.CbamUtils.SEPARATOR;
@@ -425,7 +424,7 @@ public class TestJobManager extends TestBase {
             fail();
         } catch (RuntimeException e) {
             assertEquals(expectedException, e.getCause());
-            verify(logger).error("Unable to retrieve operation parameters of operation with " + operation.getId() +" identifier", expectedException);
+            verify(logger).error("Unable to retrieve operation parameters of operation with " + operation.getId() + " identifier", expectedException);
         }
         assertTrue(jobManager.hasOngoingJobs());
     }
index 9095eea..b7e30e2 100644 (file)
@@ -25,6 +25,9 @@ import com.nokia.cbam.lcm.v32.model.OperationType;
 import com.nokia.cbam.lcm.v32.model.VimInfo;
 import com.nokia.cbam.lcm.v32.model.VnfInfo;
 import io.reactivex.Observable;
+import java.nio.file.Paths;
+import java.util.*;
+import javax.servlet.http.HttpServletResponse;
 import org.junit.Before;
 import org.junit.Test;
 import org.mockito.ArgumentCaptor;
@@ -43,13 +46,10 @@ import org.onap.vnfmdriver.model.*;
 import org.onap.vnfmdriver.model.ScaleDirection;
 import org.threeten.bp.OffsetDateTime;
 
-import javax.servlet.http.HttpServletResponse;
-import java.nio.file.Paths;
-import java.util.*;
-
 import static java.lang.Boolean.parseBoolean;
 import static java.nio.file.Files.readAllBytes;
 import static java.util.Optional.empty;
+
 import static junit.framework.TestCase.*;
 import static org.mockito.Matchers.eq;
 import static org.mockito.Mockito.*;
@@ -746,6 +746,8 @@ public class TestLifecycleManager extends TestBase {
                 return buildObservable(terminationOperation);
             }
         });
+        Observable<Void> delete = Mockito.mock(Observable.class);
+        when(vnfApi.vnfsVnfInstanceIdDelete(VNF_ID, NOKIA_LCM_API_VERSION)).thenReturn(delete);
         JsonElement instantiationParameters = new JsonParser().parse("{ \"vims\" : [ { \"id\" : \"" + VIM_ID + "\" } ] } ");
         when(operationExecutionApi.operationExecutionsOperationExecutionIdOperationParamsGet("operationExecutionId", NOKIA_LCM_API_VERSION)).thenReturn(buildObservable(instantiationParameters));
         //when
@@ -754,10 +756,12 @@ public class TestLifecycleManager extends TestBase {
         waitForJobToFinishInJobManager(finished);
         assertEquals(1, actualTerminationRequest.getAllValues().size());
         assertEquals(TerminationType.FORCEFUL, actualTerminationRequest.getValue().getTerminationType());
+        assertEquals(JOB_ID, new Gson().toJsonTree(actualTerminationRequest.getValue().getAdditionalParams()).getAsJsonObject().get("jobId").getAsString());
         InOrder notificationIsProcessedBeforeDeletingTheVnf = Mockito.inOrder(vfcGrantManager, notificationManager, vnfApi);
         notificationIsProcessedBeforeDeletingTheVnf.verify(vfcGrantManager).requestGrantForTerminate(VNFM_ID, VNF_ID, VIM_ID, ONAP_CSAR_ID, vnfInfo, JOB_ID);
         notificationIsProcessedBeforeDeletingTheVnf.verify(notificationManager).waitForTerminationToBeProcessed("terminationId");
         notificationIsProcessedBeforeDeletingTheVnf.verify(vnfApi).vnfsVnfInstanceIdDelete(VNF_ID, NOKIA_LCM_API_VERSION);
+        verify(systemFunctions).blockingFirst(delete);
         verify(jobManager).spawnJob(VNF_ID, restResponse);
         verify(logger).info(eq("Starting {} operation on VNF with {} identifier with {} parameter"), eq("termination"), eq(VNF_ID), anyString());
     }
index ffbda14..d668262 100644 (file)
@@ -20,35 +20,34 @@ import com.nokia.cbam.lcn.v32.model.CreateSubscriptionRequest;
 import com.nokia.cbam.lcn.v32.model.Subscription;
 import com.nokia.cbam.lcn.v32.model.SubscriptionAuthentication;
 import com.nokia.cbam.lcn.v32.model.VnfNotificationType;
+import io.reactivex.Observable;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.UUID;
 import org.junit.Before;
 import org.junit.Test;
 import org.mockito.*;
 import org.mockito.invocation.InvocationOnMock;
 import org.mockito.stubbing.Answer;
-import org.onap.msb.sdk.discovery.common.RouteException;
-import org.onap.msb.sdk.discovery.entity.MicroServiceFullInfo;
-import org.onap.msb.sdk.discovery.entity.MicroServiceInfo;
-import org.onap.msb.sdk.discovery.entity.Node;
-import org.onap.msb.sdk.discovery.entity.RouteResult;
+import org.onap.msb.model.MicroServiceFullInfo;
+import org.onap.msb.model.MicroServiceInfo;
+import org.onap.msb.model.Node;
 import org.onap.vfc.nfvo.driver.vnfm.svnfm.nokia.onap.core.SelfRegistrationManager;
 import org.onap.vfc.nfvo.driver.vnfm.svnfm.nokia.util.TestUtil;
 
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.List;
-import java.util.UUID;
-
 import static com.nokia.cbam.lcn.v32.model.OperationType.*;
 import static junit.framework.TestCase.*;
 import static org.mockito.Matchers.any;
 import static org.mockito.Mockito.*;
+import static org.onap.msb.model.MicroServiceInfo.ProtocolEnum.REST;
+import static org.onap.msb.model.MicroServiceInfo.VisualRangeEnum._1;
 import static org.onap.vfc.nfvo.driver.vnfm.svnfm.nokia.vnfm.CbamRestApiProvider.NOKIA_LCN_API_VERSION;
 import static org.springframework.test.util.ReflectionTestUtils.setField;
 
 public class TestSelfRegistrationManager extends TestBase {
     @Mock
     private JobManager jobManager;
-    private List<Subscription> subscriptions = new ArrayList<>();
+    private java.util.List<Subscription> subscriptions = new ArrayList<>();
     private ArgumentCaptor<MicroServiceInfo> registeredMicroservice = ArgumentCaptor.forClass(MicroServiceInfo.class);
     private ArgumentCaptor<CreateSubscriptionRequest> subscriptionToCreate = ArgumentCaptor.forClass(CreateSubscriptionRequest.class);
     @InjectMocks
@@ -79,13 +78,13 @@ public class TestSelfRegistrationManager extends TestBase {
         Subscription subscription = new Subscription();
         when(lcnApi.subscriptionsPost(subscriptionToCreate.capture(), Mockito.eq(NOKIA_LCN_API_VERSION))).thenReturn(buildObservable(subscription));
         MicroServiceFullInfo returnedMicroService = new MicroServiceFullInfo();
-        when(msbClient.registerMicroServiceInfo(registeredMicroservice.capture())).thenReturn(returnedMicroService);
+        when(msbClient.addMicroService(registeredMicroservice.capture(), eq(true), eq(false))).thenReturn(buildObservable(returnedMicroService));
         //when
         selfRegistrationManager.register();
         //verify
         InOrder registrationOrder = Mockito.inOrder(lcnApi, msbClient);
         registrationOrder.verify(lcnApi).subscriptionsPost(any(), any());
-        registrationOrder.verify(msbClient).registerMicroServiceInfo(any());
+        registrationOrder.verify(msbClient).addMicroService(any(), any(), any());
 
         assertMicroserviceRegistered();
         assertNewLcnSubscription();
@@ -111,6 +110,7 @@ public class TestSelfRegistrationManager extends TestBase {
         assertTrue(subscriptionCreation.getFilter().getOperationTypes().contains(TERMINATE));
         assertTrue(subscriptionCreation.getFilter().getOperationTypes().contains(INSTANTIATE));
         assertEquals(4, subscriptionCreation.getFilter().getOperationTypes().size());
+        verify(logger).info("Subscribing to CBAM LCN {} with callback to {}", driverProperties.getCbamLcnUrl(), "http://5.6.7.8:12345/api/NokiaSVNFM/v1/lcn");
     }
 
     private void assertMicroserviceRegistered() {
@@ -120,16 +120,15 @@ public class TestSelfRegistrationManager extends TestBase {
         assertEquals("0", node.getTtl());
         assertEquals("1.2.3.4", node.getIp());
         assertEquals("12345", node.getPort());
-        assertEquals("REST", microserviceRequest.getProtocol());
+        assertEquals(REST, microserviceRequest.getProtocol());
         assertNull(microserviceRequest.getMetadata());
         //very strange, but it should be null for ONAP to work
-        assertEquals("", microserviceRequest.getPath());
         assertEquals(SelfRegistrationManager.SERVICE_NAME, microserviceRequest.getServiceName());
         assertEquals("/api/NokiaSVNFM/v1", microserviceRequest.getUrl());
         assertEquals("v1", microserviceRequest.getVersion());
-        assertEquals(false, microserviceRequest.isEnable_ssl());
+        assertEquals(Boolean.FALSE, microserviceRequest.isEnableSsl());
         //1 means internal service to ONAP
-        assertEquals("1", microserviceRequest.getVisualRange());
+        assertEquals(_1, microserviceRequest.getVisualRange());
     }
 
     /**
@@ -139,7 +138,7 @@ public class TestSelfRegistrationManager extends TestBase {
     public void testResubscription() throws Exception {
         //given
         MicroServiceFullInfo returnedMicroService = new MicroServiceFullInfo();
-        when(msbClient.registerMicroServiceInfo(registeredMicroservice.capture())).thenReturn(returnedMicroService);
+        when(msbClient.addMicroService(registeredMicroservice.capture(), eq(true), eq(false))).thenReturn(buildObservable(returnedMicroService));
         Subscription existingSubscription = new Subscription();
         existingSubscription.setId(UUID.randomUUID().toString());
         existingSubscription.setCallbackUrl("http://5.6.7.8:12345/api/NokiaSVNFM/v1/lcn");
@@ -168,7 +167,7 @@ public class TestSelfRegistrationManager extends TestBase {
             assertEquals(expectedException, e.getCause());
         }
         //verify
-        verify(msbClient, never()).registerMicroServiceInfo(any());
+        verify(msbClient, never()).addMicroService(any(), any(), any());
         verify(logger).error("Unable to subscribe to CBAM LCN", expectedException);
         assertServiceDown();
     }
@@ -187,8 +186,8 @@ public class TestSelfRegistrationManager extends TestBase {
             return buildObservable(subscription);
         });
         MicroServiceFullInfo returnedMicroService = new MicroServiceFullInfo();
-        RouteException expectedException = new RouteException();
-        when(msbClient.registerMicroServiceInfo(registeredMicroservice.capture())).thenThrow(expectedException);
+        RuntimeException expectedException = new RuntimeException();
+        when(msbClient.addMicroService(registeredMicroservice.capture(), eq(true), eq(false))).thenThrow(expectedException);
         //when
         try {
             selfRegistrationManager.register();
@@ -216,14 +215,17 @@ public class TestSelfRegistrationManager extends TestBase {
         subscription.setId(UUID.randomUUID().toString());
         subscriptions.add(subscription);
         when(jobManager.hasOngoingJobs()).thenReturn(false);
-        MicroServiceFullInfo returnedMicroService = new MicroServiceFullInfo();
+        Observable delete = Mockito.mock(Observable.class);
+        when(lcnApi.subscriptionsSubscriptionIdDelete(subscription.getId(), NOKIA_LCN_API_VERSION)).thenReturn(delete);
         //when
         selfRegistrationManager.deRegister();
         //verify
         InOrder inOrder = Mockito.inOrder(jobManager, msbClient, lcnApi);
-        inOrder.verify(msbClient).cancelMicroServiceInfo(SelfRegistrationManager.SERVICE_NAME, SelfRegistrationManager.DRIVER_VERSION);
+        inOrder.verify(msbClient).deleteMicroService(SelfRegistrationManager.SERVICE_NAME, SelfRegistrationManager.DRIVER_VERSION, null, null);
         inOrder.verify(lcnApi).subscriptionsSubscriptionIdDelete(subscription.getId(), NOKIA_LCN_API_VERSION);
         assertServiceDown();
+        verify(systemFunctions).blockingFirst(delete);
+        verify(logger).info("Deleting subscription with {} identifier", subscription.getId());
     }
 
     /**
@@ -238,11 +240,11 @@ public class TestSelfRegistrationManager extends TestBase {
         subscription.setId(UUID.randomUUID().toString());
         subscriptions.add(subscription);
         when(jobManager.hasOngoingJobs()).thenReturn(false);
-        when(msbClient.cancelMicroServiceInfo(SelfRegistrationManager.SERVICE_NAME, SelfRegistrationManager.DRIVER_VERSION)).then(new Answer<RouteResult>() {
+        when(msbClient.deleteMicroService(SelfRegistrationManager.SERVICE_NAME, SelfRegistrationManager.DRIVER_VERSION, null, null)).then(new Answer<Observable<Void>>() {
             @Override
-            public RouteResult answer(InvocationOnMock invocationOnMock) throws Throwable {
-                when(msbClient.queryMicroServiceInfo(SelfRegistrationManager.SERVICE_NAME, SelfRegistrationManager.DRIVER_VERSION)).thenThrow(new RouteException());
-                throw new RouteException();
+            public Observable<Void> answer(InvocationOnMock invocationOnMock) throws Throwable {
+                when(msbClient.getMicroService_0(SelfRegistrationManager.SERVICE_NAME, SelfRegistrationManager.DRIVER_VERSION, null, null, null, null, null)).thenThrow(new RuntimeException());
+                throw new RuntimeException();
             }
         });
         MicroServiceFullInfo returnedMicroService = new MicroServiceFullInfo();
@@ -250,8 +252,8 @@ public class TestSelfRegistrationManager extends TestBase {
         selfRegistrationManager.deRegister();
         //verify
         InOrder inOrder = Mockito.inOrder(jobManager, msbClient, lcnApi);
-        inOrder.verify(msbClient).cancelMicroServiceInfo(SelfRegistrationManager.SERVICE_NAME, SelfRegistrationManager.DRIVER_VERSION);
-        inOrder.verify(msbClient).queryMicroServiceInfo(SelfRegistrationManager.SERVICE_NAME, SelfRegistrationManager.DRIVER_VERSION);
+        inOrder.verify(msbClient).deleteMicroService(SelfRegistrationManager.SERVICE_NAME, SelfRegistrationManager.DRIVER_VERSION, null, null);
+        inOrder.verify(msbClient).getMicroService_0(SelfRegistrationManager.SERVICE_NAME, SelfRegistrationManager.DRIVER_VERSION, null, null, null, null, null);
         inOrder.verify(lcnApi).subscriptionsSubscriptionIdDelete(subscription.getId(), NOKIA_LCN_API_VERSION);
         assertServiceDown();
     }
@@ -266,13 +268,12 @@ public class TestSelfRegistrationManager extends TestBase {
         subscription.setCallbackUrl("http://5.6.7.8:12345/api/NokiaSVNFM/v1/lcn");
         subscription.setId(UUID.randomUUID().toString());
         subscriptions.add(subscription);
-        when(msbClient.cancelMicroServiceInfo(SelfRegistrationManager.SERVICE_NAME, SelfRegistrationManager.DRIVER_VERSION)).then(new Answer<RouteResult>() {
+        when(msbClient.deleteMicroService(SelfRegistrationManager.SERVICE_NAME, SelfRegistrationManager.DRIVER_VERSION, null, null)).then(new Answer<Observable<Void>>() {
             @Override
-            public RouteResult answer(InvocationOnMock invocationOnMock) throws Throwable {
-                throw new RouteException();
+            public Observable<Void> answer(InvocationOnMock invocationOnMock) throws Throwable {
+                throw new RuntimeException();
             }
         });
-        MicroServiceFullInfo returnedMicroService = new MicroServiceFullInfo();
         //when
         try {
             selfRegistrationManager.deRegister();
@@ -282,8 +283,8 @@ public class TestSelfRegistrationManager extends TestBase {
         }
         //verify
         InOrder inOrder = Mockito.inOrder(jobManager, msbClient, lcnApi);
-        inOrder.verify(msbClient).cancelMicroServiceInfo(SelfRegistrationManager.SERVICE_NAME, SelfRegistrationManager.DRIVER_VERSION);
-        inOrder.verify(msbClient).queryMicroServiceInfo(SelfRegistrationManager.SERVICE_NAME, SelfRegistrationManager.DRIVER_VERSION);
+        inOrder.verify(msbClient).deleteMicroService(SelfRegistrationManager.SERVICE_NAME, SelfRegistrationManager.DRIVER_VERSION, null, null);
+        inOrder.verify(msbClient).getMicroService_0(SelfRegistrationManager.SERVICE_NAME, SelfRegistrationManager.DRIVER_VERSION, null, null, null, null, null);
         verify(lcnApi, Mockito.never()).subscriptionsSubscriptionIdDelete(subscription.getId(), NOKIA_LCN_API_VERSION);
         assertServiceDown();
     }
@@ -310,7 +311,7 @@ public class TestSelfRegistrationManager extends TestBase {
         }
         //verify
         InOrder inOrder = Mockito.inOrder(jobManager, msbClient, lcnApi);
-        inOrder.verify(msbClient).cancelMicroServiceInfo(SelfRegistrationManager.SERVICE_NAME, SelfRegistrationManager.DRIVER_VERSION);
+        inOrder.verify(msbClient).deleteMicroService(SelfRegistrationManager.SERVICE_NAME, SelfRegistrationManager.DRIVER_VERSION, null, null);
         inOrder.verify(lcnApi).subscriptionsSubscriptionIdDelete(subscription.getId(), NOKIA_LCN_API_VERSION);
         assertServiceDown();
     }
index dc1b8dd..922e92b 100644 (file)
@@ -17,6 +17,11 @@ package org.onap.vfc.nfvo.driver.vnfm.svnfm.nokia.vnfm.notification;
 
 import com.google.gson.*;
 import com.nokia.cbam.lcm.v32.model.*;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.NoSuchElementException;
+import java.util.Optional;
+import java.util.concurrent.*;
 import org.junit.Before;
 import org.junit.Test;
 import org.mockito.ArgumentCaptor;
@@ -26,11 +31,7 @@ import org.onap.vfc.nfvo.driver.vnfm.svnfm.nokia.vnfm.LifecycleManager;
 import org.onap.vfc.nfvo.driver.vnfm.svnfm.nokia.vnfm.TestBase;
 import org.threeten.bp.OffsetDateTime;
 
-import java.util.ArrayList;
-import java.util.List;
-import java.util.NoSuchElementException;
-import java.util.Optional;
-import java.util.concurrent.*;
+import static java.util.Optional.empty;
 
 import static com.nokia.cbam.lcm.v32.model.OperationType.*;
 import static junit.framework.TestCase.*;
@@ -95,7 +96,6 @@ public class TestLifecycleChangeNotificationManager extends TestBase {
     }
 
     private void prepOperation(OperationExecution operationExecution) {
-        addEmptyModifiedConnectionPoints(operationExecution);
         JsonElement root = new JsonParser().parse("{ \"additionalParams\" : { \"jobId\" : \"" + JOB_ID + "\"}}");
         operationExecution.setOperationParams(root);
         switch (operationExecution.getOperationType()) {
@@ -349,6 +349,7 @@ public class TestLifecycleChangeNotificationManager extends TestBase {
         secondTerminationOperationExecution.setOperationParams(buildTerminationParams());
         nonProcessedEvent.setLifecycleOperationOccurrenceId(secondTerminationOperationExecution.getId());
         lifecycleChangeNotificationManager.handleLcn(nonProcessedEvent);
+        addEmptyModifiedConnectionPoints(terminationOperation);
         //add second termination
         recievedLcn.setOperation(OperationType.TERMINATE);
         recievedLcn.setStatus(OperationStatus.FINISHED);
@@ -401,6 +402,7 @@ public class TestLifecycleChangeNotificationManager extends TestBase {
         lifecycleChangeNotificationManager.handleLcn(recievedLcn);
         //verify
         assertTrue(waitExitedWithSuccess.get());
+        assertEquals(empty(), affectedConnectionPoints.getValue());
     }
 
     /**
@@ -443,6 +445,34 @@ public class TestLifecycleChangeNotificationManager extends TestBase {
         verify(logger).warn("The operation failed and the affected connection points were not reported");
     }
 
+
+    /**
+     * affected connection points are passed to the actual notification processor
+     */
+    @Test
+    public void testAffectedConnectionPointProcessing() throws Exception {
+        //given
+        recievedLcn.setOperation(OperationType.INSTANTIATE);
+        recievedLcn.setStatus(OperationStatus.FINISHED);
+        recievedLcn.setLifecycleOperationOccurrenceId(instantiationOperation.getId());
+        instantiationOperation.setStatus(OperationStatus.FAILED);
+        addEmptyModifiedConnectionPoints(instantiationOperation);
+        OperationResult operationResult = new OperationResult();
+        ReportedAffectedConnectionPoints affectedCp = new ReportedAffectedConnectionPoints();
+        ReportedAffectedCp cp = new ReportedAffectedCp();
+        cp.setCpId("cpId");
+        affectedCp.getPost().add(cp);
+        operationResult.operationResult = affectedCp;
+        instantiationOperation.setAdditionalData(new Gson().toJsonTree(operationResult));
+
+        //when
+        lifecycleChangeNotificationManager.handleLcn(recievedLcn);
+        //verify
+        assertTrue(affectedConnectionPoints.getValue().isPresent());
+        ReportedAffectedConnectionPoints actualCps = new Gson().fromJson(new Gson().toJsonTree(affectedConnectionPoints.getValue().get()), ReportedAffectedConnectionPoints.class);
+        assertEquals(1, actualCps.getPost().size());
+    }
+
     /**
      * Failures in affected connection point processing are tolerated for failed operation
      * (because the POST script was not able to run)
@@ -454,6 +484,7 @@ public class TestLifecycleChangeNotificationManager extends TestBase {
         recievedLcn.setStatus(OperationStatus.FAILED);
         recievedLcn.setLifecycleOperationOccurrenceId(instantiationOperation.getId());
         instantiationOperation.setStatus(OperationStatus.FAILED);
+        addEmptyModifiedConnectionPoints(instantiationOperation);
         JsonObject additionalData = (JsonObject) instantiationOperation.getAdditionalData();
         additionalData.remove("operationResult");
         //when
@@ -500,8 +531,10 @@ public class TestLifecycleChangeNotificationManager extends TestBase {
         request.setType(ScaleDirection.OUT);
         scaleOperation.setOperationParams(request);
         scaleOperation.setStatus(OperationStatus.FAILED);
+        addEmptyModifiedConnectionPoints(scaleOperation);
         ((JsonObject) scaleOperation.getAdditionalData()).get("operationResult").getAsJsonObject().remove("cbam_post");
         scaleOperation.setOperationType(OperationType.SCALE);
+
         //when
         lifecycleChangeNotificationManager.handleLcn(recievedLcn);
         assertFalse(affectedConnectionPoints.getValue().isPresent());
@@ -522,6 +555,7 @@ public class TestLifecycleChangeNotificationManager extends TestBase {
         request.setType(ScaleDirection.OUT);
         scaleOperation.setOperationParams(request);
         scaleOperation.setStatus(OperationStatus.FAILED);
+        addEmptyModifiedConnectionPoints(scaleOperation);
         JsonObject operationResult = ((JsonObject) scaleOperation.getAdditionalData()).get("operationResult").getAsJsonObject();
         operationResult.remove("cbam_post");
         operationResult.addProperty("cbam_post", "");
index 83f1ea3..ba65e4f 100644 (file)
@@ -1,87 +1,68 @@
----
-tosca_definitions_version: "tosca_simple_profile_for_nfv_1_0_0_nokia"
+tosca_definitions_version: tosca_simple_profile_for_nfv_1_0_0_nokia
 topology_template:
   substitution_mappings:
-    node_type: "tosca.nodes.nfv.VNF"
+    node_type: tosca.nodes.nfv.VNF
     capabilities:
       vnf:
         properties:
           modifiable_attributes:
             extensions:
-              existingAttribute:
-                default: "value"
-              onapCsarId:
-                default: "kuku"
-              vimId:
-                default: "kuku"
+              existingAttribute: {default: value}
+              onapCsarId: {default: kuku}
+              vimId: {default: kuku}
     interfaces:
       Basic:
         instantiate:
           inputs:
             extensions:
               pre_actions:
-              - javascript: "pre"
-                include:
-                - "javascript/scalable_prepare_cbam_include.js"
-                output: "stack_parameters"
-              - javascript: "javascript/cbam.pre.collectConnectionPoints.js"
-                include:
-                - "javascript/cbam.collectConnectionPoints.js"
-                output: "operation_result"
+              - javascript: pre
+                include: [javascript/scalable_prepare_cbam_include.js]
+                output: stack_parameters
+              - javascript: javascript/cbam.pre.collectConnectionPoints.js
+                include: [javascript/cbam.collectConnectionPoints.js]
+                output: operation_result
               post_actions:
-              - javascript: "post"
-                output: "ansible_inventory"
-              - javascript: "javascript/cbam.post.collectConnectionPoints.js"
-                include:
-                - "javascript/cbam.collectConnectionPoints.js"
-                output: "operation_result"
-            additional_parameters:
-              kuku: "muku"
-              jobId: "kuku"
+              - {javascript: post, output: ansible_inventory}
+              - javascript: javascript/cbam.post.collectConnectionPoints.js
+                include: [javascript/cbam.collectConnectionPoints.js]
+                output: operation_result
+            additional_parameters: {kuku: muku, jobId: kuku}
         terminate:
           inputs:
             extensions:
               pre_actions:
-              - javascript: "javascript/cbam.pre.collectConnectionPoints.js"
-                include:
-                - "javascript/cbam.collectConnectionPoints.js"
-                output: "operation_result"
+              - javascript: javascript/cbam.pre.collectConnectionPoints.js
+                include: [javascript/cbam.collectConnectionPoints.js]
+                output: operation_result
               post_actions:
-              - javascript: "javascript/cbam.post.collectConnectionPoints.js"
-                include:
-                - "javascript/cbam.collectConnectionPoints.js"
-                output: "operation_result"
-            additional_parameters:
-              jobId: "kuku"
+              - javascript: javascript/cbam.post.collectConnectionPoints.js
+                include: [javascript/cbam.collectConnectionPoints.js]
+                output: operation_result
+            additional_parameters: {jobId: kuku}
       Scalable:
         scale:
           inputs:
             extensions:
               pre_actions:
-              - javascript: "javascript/cbam.pre.collectConnectionPoints.js"
-                include:
-                - "javascript/cbam.collectConnectionPoints.js"
-                output: "operation_result"
+              - javascript: javascript/cbam.pre.collectConnectionPoints.js
+                include: [javascript/cbam.collectConnectionPoints.js]
+                output: operation_result
               post_actions:
-              - javascript: "javascript/cbam.post.collectConnectionPoints.js"
-                include:
-                - "javascript/cbam.collectConnectionPoints.js"
-                output: "operation_result"
-            additional_parameters:
-              jobId: "kuku"
+              - javascript: javascript/cbam.post.collectConnectionPoints.js
+                include: [javascript/cbam.collectConnectionPoints.js]
+                output: operation_result
+            additional_parameters: {jobId: kuku}
       Healable:
         heal:
           inputs:
             extensions:
               pre_actions:
-              - javascript: "javascript/cbam.pre.collectConnectionPoints.js"
-                include:
-                - "javascript/cbam.collectConnectionPoints.js"
-                output: "operation_result"
+              - javascript: javascript/cbam.pre.collectConnectionPoints.js
+                include: [javascript/cbam.collectConnectionPoints.js]
+                output: operation_result
               post_actions:
-              - javascript: "javascript/cbam.post.collectConnectionPoints.js"
-                include:
-                - "javascript/cbam.collectConnectionPoints.js"
-                output: "operation_result"
-            additional_parameters:
-              jobId: "kuku"
+              - javascript: javascript/cbam.post.collectConnectionPoints.js
+                include: [javascript/cbam.collectConnectionPoints.js]
+                output: operation_result
+            additional_parameters: {jobId: kuku}
index 2b05ecf..ed24247 100644 (file)
@@ -1,46 +1,37 @@
----
-tosca_definitions_version: "tosca_simple_profile_for_nfv_1_0_0_nokia"
+tosca_definitions_version: tosca_simple_profile_for_nfv_1_0_0_nokia
 topology_template:
   substitution_mappings:
-    node_type: "tosca.nodes.nfv.VNF"
+    node_type: tosca.nodes.nfv.VNF
     interfaces:
       Basic:
         instantiate:
           inputs:
             extensions:
               pre_actions:
-              - javascript: "javascript/cbam.pre.collectConnectionPoints.js"
-                include:
-                - "javascript/cbam.collectConnectionPoints.js"
-                output: "operation_result"
+              - javascript: javascript/cbam.pre.collectConnectionPoints.js
+                include: [javascript/cbam.collectConnectionPoints.js]
+                output: operation_result
               post_actions:
-              - javascript: "javascript/cbam.post.collectConnectionPoints.js"
-                include:
-                - "javascript/cbam.collectConnectionPoints.js"
-                output: "operation_result"
-            additional_parameters:
-              jobId: "kuku"
+              - javascript: javascript/cbam.post.collectConnectionPoints.js
+                include: [javascript/cbam.collectConnectionPoints.js]
+                output: operation_result
+            additional_parameters: {jobId: kuku}
         terminate:
           inputs:
             extensions:
               pre_actions:
-              - javascript: "javascript/cbam.pre.collectConnectionPoints.js"
-                include:
-                - "javascript/cbam.collectConnectionPoints.js"
-                output: "operation_result"
+              - javascript: javascript/cbam.pre.collectConnectionPoints.js
+                include: [javascript/cbam.collectConnectionPoints.js]
+                output: operation_result
               post_actions:
-              - javascript: "javascript/cbam.post.collectConnectionPoints.js"
-                include:
-                - "javascript/cbam.collectConnectionPoints.js"
-                output: "operation_result"
-            additional_parameters:
-              jobId: "kuku"
+              - javascript: javascript/cbam.post.collectConnectionPoints.js
+                include: [javascript/cbam.collectConnectionPoints.js]
+                output: operation_result
+            additional_parameters: {jobId: kuku}
     capabilities:
       vnf:
         properties:
           modifiable_attributes:
             extensions:
-              onapCsarId:
-                default: "kuku"
-              vimId:
-                default: "kuku"
+              onapCsarId: {default: kuku}
+              vimId: {default: kuku}
index ebec707..af8d420 100644 (file)
           <groupId>org.springframework.boot</groupId>
           <artifactId>spring-boot-starter-tomcat</artifactId>
         </exclusion>
+        <exclusion>
+          <groupId>com.fasterxml.jackson.core</groupId>
+          <artifactId>jackson-databind</artifactId>
+        </exclusion>
       </exclusions>
     </dependency>
     <dependency>
           <layout>WAR</layout>
         </configuration>
         <executions>
-        <execution>
-          <goals>
-            <goal>repackage</goal>
-          </goals>
-        </execution>
-      </executions>
+          <execution>
+            <goals>
+              <goal>repackage</goal>
+            </goals>
+          </execution>
+        </executions>
       </plugin>
       <plugin>
         <groupId>org.apache.maven.plugins</groupId>
index a62606c..d9498a2 100644 (file)
@@ -36,6 +36,8 @@
   </properties>
   <build>
     <plugins>
+<!--
+Release AAI 
       <plugin>
         <groupId>org.apache.maven.plugins</groupId>
         <artifactId>maven-dependency-plugin</artifactId>
@@ -64,6 +66,7 @@
           </execution>
         </executions>
       </plugin>
+-->
       <plugin>
         <groupId>io.swagger</groupId>
         <artifactId>swagger-codegen-maven-plugin</artifactId>
               </configOptions>
             </configuration>
           </execution>
+          <execution>
+            <id>msb</id>
+            <goals>
+              <goal>generate</goal>
+            </goals>
+            <configuration>
+              <inputSpec>${basedir}/src/main/resources/msb.json</inputSpec>
+              <language>java</language>
+              <library>retrofit2</library>
+              <output>${project.build.directory}/generated-sources/msb</output>
+              <apiPackage>org.onap.msb.api</apiPackage>
+              <modelPackage>org.onap.msb.model</modelPackage>
+              <configOptions>
+                <generateSupportingFiles>false</generateSupportingFiles>
+                <sourceFolder>src/gen/java/main</sourceFolder>
+                <withXml>true</withXml>
+                <useRxJava2>true</useRxJava2>
+              </configOptions>
+            </configuration>
+          </execution>
+          <execution>
+            <id>aai</id>
+            <goals>
+              <goal>generate</goal>
+            </goals>
+            <configuration>
+              <inputSpec>${basedir}/src/main/resources/aai.yaml</inputSpec>
+              <language>java</language>
+              <library>retrofit2</library>
+              <output>${project.build.directory}/generated-sources/aai</output>
+              <apiPackage>org.onap.aai.api</apiPackage>
+              <modelPackage>org.onap.aai.model</modelPackage>
+              <configOptions>
+                <generateSupportingFiles>false</generateSupportingFiles>
+                <sourceFolder>src/gen/java/main</sourceFolder>
+                <withXml>true</withXml>
+                <useRxJava2>true</useRxJava2>
+              </configOptions>
+            </configuration>
+          </execution>
           <execution>
             <id>cbamlcn</id>
             <goals>
diff --git a/nokiav2/generatedapis/src/main/resources/aai.yaml b/nokiav2/generatedapis/src/main/resources/aai.yaml
new file mode 100644 (file)
index 0000000..fe0ff69
--- /dev/null
@@ -0,0 +1,46739 @@
+#
+# ============LICENSE_START=======================================================
+# org.onap.aai
+# ================================================================================
+# Copyright Â© 2017 AT&T Intellectual Property. All rights reserved.
+# ================================================================================
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#    http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+# ============LICENSE_END=========================================================
+#
+# ECOMP is a trademark and service mark of AT&T Intellectual Property.
+#
+
+swagger: "2.0"
+info:
+  description: |
+    Copyright &copy; 2017 AT&amp;T Intellectual Property. All rights reserved.
+
+    Licensed under the Creative Commons License, Attribution 4.0 Intl. (the &quot;License&quot;); you may not use this documentation except in compliance with the License.
+
+    You may obtain a copy of the License at
+
+    (https://creativecommons.org/licenses/by/4.0/)
+
+    Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an &quot;AS IS&quot; BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.
+
+    ECOMP and OpenECOMP are trademarks and service marks of AT&amp;T Intellectual Property.
+
+    This document is best viewed with Firefox or Chrome. Nodes can be found by appending /#/definitions/node-type-to-find to the path to this document. Edge definitions can be found with the node definitions.
+  version: "v11"
+  title: Active and Available Inventory REST API
+  license:
+    name: Apache 2.0
+    url: http://www.apache.org/licenses/LICENSE-2.0.html
+  contact:
+    name:
+    url:
+    email:
+host:
+basePath: /aai/v11
+schemes:
+  - https
+paths:
+  /cloud-infrastructure/complexes/complex/{physical-location-id}/ctag-pools/ctag-pool/{target-pe}/{availability-zone-name}/relationship-list/relationship:
+    put:
+      tags:
+        - CloudInfrastructure
+      summary: see node definition for valid relationships
+      operationId: createOrUpdateCloudInfrastructureComplexesComplexCtagPoolsCtagPoolRelationshipListRelationship
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: physical-location-id
+          in: path
+          description: Unique identifier for physical location, e.g., CLLI
+          required: true
+          type: string
+        - name: target-pe
+          in: path
+          description: The Target provider edge router
+          required: true
+          type: string
+        - name: availability-zone-name
+          in: path
+          description: Name of the availability zone
+          required: true
+          type: string
+        - name: body
+          in: body
+          description: relationship object that needs to be created or updated
+          required: true
+          schema:
+            $ref: "#/definitions/relationship"
+    delete:
+      tags:
+        - CloudInfrastructure
+      summary: delete an existing relationship
+      description: delete an existing relationship
+      operationId: deleteCloudInfrastructureComplexesComplexCtagPoolsCtagPoolRelationshipListRelationship
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: physical-location-id
+          in: path
+          description: Unique identifier for physical location, e.g., CLLI
+          required: true
+          type: string
+        - name: target-pe
+          in: path
+          description: The Target provider edge router
+          required: true
+          type: string
+        - name: availability-zone-name
+          in: path
+          description: Name of the availability zone
+          required: true
+          type: string
+  /cloud-infrastructure/complexes/complex/{physical-location-id}/ctag-pools/ctag-pool/{target-pe}/{availability-zone-name}:
+    get:
+      tags:
+        - CloudInfrastructure
+      summary: returns ctag-pool
+      description: returns ctag-pool
+      operationId: getCloudInfrastructureComplexesComplexCtagPoolsCtagPool
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "200":
+          description: successful operation
+          schema:
+              $ref: "#/definitions/ctag-pool"
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: physical-location-id
+          in: path
+          description: Unique identifier for physical location, e.g., CLLI
+          required: true
+          type: string
+        - name: target-pe
+          in: path
+          description: The Target provider edge router
+          required: true
+          type: string
+        - name: availability-zone-name
+          in: path
+          description: Name of the availability zone
+          required: true
+          type: string
+        - name: data-center-code
+          in: query
+          description: Data center code which can be an alternate way to identify a complex
+          required: false
+          type: string
+        - name: complex-name
+          in: query
+          description: Gamma complex name for LCP instance.
+          required: false
+          type: string
+        - name: identity-url
+          in: query
+          description: URL of the keystone identity service
+          required: false
+          type: string
+    put:
+      tags:
+        - CloudInfrastructure
+      summary: create or update an existing ctag-pool
+      description: create or update an existing ctag-pool
+      operationId: createOrUpdateCloudInfrastructureComplexesComplexCtagPoolsCtagPool
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: physical-location-id
+          in: path
+          description: Unique identifier for physical location, e.g., CLLI
+          required: true
+          type: string
+        - name: target-pe
+          in: path
+          description: The Target provider edge router
+          required: true
+          type: string
+        - name: availability-zone-name
+          in: path
+          description: Name of the availability zone
+          required: true
+          type: string
+        - name: body
+          in: body
+          description: ctag-pool object that needs to be created or updated
+          required: true
+          schema:
+            $ref: "#/definitions/ctag-pool"
+    delete:
+      tags:
+        - CloudInfrastructure
+      summary: delete an existing ctag-pool
+      description: delete an existing ctag-pool
+      operationId: deleteCloudInfrastructureComplexesComplexCtagPoolsCtagPool
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: physical-location-id
+          in: path
+          description: Unique identifier for physical location, e.g., CLLI
+          required: true
+          type: string
+        - name: target-pe
+          in: path
+          description: The Target provider edge router
+          required: true
+          type: string
+        - name: availability-zone-name
+          in: path
+          description: Name of the availability zone
+          required: true
+          type: string
+        - name: resource-version
+          in: query
+          description: resource-version for concurrency
+          required: true
+          type: string
+  /cloud-infrastructure/complexes/complex/{physical-location-id}/ctag-pools:
+    get:
+      tags:
+        - CloudInfrastructure
+      summary: returns ctag-pools
+      description: returns ctag-pools
+      operationId: getCloudInfrastructureComplexesComplexCtagPools
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "200":
+          description: successful operation
+          schema:
+              $ref: "#/definitions/ctag-pools"
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: physical-location-id
+          in: path
+          description: Unique identifier for physical location, e.g., CLLI
+          required: true
+          type: string
+        - name: data-center-code
+          in: query
+          description: Data center code which can be an alternate way to identify a complex
+          required: false
+          type: string
+        - name: complex-name
+          in: query
+          description: Gamma complex name for LCP instance.
+          required: false
+          type: string
+        - name: identity-url
+          in: query
+          description: URL of the keystone identity service
+          required: false
+          type: string
+  /cloud-infrastructure/complexes/complex/{physical-location-id}/relationship-list/relationship:
+    put:
+      tags:
+        - CloudInfrastructure
+      summary: see node definition for valid relationships
+      operationId: createOrUpdateCloudInfrastructureComplexesComplexRelationshipListRelationship
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: physical-location-id
+          in: path
+          description: Unique identifier for physical location, e.g., CLLI
+          required: true
+          type: string
+        - name: body
+          in: body
+          description: relationship object that needs to be created or updated
+          required: true
+          schema:
+            $ref: "#/definitions/relationship"
+    delete:
+      tags:
+        - CloudInfrastructure
+      summary: delete an existing relationship
+      description: delete an existing relationship
+      operationId: deleteCloudInfrastructureComplexesComplexRelationshipListRelationship
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: physical-location-id
+          in: path
+          description: Unique identifier for physical location, e.g., CLLI
+          required: true
+          type: string
+  /cloud-infrastructure/complexes/complex/{physical-location-id}:
+    get:
+      tags:
+        - CloudInfrastructure
+      summary: returns complex
+      description: returns complex
+      operationId: getCloudInfrastructureComplexesComplex
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "200":
+          description: successful operation
+          schema:
+              $ref: "#/definitions/complex"
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: physical-location-id
+          in: path
+          description: Unique identifier for physical location, e.g., CLLI
+          required: true
+          type: string
+        - name: data-center-code
+          in: query
+          description: Data center code which can be an alternate way to identify a complex
+          required: false
+          type: string
+        - name: complex-name
+          in: query
+          description: Gamma complex name for LCP instance.
+          required: false
+          type: string
+        - name: identity-url
+          in: query
+          description: URL of the keystone identity service
+          required: false
+          type: string
+    put:
+      tags:
+        - CloudInfrastructure
+      summary: create or update an existing complex
+      description: create or update an existing complex
+      operationId: createOrUpdateCloudInfrastructureComplexesComplex
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: physical-location-id
+          in: path
+          description: Unique identifier for physical location, e.g., CLLI
+          required: true
+          type: string
+        - name: body
+          in: body
+          description: complex object that needs to be created or updated
+          required: true
+          schema:
+            $ref: "#/definitions/complex"
+    delete:
+      tags:
+        - CloudInfrastructure
+      summary: delete an existing complex
+      description: delete an existing complex
+      operationId: deleteCloudInfrastructureComplexesComplex
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: physical-location-id
+          in: path
+          description: Unique identifier for physical location, e.g., CLLI
+          required: true
+          type: string
+        - name: resource-version
+          in: query
+          description: resource-version for concurrency
+          required: true
+          type: string
+  /cloud-infrastructure/complexes:
+    get:
+      tags:
+        - CloudInfrastructure
+      summary: returns complexes
+      description: returns complexes
+      operationId: getCloudInfrastructureComplexes
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "200":
+          description: successful operation
+          schema:
+              $ref: "#/definitions/complexes"
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+  /cloud-infrastructure/cloud-regions/cloud-region/{cloud-owner}/{cloud-region-id}/volume-groups/volume-group/{volume-group-id}/relationship-list/relationship:
+    put:
+      tags:
+        - CloudInfrastructure
+      summary: see node definition for valid relationships
+      operationId: createOrUpdateCloudInfrastructureCloudRegionsCloudRegionVolumeGroupsVolumeGroupRelationshipListRelationship
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: cloud-owner
+          in: path
+          description: Identifies the vendor and cloud name. First part of composite key should be formatted as vendor-cloudname
+          required: true
+          type: string
+        - name: cloud-region-id
+          in: path
+          description: Identifier used by the vendor for the region. Second part of composite key
+          required: true
+          type: string
+        - name: volume-group-id
+          in: path
+          description: Unique ID of volume-group.
+          required: true
+          type: string
+        - name: body
+          in: body
+          description: relationship object that needs to be created or updated
+          required: true
+          schema:
+            $ref: "#/definitions/relationship"
+    delete:
+      tags:
+        - CloudInfrastructure
+      summary: delete an existing relationship
+      description: delete an existing relationship
+      operationId: deleteCloudInfrastructureCloudRegionsCloudRegionVolumeGroupsVolumeGroupRelationshipListRelationship
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: cloud-owner
+          in: path
+          description: Identifies the vendor and cloud name. First part of composite key should be formatted as vendor-cloudname
+          required: true
+          type: string
+        - name: cloud-region-id
+          in: path
+          description: Identifier used by the vendor for the region. Second part of composite key
+          required: true
+          type: string
+        - name: volume-group-id
+          in: path
+          description: Unique ID of volume-group.
+          required: true
+          type: string
+  /cloud-infrastructure/cloud-regions/cloud-region/{cloud-owner}/{cloud-region-id}/volume-groups/volume-group/{volume-group-id}:
+    get:
+      tags:
+        - CloudInfrastructure
+      summary: returns volume-group
+      description: returns volume-group
+      operationId: getCloudInfrastructureCloudRegionsCloudRegionVolumeGroupsVolumeGroup
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "200":
+          description: successful operation
+          schema:
+              $ref: "#/definitions/volume-group"
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: cloud-owner
+          in: path
+          description: Identifies the vendor and cloud name. First part of composite key should be formatted as vendor-cloudname
+          required: true
+          type: string
+        - name: cloud-region-id
+          in: path
+          description: Identifier used by the vendor for the region. Second part of composite key
+          required: true
+          type: string
+        - name: volume-group-id
+          in: path
+          description: Unique ID of volume-group.
+          required: true
+          type: string
+        - name: cloud-type
+          in: query
+          description: Type of the cloud (e.g., openstack)
+          required: false
+          type: string
+        - name: owner-defined-type
+          in: query
+          description: Cloud-owner defined type indicator (e.g., dcp, lcp)
+          required: false
+          type: string
+        - name: volume-group-name
+          in: query
+          description: Name of the volume group.
+          required: false
+          type: string
+        - name: heat-stack-id
+          in: query
+          description: Heat stack id corresponding to this volume-group
+          required: false
+          type: string
+        - name: vnf-type
+          in: query
+          description: String capturing type of vnf, that was intended to identify the ASDC resource.  This field has been overloaded in service-specific ways and clients should expect changes to occur in the future to this field as ECOMP matures.
+          required: false
+          type: string
+    put:
+      tags:
+        - CloudInfrastructure
+      summary: create or update an existing volume-group
+      description: create or update an existing volume-group
+      operationId: createOrUpdateCloudInfrastructureCloudRegionsCloudRegionVolumeGroupsVolumeGroup
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: cloud-owner
+          in: path
+          description: Identifies the vendor and cloud name. First part of composite key should be formatted as vendor-cloudname
+          required: true
+          type: string
+        - name: cloud-region-id
+          in: path
+          description: Identifier used by the vendor for the region. Second part of composite key
+          required: true
+          type: string
+        - name: volume-group-id
+          in: path
+          description: Unique ID of volume-group.
+          required: true
+          type: string
+        - name: body
+          in: body
+          description: volume-group object that needs to be created or updated
+          required: true
+          schema:
+            $ref: "#/definitions/volume-group"
+    delete:
+      tags:
+        - CloudInfrastructure
+      summary: delete an existing volume-group
+      description: delete an existing volume-group
+      operationId: deleteCloudInfrastructureCloudRegionsCloudRegionVolumeGroupsVolumeGroup
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: cloud-owner
+          in: path
+          description: Identifies the vendor and cloud name. First part of composite key should be formatted as vendor-cloudname
+          required: true
+          type: string
+        - name: cloud-region-id
+          in: path
+          description: Identifier used by the vendor for the region. Second part of composite key
+          required: true
+          type: string
+        - name: volume-group-id
+          in: path
+          description: Unique ID of volume-group.
+          required: true
+          type: string
+        - name: resource-version
+          in: query
+          description: resource-version for concurrency
+          required: true
+          type: string
+  /cloud-infrastructure/cloud-regions/cloud-region/{cloud-owner}/{cloud-region-id}/volume-groups:
+    get:
+      tags:
+        - CloudInfrastructure
+      summary: returns volume-groups
+      description: returns volume-groups
+      operationId: getCloudInfrastructureCloudRegionsCloudRegionVolumeGroups
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "200":
+          description: successful operation
+          schema:
+              $ref: "#/definitions/volume-groups"
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: cloud-owner
+          in: path
+          description: Identifies the vendor and cloud name. First part of composite key should be formatted as vendor-cloudname
+          required: true
+          type: string
+        - name: cloud-region-id
+          in: path
+          description: Identifier used by the vendor for the region. Second part of composite key
+          required: true
+          type: string
+        - name: cloud-type
+          in: query
+          description: Type of the cloud (e.g., openstack)
+          required: false
+          type: string
+        - name: owner-defined-type
+          in: query
+          description: Cloud-owner defined type indicator (e.g., dcp, lcp)
+          required: false
+          type: string
+  /cloud-infrastructure/cloud-regions/cloud-region/{cloud-owner}/{cloud-region-id}/tenants/tenant/{tenant-id}/vservers/vserver/{vserver-id}/volumes/volume/{volume-id}/relationship-list/relationship:
+    put:
+      tags:
+        - CloudInfrastructure
+      summary: see node definition for valid relationships
+      operationId: createOrUpdateCloudInfrastructureCloudRegionsCloudRegionTenantsTenantVserversVserverVolumesVolumeRelationshipListRelationship
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: cloud-owner
+          in: path
+          description: Identifies the vendor and cloud name. First part of composite key should be formatted as vendor-cloudname
+          required: true
+          type: string
+        - name: cloud-region-id
+          in: path
+          description: Identifier used by the vendor for the region. Second part of composite key
+          required: true
+          type: string
+        - name: tenant-id
+          in: path
+          description: Unique id relative to the cloud-region.
+          required: true
+          type: string
+        - name: vserver-id
+          in: path
+          description: Unique identifier for this vserver relative to its tenant
+          required: true
+          type: string
+        - name: volume-id
+          in: path
+          description: Unique ID of block storage volume relative to the vserver.
+          required: true
+          type: string
+        - name: body
+          in: body
+          description: relationship object that needs to be created or updated
+          required: true
+          schema:
+            $ref: "#/definitions/relationship"
+    delete:
+      tags:
+        - CloudInfrastructure
+      summary: delete an existing relationship
+      description: delete an existing relationship
+      operationId: deleteCloudInfrastructureCloudRegionsCloudRegionTenantsTenantVserversVserverVolumesVolumeRelationshipListRelationship
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: cloud-owner
+          in: path
+          description: Identifies the vendor and cloud name. First part of composite key should be formatted as vendor-cloudname
+          required: true
+          type: string
+        - name: cloud-region-id
+          in: path
+          description: Identifier used by the vendor for the region. Second part of composite key
+          required: true
+          type: string
+        - name: tenant-id
+          in: path
+          description: Unique id relative to the cloud-region.
+          required: true
+          type: string
+        - name: vserver-id
+          in: path
+          description: Unique identifier for this vserver relative to its tenant
+          required: true
+          type: string
+        - name: volume-id
+          in: path
+          description: Unique ID of block storage volume relative to the vserver.
+          required: true
+          type: string
+  /cloud-infrastructure/cloud-regions/cloud-region/{cloud-owner}/{cloud-region-id}/tenants/tenant/{tenant-id}/vservers/vserver/{vserver-id}/volumes/volume/{volume-id}:
+    get:
+      tags:
+        - CloudInfrastructure
+      summary: returns volume
+      description: returns volume
+      operationId: getCloudInfrastructureCloudRegionsCloudRegionTenantsTenantVserversVserverVolumesVolume
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "200":
+          description: successful operation
+          schema:
+              $ref: "#/definitions/volume"
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: cloud-owner
+          in: path
+          description: Identifies the vendor and cloud name. First part of composite key should be formatted as vendor-cloudname
+          required: true
+          type: string
+        - name: cloud-region-id
+          in: path
+          description: Identifier used by the vendor for the region. Second part of composite key
+          required: true
+          type: string
+        - name: tenant-id
+          in: path
+          description: Unique id relative to the cloud-region.
+          required: true
+          type: string
+        - name: vserver-id
+          in: path
+          description: Unique identifier for this vserver relative to its tenant
+          required: true
+          type: string
+        - name: volume-id
+          in: path
+          description: Unique ID of block storage volume relative to the vserver.
+          required: true
+          type: string
+        - name: cloud-type
+          in: query
+          description: Type of the cloud (e.g., openstack)
+          required: false
+          type: string
+        - name: owner-defined-type
+          in: query
+          description: Cloud-owner defined type indicator (e.g., dcp, lcp)
+          required: false
+          type: string
+        - name: tenant-name
+          in: query
+          description: Readable name of tenant
+          required: false
+          type: string
+        - name: tenant-context
+          in: query
+          description: This field will store the tenant context.
+          required: false
+          type: string
+        - name: vserver-name
+          in: query
+          description: Name of vserver
+          required: false
+          type: string
+        - name: vserver-name2
+          in: query
+          description: Alternative name of vserver
+          required: false
+          type: string
+        - name: prov-status
+          in: query
+          description: Trigger for operational monitoring of this resource by Service Assurance systems.
+          required: false
+          type: string
+        - name: in-maint
+          in: query
+          required: false
+          type: boolean
+        - name: is-closed-loop-disabled
+          in: query
+          required: false
+          type: boolean
+    put:
+      tags:
+        - CloudInfrastructure
+      summary: create or update an existing volume
+      description: create or update an existing volume
+      operationId: createOrUpdateCloudInfrastructureCloudRegionsCloudRegionTenantsTenantVserversVserverVolumesVolume
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: cloud-owner
+          in: path
+          description: Identifies the vendor and cloud name. First part of composite key should be formatted as vendor-cloudname
+          required: true
+          type: string
+        - name: cloud-region-id
+          in: path
+          description: Identifier used by the vendor for the region. Second part of composite key
+          required: true
+          type: string
+        - name: tenant-id
+          in: path
+          description: Unique id relative to the cloud-region.
+          required: true
+          type: string
+        - name: vserver-id
+          in: path
+          description: Unique identifier for this vserver relative to its tenant
+          required: true
+          type: string
+        - name: volume-id
+          in: path
+          description: Unique ID of block storage volume relative to the vserver.
+          required: true
+          type: string
+        - name: body
+          in: body
+          description: volume object that needs to be created or updated
+          required: true
+          schema:
+            $ref: "#/definitions/volume"
+    delete:
+      tags:
+        - CloudInfrastructure
+      summary: delete an existing volume
+      description: delete an existing volume
+      operationId: deleteCloudInfrastructureCloudRegionsCloudRegionTenantsTenantVserversVserverVolumesVolume
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: cloud-owner
+          in: path
+          description: Identifies the vendor and cloud name. First part of composite key should be formatted as vendor-cloudname
+          required: true
+          type: string
+        - name: cloud-region-id
+          in: path
+          description: Identifier used by the vendor for the region. Second part of composite key
+          required: true
+          type: string
+        - name: tenant-id
+          in: path
+          description: Unique id relative to the cloud-region.
+          required: true
+          type: string
+        - name: vserver-id
+          in: path
+          description: Unique identifier for this vserver relative to its tenant
+          required: true
+          type: string
+        - name: volume-id
+          in: path
+          description: Unique ID of block storage volume relative to the vserver.
+          required: true
+          type: string
+        - name: resource-version
+          in: query
+          description: resource-version for concurrency
+          required: true
+          type: string
+  /cloud-infrastructure/cloud-regions/cloud-region/{cloud-owner}/{cloud-region-id}/tenants/tenant/{tenant-id}/vservers/vserver/{vserver-id}/volumes:
+    get:
+      tags:
+        - CloudInfrastructure
+      summary: returns volumes
+      description: returns volumes
+      operationId: getCloudInfrastructureCloudRegionsCloudRegionTenantsTenantVserversVserverVolumes
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "200":
+          description: successful operation
+          schema:
+              $ref: "#/definitions/volumes"
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: cloud-owner
+          in: path
+          description: Identifies the vendor and cloud name. First part of composite key should be formatted as vendor-cloudname
+          required: true
+          type: string
+        - name: cloud-region-id
+          in: path
+          description: Identifier used by the vendor for the region. Second part of composite key
+          required: true
+          type: string
+        - name: tenant-id
+          in: path
+          description: Unique id relative to the cloud-region.
+          required: true
+          type: string
+        - name: vserver-id
+          in: path
+          description: Unique identifier for this vserver relative to its tenant
+          required: true
+          type: string
+        - name: cloud-type
+          in: query
+          description: Type of the cloud (e.g., openstack)
+          required: false
+          type: string
+        - name: owner-defined-type
+          in: query
+          description: Cloud-owner defined type indicator (e.g., dcp, lcp)
+          required: false
+          type: string
+        - name: tenant-name
+          in: query
+          description: Readable name of tenant
+          required: false
+          type: string
+        - name: tenant-context
+          in: query
+          description: This field will store the tenant context.
+          required: false
+          type: string
+        - name: vserver-name
+          in: query
+          description: Name of vserver
+          required: false
+          type: string
+        - name: vserver-name2
+          in: query
+          description: Alternative name of vserver
+          required: false
+          type: string
+        - name: prov-status
+          in: query
+          description: Trigger for operational monitoring of this resource by Service Assurance systems.
+          required: false
+          type: string
+        - name: in-maint
+          in: query
+          required: false
+          type: boolean
+        - name: is-closed-loop-disabled
+          in: query
+          required: false
+          type: boolean
+  /cloud-infrastructure/cloud-regions/cloud-region/{cloud-owner}/{cloud-region-id}/tenants/tenant/{tenant-id}/vservers/vserver/{vserver-id}/relationship-list/relationship:
+    put:
+      tags:
+        - CloudInfrastructure
+      summary: see node definition for valid relationships
+      operationId: createOrUpdateCloudInfrastructureCloudRegionsCloudRegionTenantsTenantVserversVserverRelationshipListRelationship
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: cloud-owner
+          in: path
+          description: Identifies the vendor and cloud name. First part of composite key should be formatted as vendor-cloudname
+          required: true
+          type: string
+        - name: cloud-region-id
+          in: path
+          description: Identifier used by the vendor for the region. Second part of composite key
+          required: true
+          type: string
+        - name: tenant-id
+          in: path
+          description: Unique id relative to the cloud-region.
+          required: true
+          type: string
+        - name: vserver-id
+          in: path
+          description: Unique identifier for this vserver relative to its tenant
+          required: true
+          type: string
+        - name: body
+          in: body
+          description: relationship object that needs to be created or updated
+          required: true
+          schema:
+            $ref: "#/definitions/relationship"
+    delete:
+      tags:
+        - CloudInfrastructure
+      summary: delete an existing relationship
+      description: delete an existing relationship
+      operationId: deleteCloudInfrastructureCloudRegionsCloudRegionTenantsTenantVserversVserverRelationshipListRelationship
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: cloud-owner
+          in: path
+          description: Identifies the vendor and cloud name. First part of composite key should be formatted as vendor-cloudname
+          required: true
+          type: string
+        - name: cloud-region-id
+          in: path
+          description: Identifier used by the vendor for the region. Second part of composite key
+          required: true
+          type: string
+        - name: tenant-id
+          in: path
+          description: Unique id relative to the cloud-region.
+          required: true
+          type: string
+        - name: vserver-id
+          in: path
+          description: Unique identifier for this vserver relative to its tenant
+          required: true
+          type: string
+  /cloud-infrastructure/cloud-regions/cloud-region/{cloud-owner}/{cloud-region-id}/tenants/tenant/{tenant-id}/vservers/vserver/{vserver-id}/l-interfaces/l-interface/{interface-name}/vlans/vlan/{vlan-interface}/relationship-list/relationship:
+    put:
+      tags:
+        - CloudInfrastructure
+      summary: see node definition for valid relationships
+      operationId: createOrUpdateCloudInfrastructureCloudRegionsCloudRegionTenantsTenantVserversVserverLInterfacesLInterfaceVlansVlanRelationshipListRelationship
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: cloud-owner
+          in: path
+          description: Identifies the vendor and cloud name. First part of composite key should be formatted as vendor-cloudname
+          required: true
+          type: string
+        - name: cloud-region-id
+          in: path
+          description: Identifier used by the vendor for the region. Second part of composite key
+          required: true
+          type: string
+        - name: tenant-id
+          in: path
+          description: Unique id relative to the cloud-region.
+          required: true
+          type: string
+        - name: vserver-id
+          in: path
+          description: Unique identifier for this vserver relative to its tenant
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name given to the interface
+          required: true
+          type: string
+        - name: vlan-interface
+          in: path
+          description: String that identifies the interface
+          required: true
+          type: string
+        - name: body
+          in: body
+          description: relationship object that needs to be created or updated
+          required: true
+          schema:
+            $ref: "#/definitions/relationship"
+    delete:
+      tags:
+        - CloudInfrastructure
+      summary: delete an existing relationship
+      description: delete an existing relationship
+      operationId: deleteCloudInfrastructureCloudRegionsCloudRegionTenantsTenantVserversVserverLInterfacesLInterfaceVlansVlanRelationshipListRelationship
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: cloud-owner
+          in: path
+          description: Identifies the vendor and cloud name. First part of composite key should be formatted as vendor-cloudname
+          required: true
+          type: string
+        - name: cloud-region-id
+          in: path
+          description: Identifier used by the vendor for the region. Second part of composite key
+          required: true
+          type: string
+        - name: tenant-id
+          in: path
+          description: Unique id relative to the cloud-region.
+          required: true
+          type: string
+        - name: vserver-id
+          in: path
+          description: Unique identifier for this vserver relative to its tenant
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name given to the interface
+          required: true
+          type: string
+        - name: vlan-interface
+          in: path
+          description: String that identifies the interface
+          required: true
+          type: string
+  /cloud-infrastructure/cloud-regions/cloud-region/{cloud-owner}/{cloud-region-id}/tenants/tenant/{tenant-id}/vservers/vserver/{vserver-id}/l-interfaces/l-interface/{interface-name}/vlans/vlan/{vlan-interface}/l3-interface-ipv4-address-list/{l3-interface-ipv4-address}/relationship-list/relationship:
+    put:
+      tags:
+        - CloudInfrastructure
+      summary: see node definition for valid relationships
+      operationId: createOrUpdateCloudInfrastructureCloudRegionsCloudRegionTenantsTenantVserversVserverLInterfacesLInterfaceVlansVlanL3InterfaceIpv4AddressListRelationshipListRelationship
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: cloud-owner
+          in: path
+          description: Identifies the vendor and cloud name. First part of composite key should be formatted as vendor-cloudname
+          required: true
+          type: string
+        - name: cloud-region-id
+          in: path
+          description: Identifier used by the vendor for the region. Second part of composite key
+          required: true
+          type: string
+        - name: tenant-id
+          in: path
+          description: Unique id relative to the cloud-region.
+          required: true
+          type: string
+        - name: vserver-id
+          in: path
+          description: Unique identifier for this vserver relative to its tenant
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name given to the interface
+          required: true
+          type: string
+        - name: vlan-interface
+          in: path
+          description: String that identifies the interface
+          required: true
+          type: string
+        - name: l3-interface-ipv4-address
+          in: path
+          description: IP address
+          required: true
+          type: string
+        - name: body
+          in: body
+          description: relationship object that needs to be created or updated
+          required: true
+          schema:
+            $ref: "#/definitions/relationship"
+    delete:
+      tags:
+        - CloudInfrastructure
+      summary: delete an existing relationship
+      description: delete an existing relationship
+      operationId: deleteCloudInfrastructureCloudRegionsCloudRegionTenantsTenantVserversVserverLInterfacesLInterfaceVlansVlanL3InterfaceIpv4AddressListRelationshipListRelationship
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: cloud-owner
+          in: path
+          description: Identifies the vendor and cloud name. First part of composite key should be formatted as vendor-cloudname
+          required: true
+          type: string
+        - name: cloud-region-id
+          in: path
+          description: Identifier used by the vendor for the region. Second part of composite key
+          required: true
+          type: string
+        - name: tenant-id
+          in: path
+          description: Unique id relative to the cloud-region.
+          required: true
+          type: string
+        - name: vserver-id
+          in: path
+          description: Unique identifier for this vserver relative to its tenant
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name given to the interface
+          required: true
+          type: string
+        - name: vlan-interface
+          in: path
+          description: String that identifies the interface
+          required: true
+          type: string
+        - name: l3-interface-ipv4-address
+          in: path
+          description: IP address
+          required: true
+          type: string
+  /cloud-infrastructure/cloud-regions/cloud-region/{cloud-owner}/{cloud-region-id}/tenants/tenant/{tenant-id}/vservers/vserver/{vserver-id}/l-interfaces/l-interface/{interface-name}/vlans/vlan/{vlan-interface}/l3-interface-ipv4-address-list/{l3-interface-ipv4-address}:
+    get:
+      tags:
+        - CloudInfrastructure
+      summary: returns l3-interface-ipv4-address-list
+      description: returns l3-interface-ipv4-address-list
+      operationId: getCloudInfrastructureCloudRegionsCloudRegionTenantsTenantVserversVserverLInterfacesLInterfaceVlansVlanL3InterfaceIpv4AddressList
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "200":
+          description: successful operation
+          schema:
+              $ref: "#/definitions/l3-interface-ipv4-address-list"
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: cloud-owner
+          in: path
+          description: Identifies the vendor and cloud name. First part of composite key should be formatted as vendor-cloudname
+          required: true
+          type: string
+        - name: cloud-region-id
+          in: path
+          description: Identifier used by the vendor for the region. Second part of composite key
+          required: true
+          type: string
+        - name: tenant-id
+          in: path
+          description: Unique id relative to the cloud-region.
+          required: true
+          type: string
+        - name: vserver-id
+          in: path
+          description: Unique identifier for this vserver relative to its tenant
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name given to the interface
+          required: true
+          type: string
+        - name: vlan-interface
+          in: path
+          description: String that identifies the interface
+          required: true
+          type: string
+        - name: l3-interface-ipv4-address
+          in: path
+          description: IP address
+          required: true
+          type: string
+        - name: cloud-type
+          in: query
+          description: Type of the cloud (e.g., openstack)
+          required: false
+          type: string
+        - name: owner-defined-type
+          in: query
+          description: Cloud-owner defined type indicator (e.g., dcp, lcp)
+          required: false
+          type: string
+        - name: tenant-name
+          in: query
+          description: Readable name of tenant
+          required: false
+          type: string
+        - name: tenant-context
+          in: query
+          description: This field will store the tenant context.
+          required: false
+          type: string
+        - name: vserver-name
+          in: query
+          description: Name of vserver
+          required: false
+          type: string
+        - name: vserver-name2
+          in: query
+          description: Alternative name of vserver
+          required: false
+          type: string
+        - name: prov-status
+          in: query
+          description: Trigger for operational monitoring of this resource by Service Assurance systems.
+          required: false
+          type: string
+        - name: in-maint
+          in: query
+          required: false
+          type: boolean
+        - name: is-closed-loop-disabled
+          in: query
+          required: false
+          type: boolean
+        - name: interface-id
+          in: query
+          description: ID of interface
+          required: false
+          type: string
+        - name: macaddr
+          in: query
+          description: MAC address for the interface
+          required: false
+          type: string
+        - name: network-name
+          in: query
+          description: Name of the network
+          required: false
+          type: string
+        - name: vlan-id-inner
+          in: query
+          description: Inner VLAN tag
+          required: false
+          type: integer
+          format: int64
+        - name: vpn-key
+          in: query
+          description: This indicates the customers VPN ID associated with this vlan
+          required: false
+          type: string
+        - name: vlan-id-inner
+          in: query
+          description: Inner VLAN tag
+          required: false
+          type: integer
+          format: int64
+        - name: neutron-network-id
+          in: query
+          description: Neutron network id of the interface that address belongs to
+          required: false
+          type: string
+        - name: neutron-subnet-id
+          in: query
+          description: Neutron id of subnet that address belongs to
+          required: false
+          type: string
+    put:
+      tags:
+        - CloudInfrastructure
+      summary: create or update an existing l3-interface-ipv4-address-list
+      description: create or update an existing l3-interface-ipv4-address-list
+      operationId: createOrUpdateCloudInfrastructureCloudRegionsCloudRegionTenantsTenantVserversVserverLInterfacesLInterfaceVlansVlanL3InterfaceIpv4AddressList
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: cloud-owner
+          in: path
+          description: Identifies the vendor and cloud name. First part of composite key should be formatted as vendor-cloudname
+          required: true
+          type: string
+        - name: cloud-region-id
+          in: path
+          description: Identifier used by the vendor for the region. Second part of composite key
+          required: true
+          type: string
+        - name: tenant-id
+          in: path
+          description: Unique id relative to the cloud-region.
+          required: true
+          type: string
+        - name: vserver-id
+          in: path
+          description: Unique identifier for this vserver relative to its tenant
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name given to the interface
+          required: true
+          type: string
+        - name: vlan-interface
+          in: path
+          description: String that identifies the interface
+          required: true
+          type: string
+        - name: l3-interface-ipv4-address
+          in: path
+          description: IP address
+          required: true
+          type: string
+        - name: body
+          in: body
+          description: l3-interface-ipv4-address-list object that needs to be created or updated
+          required: true
+          schema:
+            $ref: "#/definitions/l3-interface-ipv4-address-list"
+    delete:
+      tags:
+        - CloudInfrastructure
+      summary: delete an existing l3-interface-ipv4-address-list
+      description: delete an existing l3-interface-ipv4-address-list
+      operationId: deleteCloudInfrastructureCloudRegionsCloudRegionTenantsTenantVserversVserverLInterfacesLInterfaceVlansVlanL3InterfaceIpv4AddressList
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: cloud-owner
+          in: path
+          description: Identifies the vendor and cloud name. First part of composite key should be formatted as vendor-cloudname
+          required: true
+          type: string
+        - name: cloud-region-id
+          in: path
+          description: Identifier used by the vendor for the region. Second part of composite key
+          required: true
+          type: string
+        - name: tenant-id
+          in: path
+          description: Unique id relative to the cloud-region.
+          required: true
+          type: string
+        - name: vserver-id
+          in: path
+          description: Unique identifier for this vserver relative to its tenant
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name given to the interface
+          required: true
+          type: string
+        - name: vlan-interface
+          in: path
+          description: String that identifies the interface
+          required: true
+          type: string
+        - name: l3-interface-ipv4-address
+          in: path
+          description: IP address
+          required: true
+          type: string
+        - name: resource-version
+          in: query
+          description: resource-version for concurrency
+          required: true
+          type: string
+  /cloud-infrastructure/cloud-regions/cloud-region/{cloud-owner}/{cloud-region-id}/tenants/tenant/{tenant-id}/vservers/vserver/{vserver-id}/l-interfaces/l-interface/{interface-name}/vlans/vlan/{vlan-interface}/l3-interface-ipv6-address-list/{l3-interface-ipv6-address}/relationship-list/relationship:
+    put:
+      tags:
+        - CloudInfrastructure
+      summary: see node definition for valid relationships
+      operationId: createOrUpdateCloudInfrastructureCloudRegionsCloudRegionTenantsTenantVserversVserverLInterfacesLInterfaceVlansVlanL3InterfaceIpv6AddressListRelationshipListRelationship
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: cloud-owner
+          in: path
+          description: Identifies the vendor and cloud name. First part of composite key should be formatted as vendor-cloudname
+          required: true
+          type: string
+        - name: cloud-region-id
+          in: path
+          description: Identifier used by the vendor for the region. Second part of composite key
+          required: true
+          type: string
+        - name: tenant-id
+          in: path
+          description: Unique id relative to the cloud-region.
+          required: true
+          type: string
+        - name: vserver-id
+          in: path
+          description: Unique identifier for this vserver relative to its tenant
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name given to the interface
+          required: true
+          type: string
+        - name: vlan-interface
+          in: path
+          description: String that identifies the interface
+          required: true
+          type: string
+        - name: l3-interface-ipv6-address
+          in: path
+          description: IP address
+          required: true
+          type: string
+        - name: body
+          in: body
+          description: relationship object that needs to be created or updated
+          required: true
+          schema:
+            $ref: "#/definitions/relationship"
+    delete:
+      tags:
+        - CloudInfrastructure
+      summary: delete an existing relationship
+      description: delete an existing relationship
+      operationId: deleteCloudInfrastructureCloudRegionsCloudRegionTenantsTenantVserversVserverLInterfacesLInterfaceVlansVlanL3InterfaceIpv6AddressListRelationshipListRelationship
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: cloud-owner
+          in: path
+          description: Identifies the vendor and cloud name. First part of composite key should be formatted as vendor-cloudname
+          required: true
+          type: string
+        - name: cloud-region-id
+          in: path
+          description: Identifier used by the vendor for the region. Second part of composite key
+          required: true
+          type: string
+        - name: tenant-id
+          in: path
+          description: Unique id relative to the cloud-region.
+          required: true
+          type: string
+        - name: vserver-id
+          in: path
+          description: Unique identifier for this vserver relative to its tenant
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name given to the interface
+          required: true
+          type: string
+        - name: vlan-interface
+          in: path
+          description: String that identifies the interface
+          required: true
+          type: string
+        - name: l3-interface-ipv6-address
+          in: path
+          description: IP address
+          required: true
+          type: string
+  /cloud-infrastructure/cloud-regions/cloud-region/{cloud-owner}/{cloud-region-id}/tenants/tenant/{tenant-id}/vservers/vserver/{vserver-id}/l-interfaces/l-interface/{interface-name}/vlans/vlan/{vlan-interface}/l3-interface-ipv6-address-list/{l3-interface-ipv6-address}:
+    get:
+      tags:
+        - CloudInfrastructure
+      summary: returns l3-interface-ipv6-address-list
+      description: returns l3-interface-ipv6-address-list
+      operationId: getCloudInfrastructureCloudRegionsCloudRegionTenantsTenantVserversVserverLInterfacesLInterfaceVlansVlanL3InterfaceIpv6AddressList
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "200":
+          description: successful operation
+          schema:
+              $ref: "#/definitions/l3-interface-ipv6-address-list"
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: cloud-owner
+          in: path
+          description: Identifies the vendor and cloud name. First part of composite key should be formatted as vendor-cloudname
+          required: true
+          type: string
+        - name: cloud-region-id
+          in: path
+          description: Identifier used by the vendor for the region. Second part of composite key
+          required: true
+          type: string
+        - name: tenant-id
+          in: path
+          description: Unique id relative to the cloud-region.
+          required: true
+          type: string
+        - name: vserver-id
+          in: path
+          description: Unique identifier for this vserver relative to its tenant
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name given to the interface
+          required: true
+          type: string
+        - name: vlan-interface
+          in: path
+          description: String that identifies the interface
+          required: true
+          type: string
+        - name: l3-interface-ipv6-address
+          in: path
+          description: IP address
+          required: true
+          type: string
+        - name: cloud-type
+          in: query
+          description: Type of the cloud (e.g., openstack)
+          required: false
+          type: string
+        - name: owner-defined-type
+          in: query
+          description: Cloud-owner defined type indicator (e.g., dcp, lcp)
+          required: false
+          type: string
+        - name: tenant-name
+          in: query
+          description: Readable name of tenant
+          required: false
+          type: string
+        - name: tenant-context
+          in: query
+          description: This field will store the tenant context.
+          required: false
+          type: string
+        - name: vserver-name
+          in: query
+          description: Name of vserver
+          required: false
+          type: string
+        - name: vserver-name2
+          in: query
+          description: Alternative name of vserver
+          required: false
+          type: string
+        - name: prov-status
+          in: query
+          description: Trigger for operational monitoring of this resource by Service Assurance systems.
+          required: false
+          type: string
+        - name: in-maint
+          in: query
+          required: false
+          type: boolean
+        - name: is-closed-loop-disabled
+          in: query
+          required: false
+          type: boolean
+        - name: interface-id
+          in: query
+          description: ID of interface
+          required: false
+          type: string
+        - name: macaddr
+          in: query
+          description: MAC address for the interface
+          required: false
+          type: string
+        - name: network-name
+          in: query
+          description: Name of the network
+          required: false
+          type: string
+        - name: vlan-id-inner
+          in: query
+          description: Inner VLAN tag
+          required: false
+          type: integer
+          format: int64
+        - name: vpn-key
+          in: query
+          description: This indicates the customers VPN ID associated with this vlan
+          required: false
+          type: string
+        - name: vlan-id-inner
+          in: query
+          description: Inner VLAN tag
+          required: false
+          type: integer
+          format: int64
+        - name: neutron-network-id
+          in: query
+          description: Neutron network id of the interface that address belongs to
+          required: false
+          type: string
+        - name: neutron-subnet-id
+          in: query
+          description: Neutron id of subnet that address belongs to
+          required: false
+          type: string
+    put:
+      tags:
+        - CloudInfrastructure
+      summary: create or update an existing l3-interface-ipv6-address-list
+      description: create or update an existing l3-interface-ipv6-address-list
+      operationId: createOrUpdateCloudInfrastructureCloudRegionsCloudRegionTenantsTenantVserversVserverLInterfacesLInterfaceVlansVlanL3InterfaceIpv6AddressList
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: cloud-owner
+          in: path
+          description: Identifies the vendor and cloud name. First part of composite key should be formatted as vendor-cloudname
+          required: true
+          type: string
+        - name: cloud-region-id
+          in: path
+          description: Identifier used by the vendor for the region. Second part of composite key
+          required: true
+          type: string
+        - name: tenant-id
+          in: path
+          description: Unique id relative to the cloud-region.
+          required: true
+          type: string
+        - name: vserver-id
+          in: path
+          description: Unique identifier for this vserver relative to its tenant
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name given to the interface
+          required: true
+          type: string
+        - name: vlan-interface
+          in: path
+          description: String that identifies the interface
+          required: true
+          type: string
+        - name: l3-interface-ipv6-address
+          in: path
+          description: IP address
+          required: true
+          type: string
+        - name: body
+          in: body
+          description: l3-interface-ipv6-address-list object that needs to be created or updated
+          required: true
+          schema:
+            $ref: "#/definitions/l3-interface-ipv6-address-list"
+    delete:
+      tags:
+        - CloudInfrastructure
+      summary: delete an existing l3-interface-ipv6-address-list
+      description: delete an existing l3-interface-ipv6-address-list
+      operationId: deleteCloudInfrastructureCloudRegionsCloudRegionTenantsTenantVserversVserverLInterfacesLInterfaceVlansVlanL3InterfaceIpv6AddressList
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: cloud-owner
+          in: path
+          description: Identifies the vendor and cloud name. First part of composite key should be formatted as vendor-cloudname
+          required: true
+          type: string
+        - name: cloud-region-id
+          in: path
+          description: Identifier used by the vendor for the region. Second part of composite key
+          required: true
+          type: string
+        - name: tenant-id
+          in: path
+          description: Unique id relative to the cloud-region.
+          required: true
+          type: string
+        - name: vserver-id
+          in: path
+          description: Unique identifier for this vserver relative to its tenant
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name given to the interface
+          required: true
+          type: string
+        - name: vlan-interface
+          in: path
+          description: String that identifies the interface
+          required: true
+          type: string
+        - name: l3-interface-ipv6-address
+          in: path
+          description: IP address
+          required: true
+          type: string
+        - name: resource-version
+          in: query
+          description: resource-version for concurrency
+          required: true
+          type: string
+  /cloud-infrastructure/cloud-regions/cloud-region/{cloud-owner}/{cloud-region-id}/tenants/tenant/{tenant-id}/vservers/vserver/{vserver-id}/l-interfaces/l-interface/{interface-name}/vlans/vlan/{vlan-interface}:
+    get:
+      tags:
+        - CloudInfrastructure
+      summary: returns vlan
+      description: returns vlan
+      operationId: getCloudInfrastructureCloudRegionsCloudRegionTenantsTenantVserversVserverLInterfacesLInterfaceVlansVlan
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "200":
+          description: successful operation
+          schema:
+              $ref: "#/definitions/vlan"
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: cloud-owner
+          in: path
+          description: Identifies the vendor and cloud name. First part of composite key should be formatted as vendor-cloudname
+          required: true
+          type: string
+        - name: cloud-region-id
+          in: path
+          description: Identifier used by the vendor for the region. Second part of composite key
+          required: true
+          type: string
+        - name: tenant-id
+          in: path
+          description: Unique id relative to the cloud-region.
+          required: true
+          type: string
+        - name: vserver-id
+          in: path
+          description: Unique identifier for this vserver relative to its tenant
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name given to the interface
+          required: true
+          type: string
+        - name: vlan-interface
+          in: path
+          description: String that identifies the interface
+          required: true
+          type: string
+        - name: cloud-type
+          in: query
+          description: Type of the cloud (e.g., openstack)
+          required: false
+          type: string
+        - name: owner-defined-type
+          in: query
+          description: Cloud-owner defined type indicator (e.g., dcp, lcp)
+          required: false
+          type: string
+        - name: tenant-name
+          in: query
+          description: Readable name of tenant
+          required: false
+          type: string
+        - name: tenant-context
+          in: query
+          description: This field will store the tenant context.
+          required: false
+          type: string
+        - name: vserver-name
+          in: query
+          description: Name of vserver
+          required: false
+          type: string
+        - name: vserver-name2
+          in: query
+          description: Alternative name of vserver
+          required: false
+          type: string
+        - name: prov-status
+          in: query
+          description: Trigger for operational monitoring of this resource by Service Assurance systems.
+          required: false
+          type: string
+        - name: in-maint
+          in: query
+          required: false
+          type: boolean
+        - name: is-closed-loop-disabled
+          in: query
+          required: false
+          type: boolean
+        - name: interface-id
+          in: query
+          description: ID of interface
+          required: false
+          type: string
+        - name: macaddr
+          in: query
+          description: MAC address for the interface
+          required: false
+          type: string
+        - name: network-name
+          in: query
+          description: Name of the network
+          required: false
+          type: string
+        - name: vlan-id-inner
+          in: query
+          description: Inner VLAN tag
+          required: false
+          type: integer
+          format: int64
+        - name: vpn-key
+          in: query
+          description: This indicates the customers VPN ID associated with this vlan
+          required: false
+          type: string
+    put:
+      tags:
+        - CloudInfrastructure
+      summary: create or update an existing vlan
+      description: create or update an existing vlan
+      operationId: createOrUpdateCloudInfrastructureCloudRegionsCloudRegionTenantsTenantVserversVserverLInterfacesLInterfaceVlansVlan
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: cloud-owner
+          in: path
+          description: Identifies the vendor and cloud name. First part of composite key should be formatted as vendor-cloudname
+          required: true
+          type: string
+        - name: cloud-region-id
+          in: path
+          description: Identifier used by the vendor for the region. Second part of composite key
+          required: true
+          type: string
+        - name: tenant-id
+          in: path
+          description: Unique id relative to the cloud-region.
+          required: true
+          type: string
+        - name: vserver-id
+          in: path
+          description: Unique identifier for this vserver relative to its tenant
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name given to the interface
+          required: true
+          type: string
+        - name: vlan-interface
+          in: path
+          description: String that identifies the interface
+          required: true
+          type: string
+        - name: body
+          in: body
+          description: vlan object that needs to be created or updated
+          required: true
+          schema:
+            $ref: "#/definitions/vlan"
+    delete:
+      tags:
+        - CloudInfrastructure
+      summary: delete an existing vlan
+      description: delete an existing vlan
+      operationId: deleteCloudInfrastructureCloudRegionsCloudRegionTenantsTenantVserversVserverLInterfacesLInterfaceVlansVlan
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: cloud-owner
+          in: path
+          description: Identifies the vendor and cloud name. First part of composite key should be formatted as vendor-cloudname
+          required: true
+          type: string
+        - name: cloud-region-id
+          in: path
+          description: Identifier used by the vendor for the region. Second part of composite key
+          required: true
+          type: string
+        - name: tenant-id
+          in: path
+          description: Unique id relative to the cloud-region.
+          required: true
+          type: string
+        - name: vserver-id
+          in: path
+          description: Unique identifier for this vserver relative to its tenant
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name given to the interface
+          required: true
+          type: string
+        - name: vlan-interface
+          in: path
+          description: String that identifies the interface
+          required: true
+          type: string
+        - name: resource-version
+          in: query
+          description: resource-version for concurrency
+          required: true
+          type: string
+  /cloud-infrastructure/cloud-regions/cloud-region/{cloud-owner}/{cloud-region-id}/tenants/tenant/{tenant-id}/vservers/vserver/{vserver-id}/l-interfaces/l-interface/{interface-name}/vlans:
+    get:
+      tags:
+        - CloudInfrastructure
+      summary: returns vlans
+      description: returns vlans
+      operationId: getCloudInfrastructureCloudRegionsCloudRegionTenantsTenantVserversVserverLInterfacesLInterfaceVlans
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "200":
+          description: successful operation
+          schema:
+              $ref: "#/definitions/vlans"
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: cloud-owner
+          in: path
+          description: Identifies the vendor and cloud name. First part of composite key should be formatted as vendor-cloudname
+          required: true
+          type: string
+        - name: cloud-region-id
+          in: path
+          description: Identifier used by the vendor for the region. Second part of composite key
+          required: true
+          type: string
+        - name: tenant-id
+          in: path
+          description: Unique id relative to the cloud-region.
+          required: true
+          type: string
+        - name: vserver-id
+          in: path
+          description: Unique identifier for this vserver relative to its tenant
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name given to the interface
+          required: true
+          type: string
+        - name: cloud-type
+          in: query
+          description: Type of the cloud (e.g., openstack)
+          required: false
+          type: string
+        - name: owner-defined-type
+          in: query
+          description: Cloud-owner defined type indicator (e.g., dcp, lcp)
+          required: false
+          type: string
+        - name: tenant-name
+          in: query
+          description: Readable name of tenant
+          required: false
+          type: string
+        - name: tenant-context
+          in: query
+          description: This field will store the tenant context.
+          required: false
+          type: string
+        - name: vserver-name
+          in: query
+          description: Name of vserver
+          required: false
+          type: string
+        - name: vserver-name2
+          in: query
+          description: Alternative name of vserver
+          required: false
+          type: string
+        - name: prov-status
+          in: query
+          description: Trigger for operational monitoring of this resource by Service Assurance systems.
+          required: false
+          type: string
+        - name: in-maint
+          in: query
+          required: false
+          type: boolean
+        - name: is-closed-loop-disabled
+          in: query
+          required: false
+          type: boolean
+        - name: interface-id
+          in: query
+          description: ID of interface
+          required: false
+          type: string
+        - name: macaddr
+          in: query
+          description: MAC address for the interface
+          required: false
+          type: string
+        - name: network-name
+          in: query
+          description: Name of the network
+          required: false
+          type: string
+  /cloud-infrastructure/cloud-regions/cloud-region/{cloud-owner}/{cloud-region-id}/tenants/tenant/{tenant-id}/vservers/vserver/{vserver-id}/l-interfaces/l-interface/{interface-name}/sriov-vfs/sriov-vf/{pci-id}/relationship-list/relationship:
+    put:
+      tags:
+        - CloudInfrastructure
+      summary: see node definition for valid relationships
+      operationId: createOrUpdateCloudInfrastructureCloudRegionsCloudRegionTenantsTenantVserversVserverLInterfacesLInterfaceSriovVfsSriovVfRelationshipListRelationship
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: cloud-owner
+          in: path
+          description: Identifies the vendor and cloud name. First part of composite key should be formatted as vendor-cloudname
+          required: true
+          type: string
+        - name: cloud-region-id
+          in: path
+          description: Identifier used by the vendor for the region. Second part of composite key
+          required: true
+          type: string
+        - name: tenant-id
+          in: path
+          description: Unique id relative to the cloud-region.
+          required: true
+          type: string
+        - name: vserver-id
+          in: path
+          description: Unique identifier for this vserver relative to its tenant
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name given to the interface
+          required: true
+          type: string
+        - name: pci-id
+          in: path
+          description: PCI ID used to identify the sriov-vf
+          required: true
+          type: string
+        - name: body
+          in: body
+          description: relationship object that needs to be created or updated
+          required: true
+          schema:
+            $ref: "#/definitions/relationship"
+    delete:
+      tags:
+        - CloudInfrastructure
+      summary: delete an existing relationship
+      description: delete an existing relationship
+      operationId: deleteCloudInfrastructureCloudRegionsCloudRegionTenantsTenantVserversVserverLInterfacesLInterfaceSriovVfsSriovVfRelationshipListRelationship
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: cloud-owner
+          in: path
+          description: Identifies the vendor and cloud name. First part of composite key should be formatted as vendor-cloudname
+          required: true
+          type: string
+        - name: cloud-region-id
+          in: path
+          description: Identifier used by the vendor for the region. Second part of composite key
+          required: true
+          type: string
+        - name: tenant-id
+          in: path
+          description: Unique id relative to the cloud-region.
+          required: true
+          type: string
+        - name: vserver-id
+          in: path
+          description: Unique identifier for this vserver relative to its tenant
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name given to the interface
+          required: true
+          type: string
+        - name: pci-id
+          in: path
+          description: PCI ID used to identify the sriov-vf
+          required: true
+          type: string
+  /cloud-infrastructure/cloud-regions/cloud-region/{cloud-owner}/{cloud-region-id}/tenants/tenant/{tenant-id}/vservers/vserver/{vserver-id}/l-interfaces/l-interface/{interface-name}/sriov-vfs/sriov-vf/{pci-id}:
+    get:
+      tags:
+        - CloudInfrastructure
+      summary: returns sriov-vf
+      description: returns sriov-vf
+      operationId: getCloudInfrastructureCloudRegionsCloudRegionTenantsTenantVserversVserverLInterfacesLInterfaceSriovVfsSriovVf
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "200":
+          description: successful operation
+          schema:
+              $ref: "#/definitions/sriov-vf"
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: cloud-owner
+          in: path
+          description: Identifies the vendor and cloud name. First part of composite key should be formatted as vendor-cloudname
+          required: true
+          type: string
+        - name: cloud-region-id
+          in: path
+          description: Identifier used by the vendor for the region. Second part of composite key
+          required: true
+          type: string
+        - name: tenant-id
+          in: path
+          description: Unique id relative to the cloud-region.
+          required: true
+          type: string
+        - name: vserver-id
+          in: path
+          description: Unique identifier for this vserver relative to its tenant
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name given to the interface
+          required: true
+          type: string
+        - name: pci-id
+          in: path
+          description: PCI ID used to identify the sriov-vf
+          required: true
+          type: string
+        - name: cloud-type
+          in: query
+          description: Type of the cloud (e.g., openstack)
+          required: false
+          type: string
+        - name: owner-defined-type
+          in: query
+          description: Cloud-owner defined type indicator (e.g., dcp, lcp)
+          required: false
+          type: string
+        - name: tenant-name
+          in: query
+          description: Readable name of tenant
+          required: false
+          type: string
+        - name: tenant-context
+          in: query
+          description: This field will store the tenant context.
+          required: false
+          type: string
+        - name: vserver-name
+          in: query
+          description: Name of vserver
+          required: false
+          type: string
+        - name: vserver-name2
+          in: query
+          description: Alternative name of vserver
+          required: false
+          type: string
+        - name: prov-status
+          in: query
+          description: Trigger for operational monitoring of this resource by Service Assurance systems.
+          required: false
+          type: string
+        - name: in-maint
+          in: query
+          required: false
+          type: boolean
+        - name: is-closed-loop-disabled
+          in: query
+          required: false
+          type: boolean
+        - name: interface-id
+          in: query
+          description: ID of interface
+          required: false
+          type: string
+        - name: macaddr
+          in: query
+          description: MAC address for the interface
+          required: false
+          type: string
+        - name: network-name
+          in: query
+          description: Name of the network
+          required: false
+          type: string
+        - name: vf-vlan-filter
+          in: query
+          description: This metadata provides option to specify list of VLAN filters applied on VF to pass the traffic to VM.
+          required: false
+          type: string
+        - name: vf-mac-filter
+          in: query
+          description: When MAC filters are specified, VF-agent service configures VFs to do MAC level filtering before the traffic is passed to VM.
+          required: false
+          type: string
+        - name: vf-vlan-strip
+          in: query
+          description: When this field is set to true, VF will configured to strip the outer TAG before the traffic is passed to VM.
+          required: false
+          type: boolean
+        - name: neutron-network-id
+          in: query
+          description: Neutron network id of the interface
+          required: false
+          type: string
+    put:
+      tags:
+        - CloudInfrastructure
+      summary: create or update an existing sriov-vf
+      description: create or update an existing sriov-vf
+      operationId: createOrUpdateCloudInfrastructureCloudRegionsCloudRegionTenantsTenantVserversVserverLInterfacesLInterfaceSriovVfsSriovVf
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: cloud-owner
+          in: path
+          description: Identifies the vendor and cloud name. First part of composite key should be formatted as vendor-cloudname
+          required: true
+          type: string
+        - name: cloud-region-id
+          in: path
+          description: Identifier used by the vendor for the region. Second part of composite key
+          required: true
+          type: string
+        - name: tenant-id
+          in: path
+          description: Unique id relative to the cloud-region.
+          required: true
+          type: string
+        - name: vserver-id
+          in: path
+          description: Unique identifier for this vserver relative to its tenant
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name given to the interface
+          required: true
+          type: string
+        - name: pci-id
+          in: path
+          description: PCI ID used to identify the sriov-vf
+          required: true
+          type: string
+        - name: body
+          in: body
+          description: sriov-vf object that needs to be created or updated
+          required: true
+          schema:
+            $ref: "#/definitions/sriov-vf"
+    delete:
+      tags:
+        - CloudInfrastructure
+      summary: delete an existing sriov-vf
+      description: delete an existing sriov-vf
+      operationId: deleteCloudInfrastructureCloudRegionsCloudRegionTenantsTenantVserversVserverLInterfacesLInterfaceSriovVfsSriovVf
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: cloud-owner
+          in: path
+          description: Identifies the vendor and cloud name. First part of composite key should be formatted as vendor-cloudname
+          required: true
+          type: string
+        - name: cloud-region-id
+          in: path
+          description: Identifier used by the vendor for the region. Second part of composite key
+          required: true
+          type: string
+        - name: tenant-id
+          in: path
+          description: Unique id relative to the cloud-region.
+          required: true
+          type: string
+        - name: vserver-id
+          in: path
+          description: Unique identifier for this vserver relative to its tenant
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name given to the interface
+          required: true
+          type: string
+        - name: pci-id
+          in: path
+          description: PCI ID used to identify the sriov-vf
+          required: true
+          type: string
+        - name: resource-version
+          in: query
+          description: resource-version for concurrency
+          required: true
+          type: string
+  /cloud-infrastructure/cloud-regions/cloud-region/{cloud-owner}/{cloud-region-id}/tenants/tenant/{tenant-id}/vservers/vserver/{vserver-id}/l-interfaces/l-interface/{interface-name}/sriov-vfs:
+    get:
+      tags:
+        - CloudInfrastructure
+      summary: returns sriov-vfs
+      description: returns sriov-vfs
+      operationId: getCloudInfrastructureCloudRegionsCloudRegionTenantsTenantVserversVserverLInterfacesLInterfaceSriovVfs
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "200":
+          description: successful operation
+          schema:
+              $ref: "#/definitions/sriov-vfs"
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: cloud-owner
+          in: path
+          description: Identifies the vendor and cloud name. First part of composite key should be formatted as vendor-cloudname
+          required: true
+          type: string
+        - name: cloud-region-id
+          in: path
+          description: Identifier used by the vendor for the region. Second part of composite key
+          required: true
+          type: string
+        - name: tenant-id
+          in: path
+          description: Unique id relative to the cloud-region.
+          required: true
+          type: string
+        - name: vserver-id
+          in: path
+          description: Unique identifier for this vserver relative to its tenant
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name given to the interface
+          required: true
+          type: string
+        - name: cloud-type
+          in: query
+          description: Type of the cloud (e.g., openstack)
+          required: false
+          type: string
+        - name: owner-defined-type
+          in: query
+          description: Cloud-owner defined type indicator (e.g., dcp, lcp)
+          required: false
+          type: string
+        - name: tenant-name
+          in: query
+          description: Readable name of tenant
+          required: false
+          type: string
+        - name: tenant-context
+          in: query
+          description: This field will store the tenant context.
+          required: false
+          type: string
+        - name: vserver-name
+          in: query
+          description: Name of vserver
+          required: false
+          type: string
+        - name: vserver-name2
+          in: query
+          description: Alternative name of vserver
+          required: false
+          type: string
+        - name: prov-status
+          in: query
+          description: Trigger for operational monitoring of this resource by Service Assurance systems.
+          required: false
+          type: string
+        - name: in-maint
+          in: query
+          required: false
+          type: boolean
+        - name: is-closed-loop-disabled
+          in: query
+          required: false
+          type: boolean
+        - name: interface-id
+          in: query
+          description: ID of interface
+          required: false
+          type: string
+        - name: macaddr
+          in: query
+          description: MAC address for the interface
+          required: false
+          type: string
+        - name: network-name
+          in: query
+          description: Name of the network
+          required: false
+          type: string
+  /cloud-infrastructure/cloud-regions/cloud-region/{cloud-owner}/{cloud-region-id}/tenants/tenant/{tenant-id}/vservers/vserver/{vserver-id}/l-interfaces/l-interface/{interface-name}/relationship-list/relationship:
+    put:
+      tags:
+        - CloudInfrastructure
+      summary: see node definition for valid relationships
+      operationId: createOrUpdateCloudInfrastructureCloudRegionsCloudRegionTenantsTenantVserversVserverLInterfacesLInterfaceRelationshipListRelationship
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: cloud-owner
+          in: path
+          description: Identifies the vendor and cloud name. First part of composite key should be formatted as vendor-cloudname
+          required: true
+          type: string
+        - name: cloud-region-id
+          in: path
+          description: Identifier used by the vendor for the region. Second part of composite key
+          required: true
+          type: string
+        - name: tenant-id
+          in: path
+          description: Unique id relative to the cloud-region.
+          required: true
+          type: string
+        - name: vserver-id
+          in: path
+          description: Unique identifier for this vserver relative to its tenant
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name given to the interface
+          required: true
+          type: string
+        - name: body
+          in: body
+          description: relationship object that needs to be created or updated
+          required: true
+          schema:
+            $ref: "#/definitions/relationship"
+    delete:
+      tags:
+        - CloudInfrastructure
+      summary: delete an existing relationship
+      description: delete an existing relationship
+      operationId: deleteCloudInfrastructureCloudRegionsCloudRegionTenantsTenantVserversVserverLInterfacesLInterfaceRelationshipListRelationship
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: cloud-owner
+          in: path
+          description: Identifies the vendor and cloud name. First part of composite key should be formatted as vendor-cloudname
+          required: true
+          type: string
+        - name: cloud-region-id
+          in: path
+          description: Identifier used by the vendor for the region. Second part of composite key
+          required: true
+          type: string
+        - name: tenant-id
+          in: path
+          description: Unique id relative to the cloud-region.
+          required: true
+          type: string
+        - name: vserver-id
+          in: path
+          description: Unique identifier for this vserver relative to its tenant
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name given to the interface
+          required: true
+          type: string
+  /cloud-infrastructure/cloud-regions/cloud-region/{cloud-owner}/{cloud-region-id}/tenants/tenant/{tenant-id}/vservers/vserver/{vserver-id}/l-interfaces/l-interface/{interface-name}/l3-interface-ipv4-address-list/{l3-interface-ipv4-address}/relationship-list/relationship:
+    put:
+      tags:
+        - CloudInfrastructure
+      summary: see node definition for valid relationships
+      operationId: createOrUpdateCloudInfrastructureCloudRegionsCloudRegionTenantsTenantVserversVserverLInterfacesLInterfaceL3InterfaceIpv4AddressListRelationshipListRelationship
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: cloud-owner
+          in: path
+          description: Identifies the vendor and cloud name. First part of composite key should be formatted as vendor-cloudname
+          required: true
+          type: string
+        - name: cloud-region-id
+          in: path
+          description: Identifier used by the vendor for the region. Second part of composite key
+          required: true
+          type: string
+        - name: tenant-id
+          in: path
+          description: Unique id relative to the cloud-region.
+          required: true
+          type: string
+        - name: vserver-id
+          in: path
+          description: Unique identifier for this vserver relative to its tenant
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name given to the interface
+          required: true
+          type: string
+        - name: l3-interface-ipv4-address
+          in: path
+          description: IP address
+          required: true
+          type: string
+        - name: body
+          in: body
+          description: relationship object that needs to be created or updated
+          required: true
+          schema:
+            $ref: "#/definitions/relationship"
+    delete:
+      tags:
+        - CloudInfrastructure
+      summary: delete an existing relationship
+      description: delete an existing relationship
+      operationId: deleteCloudInfrastructureCloudRegionsCloudRegionTenantsTenantVserversVserverLInterfacesLInterfaceL3InterfaceIpv4AddressListRelationshipListRelationship
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: cloud-owner
+          in: path
+          description: Identifies the vendor and cloud name. First part of composite key should be formatted as vendor-cloudname
+          required: true
+          type: string
+        - name: cloud-region-id
+          in: path
+          description: Identifier used by the vendor for the region. Second part of composite key
+          required: true
+          type: string
+        - name: tenant-id
+          in: path
+          description: Unique id relative to the cloud-region.
+          required: true
+          type: string
+        - name: vserver-id
+          in: path
+          description: Unique identifier for this vserver relative to its tenant
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name given to the interface
+          required: true
+          type: string
+        - name: l3-interface-ipv4-address
+          in: path
+          description: IP address
+          required: true
+          type: string
+  /cloud-infrastructure/cloud-regions/cloud-region/{cloud-owner}/{cloud-region-id}/tenants/tenant/{tenant-id}/vservers/vserver/{vserver-id}/l-interfaces/l-interface/{interface-name}/l3-interface-ipv4-address-list/{l3-interface-ipv4-address}:
+    get:
+      tags:
+        - CloudInfrastructure
+      summary: returns l3-interface-ipv4-address-list
+      description: returns l3-interface-ipv4-address-list
+      operationId: getCloudInfrastructureCloudRegionsCloudRegionTenantsTenantVserversVserverLInterfacesLInterfaceL3InterfaceIpv4AddressList
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "200":
+          description: successful operation
+          schema:
+              $ref: "#/definitions/l3-interface-ipv4-address-list"
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: cloud-owner
+          in: path
+          description: Identifies the vendor and cloud name. First part of composite key should be formatted as vendor-cloudname
+          required: true
+          type: string
+        - name: cloud-region-id
+          in: path
+          description: Identifier used by the vendor for the region. Second part of composite key
+          required: true
+          type: string
+        - name: tenant-id
+          in: path
+          description: Unique id relative to the cloud-region.
+          required: true
+          type: string
+        - name: vserver-id
+          in: path
+          description: Unique identifier for this vserver relative to its tenant
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name given to the interface
+          required: true
+          type: string
+        - name: l3-interface-ipv4-address
+          in: path
+          description: IP address
+          required: true
+          type: string
+        - name: cloud-type
+          in: query
+          description: Type of the cloud (e.g., openstack)
+          required: false
+          type: string
+        - name: owner-defined-type
+          in: query
+          description: Cloud-owner defined type indicator (e.g., dcp, lcp)
+          required: false
+          type: string
+        - name: tenant-name
+          in: query
+          description: Readable name of tenant
+          required: false
+          type: string
+        - name: tenant-context
+          in: query
+          description: This field will store the tenant context.
+          required: false
+          type: string
+        - name: vserver-name
+          in: query
+          description: Name of vserver
+          required: false
+          type: string
+        - name: vserver-name2
+          in: query
+          description: Alternative name of vserver
+          required: false
+          type: string
+        - name: prov-status
+          in: query
+          description: Trigger for operational monitoring of this resource by Service Assurance systems.
+          required: false
+          type: string
+        - name: in-maint
+          in: query
+          required: false
+          type: boolean
+        - name: is-closed-loop-disabled
+          in: query
+          required: false
+          type: boolean
+        - name: interface-id
+          in: query
+          description: ID of interface
+          required: false
+          type: string
+        - name: macaddr
+          in: query
+          description: MAC address for the interface
+          required: false
+          type: string
+        - name: network-name
+          in: query
+          description: Name of the network
+          required: false
+          type: string
+        - name: vlan-id-inner
+          in: query
+          description: Inner VLAN tag
+          required: false
+          type: integer
+          format: int64
+        - name: neutron-network-id
+          in: query
+          description: Neutron network id of the interface that address belongs to
+          required: false
+          type: string
+        - name: neutron-subnet-id
+          in: query
+          description: Neutron id of subnet that address belongs to
+          required: false
+          type: string
+    put:
+      tags:
+        - CloudInfrastructure
+      summary: create or update an existing l3-interface-ipv4-address-list
+      description: create or update an existing l3-interface-ipv4-address-list
+      operationId: createOrUpdateCloudInfrastructureCloudRegionsCloudRegionTenantsTenantVserversVserverLInterfacesLInterfaceL3InterfaceIpv4AddressList
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: cloud-owner
+          in: path
+          description: Identifies the vendor and cloud name. First part of composite key should be formatted as vendor-cloudname
+          required: true
+          type: string
+        - name: cloud-region-id
+          in: path
+          description: Identifier used by the vendor for the region. Second part of composite key
+          required: true
+          type: string
+        - name: tenant-id
+          in: path
+          description: Unique id relative to the cloud-region.
+          required: true
+          type: string
+        - name: vserver-id
+          in: path
+          description: Unique identifier for this vserver relative to its tenant
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name given to the interface
+          required: true
+          type: string
+        - name: l3-interface-ipv4-address
+          in: path
+          description: IP address
+          required: true
+          type: string
+        - name: body
+          in: body
+          description: l3-interface-ipv4-address-list object that needs to be created or updated
+          required: true
+          schema:
+            $ref: "#/definitions/l3-interface-ipv4-address-list"
+    delete:
+      tags:
+        - CloudInfrastructure
+      summary: delete an existing l3-interface-ipv4-address-list
+      description: delete an existing l3-interface-ipv4-address-list
+      operationId: deleteCloudInfrastructureCloudRegionsCloudRegionTenantsTenantVserversVserverLInterfacesLInterfaceL3InterfaceIpv4AddressList
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: cloud-owner
+          in: path
+          description: Identifies the vendor and cloud name. First part of composite key should be formatted as vendor-cloudname
+          required: true
+          type: string
+        - name: cloud-region-id
+          in: path
+          description: Identifier used by the vendor for the region. Second part of composite key
+          required: true
+          type: string
+        - name: tenant-id
+          in: path
+          description: Unique id relative to the cloud-region.
+          required: true
+          type: string
+        - name: vserver-id
+          in: path
+          description: Unique identifier for this vserver relative to its tenant
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name given to the interface
+          required: true
+          type: string
+        - name: l3-interface-ipv4-address
+          in: path
+          description: IP address
+          required: true
+          type: string
+        - name: resource-version
+          in: query
+          description: resource-version for concurrency
+          required: true
+          type: string
+  /cloud-infrastructure/cloud-regions/cloud-region/{cloud-owner}/{cloud-region-id}/tenants/tenant/{tenant-id}/vservers/vserver/{vserver-id}/l-interfaces/l-interface/{interface-name}/l3-interface-ipv6-address-list/{l3-interface-ipv6-address}/relationship-list/relationship:
+    put:
+      tags:
+        - CloudInfrastructure
+      summary: see node definition for valid relationships
+      operationId: createOrUpdateCloudInfrastructureCloudRegionsCloudRegionTenantsTenantVserversVserverLInterfacesLInterfaceL3InterfaceIpv6AddressListRelationshipListRelationship
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: cloud-owner
+          in: path
+          description: Identifies the vendor and cloud name. First part of composite key should be formatted as vendor-cloudname
+          required: true
+          type: string
+        - name: cloud-region-id
+          in: path
+          description: Identifier used by the vendor for the region. Second part of composite key
+          required: true
+          type: string
+        - name: tenant-id
+          in: path
+          description: Unique id relative to the cloud-region.
+          required: true
+          type: string
+        - name: vserver-id
+          in: path
+          description: Unique identifier for this vserver relative to its tenant
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name given to the interface
+          required: true
+          type: string
+        - name: l3-interface-ipv6-address
+          in: path
+          description: IP address
+          required: true
+          type: string
+        - name: body
+          in: body
+          description: relationship object that needs to be created or updated
+          required: true
+          schema:
+            $ref: "#/definitions/relationship"
+    delete:
+      tags:
+        - CloudInfrastructure
+      summary: delete an existing relationship
+      description: delete an existing relationship
+      operationId: deleteCloudInfrastructureCloudRegionsCloudRegionTenantsTenantVserversVserverLInterfacesLInterfaceL3InterfaceIpv6AddressListRelationshipListRelationship
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: cloud-owner
+          in: path
+          description: Identifies the vendor and cloud name. First part of composite key should be formatted as vendor-cloudname
+          required: true
+          type: string
+        - name: cloud-region-id
+          in: path
+          description: Identifier used by the vendor for the region. Second part of composite key
+          required: true
+          type: string
+        - name: tenant-id
+          in: path
+          description: Unique id relative to the cloud-region.
+          required: true
+          type: string
+        - name: vserver-id
+          in: path
+          description: Unique identifier for this vserver relative to its tenant
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name given to the interface
+          required: true
+          type: string
+        - name: l3-interface-ipv6-address
+          in: path
+          description: IP address
+          required: true
+          type: string
+  /cloud-infrastructure/cloud-regions/cloud-region/{cloud-owner}/{cloud-region-id}/tenants/tenant/{tenant-id}/vservers/vserver/{vserver-id}/l-interfaces/l-interface/{interface-name}/l3-interface-ipv6-address-list/{l3-interface-ipv6-address}:
+    get:
+      tags:
+        - CloudInfrastructure
+      summary: returns l3-interface-ipv6-address-list
+      description: returns l3-interface-ipv6-address-list
+      operationId: getCloudInfrastructureCloudRegionsCloudRegionTenantsTenantVserversVserverLInterfacesLInterfaceL3InterfaceIpv6AddressList
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "200":
+          description: successful operation
+          schema:
+              $ref: "#/definitions/l3-interface-ipv6-address-list"
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: cloud-owner
+          in: path
+          description: Identifies the vendor and cloud name. First part of composite key should be formatted as vendor-cloudname
+          required: true
+          type: string
+        - name: cloud-region-id
+          in: path
+          description: Identifier used by the vendor for the region. Second part of composite key
+          required: true
+          type: string
+        - name: tenant-id
+          in: path
+          description: Unique id relative to the cloud-region.
+          required: true
+          type: string
+        - name: vserver-id
+          in: path
+          description: Unique identifier for this vserver relative to its tenant
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name given to the interface
+          required: true
+          type: string
+        - name: l3-interface-ipv6-address
+          in: path
+          description: IP address
+          required: true
+          type: string
+        - name: cloud-type
+          in: query
+          description: Type of the cloud (e.g., openstack)
+          required: false
+          type: string
+        - name: owner-defined-type
+          in: query
+          description: Cloud-owner defined type indicator (e.g., dcp, lcp)
+          required: false
+          type: string
+        - name: tenant-name
+          in: query
+          description: Readable name of tenant
+          required: false
+          type: string
+        - name: tenant-context
+          in: query
+          description: This field will store the tenant context.
+          required: false
+          type: string
+        - name: vserver-name
+          in: query
+          description: Name of vserver
+          required: false
+          type: string
+        - name: vserver-name2
+          in: query
+          description: Alternative name of vserver
+          required: false
+          type: string
+        - name: prov-status
+          in: query
+          description: Trigger for operational monitoring of this resource by Service Assurance systems.
+          required: false
+          type: string
+        - name: in-maint
+          in: query
+          required: false
+          type: boolean
+        - name: is-closed-loop-disabled
+          in: query
+          required: false
+          type: boolean
+        - name: interface-id
+          in: query
+          description: ID of interface
+          required: false
+          type: string
+        - name: macaddr
+          in: query
+          description: MAC address for the interface
+          required: false
+          type: string
+        - name: network-name
+          in: query
+          description: Name of the network
+          required: false
+          type: string
+        - name: vlan-id-inner
+          in: query
+          description: Inner VLAN tag
+          required: false
+          type: integer
+          format: int64
+        - name: neutron-network-id
+          in: query
+          description: Neutron network id of the interface that address belongs to
+          required: false
+          type: string
+        - name: neutron-subnet-id
+          in: query
+          description: Neutron id of subnet that address belongs to
+          required: false
+          type: string
+    put:
+      tags:
+        - CloudInfrastructure
+      summary: create or update an existing l3-interface-ipv6-address-list
+      description: create or update an existing l3-interface-ipv6-address-list
+      operationId: createOrUpdateCloudInfrastructureCloudRegionsCloudRegionTenantsTenantVserversVserverLInterfacesLInterfaceL3InterfaceIpv6AddressList
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: cloud-owner
+          in: path
+          description: Identifies the vendor and cloud name. First part of composite key should be formatted as vendor-cloudname
+          required: true
+          type: string
+        - name: cloud-region-id
+          in: path
+          description: Identifier used by the vendor for the region. Second part of composite key
+          required: true
+          type: string
+        - name: tenant-id
+          in: path
+          description: Unique id relative to the cloud-region.
+          required: true
+          type: string
+        - name: vserver-id
+          in: path
+          description: Unique identifier for this vserver relative to its tenant
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name given to the interface
+          required: true
+          type: string
+        - name: l3-interface-ipv6-address
+          in: path
+          description: IP address
+          required: true
+          type: string
+        - name: body
+          in: body
+          description: l3-interface-ipv6-address-list object that needs to be created or updated
+          required: true
+          schema:
+            $ref: "#/definitions/l3-interface-ipv6-address-list"
+    delete:
+      tags:
+        - CloudInfrastructure
+      summary: delete an existing l3-interface-ipv6-address-list
+      description: delete an existing l3-interface-ipv6-address-list
+      operationId: deleteCloudInfrastructureCloudRegionsCloudRegionTenantsTenantVserversVserverLInterfacesLInterfaceL3InterfaceIpv6AddressList
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: cloud-owner
+          in: path
+          description: Identifies the vendor and cloud name. First part of composite key should be formatted as vendor-cloudname
+          required: true
+          type: string
+        - name: cloud-region-id
+          in: path
+          description: Identifier used by the vendor for the region. Second part of composite key
+          required: true
+          type: string
+        - name: tenant-id
+          in: path
+          description: Unique id relative to the cloud-region.
+          required: true
+          type: string
+        - name: vserver-id
+          in: path
+          description: Unique identifier for this vserver relative to its tenant
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name given to the interface
+          required: true
+          type: string
+        - name: l3-interface-ipv6-address
+          in: path
+          description: IP address
+          required: true
+          type: string
+        - name: resource-version
+          in: query
+          description: resource-version for concurrency
+          required: true
+          type: string
+  /cloud-infrastructure/cloud-regions/cloud-region/{cloud-owner}/{cloud-region-id}/tenants/tenant/{tenant-id}/vservers/vserver/{vserver-id}/l-interfaces/l-interface/{interface-name}:
+    get:
+      tags:
+        - CloudInfrastructure
+      summary: returns l-interface
+      description: returns l-interface
+      operationId: getCloudInfrastructureCloudRegionsCloudRegionTenantsTenantVserversVserverLInterfacesLInterface
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "200":
+          description: successful operation
+          schema:
+              $ref: "#/definitions/l-interface"
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: cloud-owner
+          in: path
+          description: Identifies the vendor and cloud name. First part of composite key should be formatted as vendor-cloudname
+          required: true
+          type: string
+        - name: cloud-region-id
+          in: path
+          description: Identifier used by the vendor for the region. Second part of composite key
+          required: true
+          type: string
+        - name: tenant-id
+          in: path
+          description: Unique id relative to the cloud-region.
+          required: true
+          type: string
+        - name: vserver-id
+          in: path
+          description: Unique identifier for this vserver relative to its tenant
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name given to the interface
+          required: true
+          type: string
+        - name: cloud-type
+          in: query
+          description: Type of the cloud (e.g., openstack)
+          required: false
+          type: string
+        - name: owner-defined-type
+          in: query
+          description: Cloud-owner defined type indicator (e.g., dcp, lcp)
+          required: false
+          type: string
+        - name: tenant-name
+          in: query
+          description: Readable name of tenant
+          required: false
+          type: string
+        - name: tenant-context
+          in: query
+          description: This field will store the tenant context.
+          required: false
+          type: string
+        - name: vserver-name
+          in: query
+          description: Name of vserver
+          required: false
+          type: string
+        - name: vserver-name2
+          in: query
+          description: Alternative name of vserver
+          required: false
+          type: string
+        - name: prov-status
+          in: query
+          description: Trigger for operational monitoring of this resource by Service Assurance systems.
+          required: false
+          type: string
+        - name: in-maint
+          in: query
+          required: false
+          type: boolean
+        - name: is-closed-loop-disabled
+          in: query
+          required: false
+          type: boolean
+        - name: interface-id
+          in: query
+          description: ID of interface
+          required: false
+          type: string
+        - name: macaddr
+          in: query
+          description: MAC address for the interface
+          required: false
+          type: string
+        - name: network-name
+          in: query
+          description: Name of the network
+          required: false
+          type: string
+    put:
+      tags:
+        - CloudInfrastructure
+      summary: create or update an existing l-interface
+      description: create or update an existing l-interface
+      operationId: createOrUpdateCloudInfrastructureCloudRegionsCloudRegionTenantsTenantVserversVserverLInterfacesLInterface
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: cloud-owner
+          in: path
+          description: Identifies the vendor and cloud name. First part of composite key should be formatted as vendor-cloudname
+          required: true
+          type: string
+        - name: cloud-region-id
+          in: path
+          description: Identifier used by the vendor for the region. Second part of composite key
+          required: true
+          type: string
+        - name: tenant-id
+          in: path
+          description: Unique id relative to the cloud-region.
+          required: true
+          type: string
+        - name: vserver-id
+          in: path
+          description: Unique identifier for this vserver relative to its tenant
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name given to the interface
+          required: true
+          type: string
+        - name: body
+          in: body
+          description: l-interface object that needs to be created or updated
+          required: true
+          schema:
+            $ref: "#/definitions/l-interface"
+    delete:
+      tags:
+        - CloudInfrastructure
+      summary: delete an existing l-interface
+      description: delete an existing l-interface
+      operationId: deleteCloudInfrastructureCloudRegionsCloudRegionTenantsTenantVserversVserverLInterfacesLInterface
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: cloud-owner
+          in: path
+          description: Identifies the vendor and cloud name. First part of composite key should be formatted as vendor-cloudname
+          required: true
+          type: string
+        - name: cloud-region-id
+          in: path
+          description: Identifier used by the vendor for the region. Second part of composite key
+          required: true
+          type: string
+        - name: tenant-id
+          in: path
+          description: Unique id relative to the cloud-region.
+          required: true
+          type: string
+        - name: vserver-id
+          in: path
+          description: Unique identifier for this vserver relative to its tenant
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name given to the interface
+          required: true
+          type: string
+        - name: resource-version
+          in: query
+          description: resource-version for concurrency
+          required: true
+          type: string
+  /cloud-infrastructure/cloud-regions/cloud-region/{cloud-owner}/{cloud-region-id}/tenants/tenant/{tenant-id}/vservers/vserver/{vserver-id}/l-interfaces:
+    get:
+      tags:
+        - CloudInfrastructure
+      summary: returns l-interfaces
+      description: returns l-interfaces
+      operationId: getCloudInfrastructureCloudRegionsCloudRegionTenantsTenantVserversVserverLInterfaces
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "200":
+          description: successful operation
+          schema:
+              $ref: "#/definitions/l-interfaces"
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: cloud-owner
+          in: path
+          description: Identifies the vendor and cloud name. First part of composite key should be formatted as vendor-cloudname
+          required: true
+          type: string
+        - name: cloud-region-id
+          in: path
+          description: Identifier used by the vendor for the region. Second part of composite key
+          required: true
+          type: string
+        - name: tenant-id
+          in: path
+          description: Unique id relative to the cloud-region.
+          required: true
+          type: string
+        - name: vserver-id
+          in: path
+          description: Unique identifier for this vserver relative to its tenant
+          required: true
+          type: string
+        - name: cloud-type
+          in: query
+          description: Type of the cloud (e.g., openstack)
+          required: false
+          type: string
+        - name: owner-defined-type
+          in: query
+          description: Cloud-owner defined type indicator (e.g., dcp, lcp)
+          required: false
+          type: string
+        - name: tenant-name
+          in: query
+          description: Readable name of tenant
+          required: false
+          type: string
+        - name: tenant-context
+          in: query
+          description: This field will store the tenant context.
+          required: false
+          type: string
+        - name: vserver-name
+          in: query
+          description: Name of vserver
+          required: false
+          type: string
+        - name: vserver-name2
+          in: query
+          description: Alternative name of vserver
+          required: false
+          type: string
+        - name: prov-status
+          in: query
+          description: Trigger for operational monitoring of this resource by Service Assurance systems.
+          required: false
+          type: string
+        - name: in-maint
+          in: query
+          required: false
+          type: boolean
+        - name: is-closed-loop-disabled
+          in: query
+          required: false
+          type: boolean
+  /cloud-infrastructure/cloud-regions/cloud-region/{cloud-owner}/{cloud-region-id}/tenants/tenant/{tenant-id}/vservers/vserver/{vserver-id}:
+    get:
+      tags:
+        - CloudInfrastructure
+      summary: returns vserver
+      description: returns vserver
+      operationId: getCloudInfrastructureCloudRegionsCloudRegionTenantsTenantVserversVserver
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "200":
+          description: successful operation
+          schema:
+              $ref: "#/definitions/vserver"
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: cloud-owner
+          in: path
+          description: Identifies the vendor and cloud name. First part of composite key should be formatted as vendor-cloudname
+          required: true
+          type: string
+        - name: cloud-region-id
+          in: path
+          description: Identifier used by the vendor for the region. Second part of composite key
+          required: true
+          type: string
+        - name: tenant-id
+          in: path
+          description: Unique id relative to the cloud-region.
+          required: true
+          type: string
+        - name: vserver-id
+          in: path
+          description: Unique identifier for this vserver relative to its tenant
+          required: true
+          type: string
+        - name: cloud-type
+          in: query
+          description: Type of the cloud (e.g., openstack)
+          required: false
+          type: string
+        - name: owner-defined-type
+          in: query
+          description: Cloud-owner defined type indicator (e.g., dcp, lcp)
+          required: false
+          type: string
+        - name: tenant-name
+          in: query
+          description: Readable name of tenant
+          required: false
+          type: string
+        - name: tenant-context
+          in: query
+          description: This field will store the tenant context.
+          required: false
+          type: string
+        - name: vserver-name
+          in: query
+          description: Name of vserver
+          required: false
+          type: string
+        - name: vserver-name2
+          in: query
+          description: Alternative name of vserver
+          required: false
+          type: string
+        - name: prov-status
+          in: query
+          description: Trigger for operational monitoring of this resource by Service Assurance systems.
+          required: false
+          type: string
+        - name: in-maint
+          in: query
+          required: false
+          type: boolean
+        - name: is-closed-loop-disabled
+          in: query
+          required: false
+          type: boolean
+    put:
+      tags:
+        - CloudInfrastructure
+      summary: create or update an existing vserver
+      description: create or update an existing vserver
+      operationId: createOrUpdateCloudInfrastructureCloudRegionsCloudRegionTenantsTenantVserversVserver
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: cloud-owner
+          in: path
+          description: Identifies the vendor and cloud name. First part of composite key should be formatted as vendor-cloudname
+          required: true
+          type: string
+        - name: cloud-region-id
+          in: path
+          description: Identifier used by the vendor for the region. Second part of composite key
+          required: true
+          type: string
+        - name: tenant-id
+          in: path
+          description: Unique id relative to the cloud-region.
+          required: true
+          type: string
+        - name: vserver-id
+          in: path
+          description: Unique identifier for this vserver relative to its tenant
+          required: true
+          type: string
+        - name: body
+          in: body
+          description: vserver object that needs to be created or updated
+          required: true
+          schema:
+            $ref: "#/definitions/vserver"
+    delete:
+      tags:
+        - CloudInfrastructure
+      summary: delete an existing vserver
+      description: delete an existing vserver
+      operationId: deleteCloudInfrastructureCloudRegionsCloudRegionTenantsTenantVserversVserver
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: cloud-owner
+          in: path
+          description: Identifies the vendor and cloud name. First part of composite key should be formatted as vendor-cloudname
+          required: true
+          type: string
+        - name: cloud-region-id
+          in: path
+          description: Identifier used by the vendor for the region. Second part of composite key
+          required: true
+          type: string
+        - name: tenant-id
+          in: path
+          description: Unique id relative to the cloud-region.
+          required: true
+          type: string
+        - name: vserver-id
+          in: path
+          description: Unique identifier for this vserver relative to its tenant
+          required: true
+          type: string
+        - name: resource-version
+          in: query
+          description: resource-version for concurrency
+          required: true
+          type: string
+  /cloud-infrastructure/cloud-regions/cloud-region/{cloud-owner}/{cloud-region-id}/tenants/tenant/{tenant-id}/vservers:
+    get:
+      tags:
+        - CloudInfrastructure
+      summary: returns vservers
+      description: returns vservers
+      operationId: getCloudInfrastructureCloudRegionsCloudRegionTenantsTenantVservers
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "200":
+          description: successful operation
+          schema:
+              $ref: "#/definitions/vservers"
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: cloud-owner
+          in: path
+          description: Identifies the vendor and cloud name. First part of composite key should be formatted as vendor-cloudname
+          required: true
+          type: string
+        - name: cloud-region-id
+          in: path
+          description: Identifier used by the vendor for the region. Second part of composite key
+          required: true
+          type: string
+        - name: tenant-id
+          in: path
+          description: Unique id relative to the cloud-region.
+          required: true
+          type: string
+        - name: cloud-type
+          in: query
+          description: Type of the cloud (e.g., openstack)
+          required: false
+          type: string
+        - name: owner-defined-type
+          in: query
+          description: Cloud-owner defined type indicator (e.g., dcp, lcp)
+          required: false
+          type: string
+        - name: tenant-name
+          in: query
+          description: Readable name of tenant
+          required: false
+          type: string
+        - name: tenant-context
+          in: query
+          description: This field will store the tenant context.
+          required: false
+          type: string
+  /cloud-infrastructure/cloud-regions/cloud-region/{cloud-owner}/{cloud-region-id}/tenants/tenant/{tenant-id}/relationship-list/relationship:
+    put:
+      tags:
+        - CloudInfrastructure
+      summary: see node definition for valid relationships
+      operationId: createOrUpdateCloudInfrastructureCloudRegionsCloudRegionTenantsTenantRelationshipListRelationship
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: cloud-owner
+          in: path
+          description: Identifies the vendor and cloud name. First part of composite key should be formatted as vendor-cloudname
+          required: true
+          type: string
+        - name: cloud-region-id
+          in: path
+          description: Identifier used by the vendor for the region. Second part of composite key
+          required: true
+          type: string
+        - name: tenant-id
+          in: path
+          description: Unique id relative to the cloud-region.
+          required: true
+          type: string
+        - name: body
+          in: body
+          description: relationship object that needs to be created or updated
+          required: true
+          schema:
+            $ref: "#/definitions/relationship"
+    delete:
+      tags:
+        - CloudInfrastructure
+      summary: delete an existing relationship
+      description: delete an existing relationship
+      operationId: deleteCloudInfrastructureCloudRegionsCloudRegionTenantsTenantRelationshipListRelationship
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: cloud-owner
+          in: path
+          description: Identifies the vendor and cloud name. First part of composite key should be formatted as vendor-cloudname
+          required: true
+          type: string
+        - name: cloud-region-id
+          in: path
+          description: Identifier used by the vendor for the region. Second part of composite key
+          required: true
+          type: string
+        - name: tenant-id
+          in: path
+          description: Unique id relative to the cloud-region.
+          required: true
+          type: string
+  /cloud-infrastructure/cloud-regions/cloud-region/{cloud-owner}/{cloud-region-id}/tenants/tenant/{tenant-id}:
+    get:
+      tags:
+        - CloudInfrastructure
+      summary: returns tenant
+      description: returns tenant
+      operationId: getCloudInfrastructureCloudRegionsCloudRegionTenantsTenant
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "200":
+          description: successful operation
+          schema:
+              $ref: "#/definitions/tenant"
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: cloud-owner
+          in: path
+          description: Identifies the vendor and cloud name. First part of composite key should be formatted as vendor-cloudname
+          required: true
+          type: string
+        - name: cloud-region-id
+          in: path
+          description: Identifier used by the vendor for the region. Second part of composite key
+          required: true
+          type: string
+        - name: tenant-id
+          in: path
+          description: Unique id relative to the cloud-region.
+          required: true
+          type: string
+        - name: cloud-type
+          in: query
+          description: Type of the cloud (e.g., openstack)
+          required: false
+          type: string
+        - name: owner-defined-type
+          in: query
+          description: Cloud-owner defined type indicator (e.g., dcp, lcp)
+          required: false
+          type: string
+        - name: tenant-name
+          in: query
+          description: Readable name of tenant
+          required: false
+          type: string
+        - name: tenant-context
+          in: query
+          description: This field will store the tenant context.
+          required: false
+          type: string
+    put:
+      tags:
+        - CloudInfrastructure
+      summary: create or update an existing tenant
+      description: create or update an existing tenant
+      operationId: createOrUpdateCloudInfrastructureCloudRegionsCloudRegionTenantsTenant
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: cloud-owner
+          in: path
+          description: Identifies the vendor and cloud name. First part of composite key should be formatted as vendor-cloudname
+          required: true
+          type: string
+        - name: cloud-region-id
+          in: path
+          description: Identifier used by the vendor for the region. Second part of composite key
+          required: true
+          type: string
+        - name: tenant-id
+          in: path
+          description: Unique id relative to the cloud-region.
+          required: true
+          type: string
+        - name: body
+          in: body
+          description: tenant object that needs to be created or updated
+          required: true
+          schema:
+            $ref: "#/definitions/tenant"
+    delete:
+      tags:
+        - CloudInfrastructure
+      summary: delete an existing tenant
+      description: delete an existing tenant
+      operationId: deleteCloudInfrastructureCloudRegionsCloudRegionTenantsTenant
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: cloud-owner
+          in: path
+          description: Identifies the vendor and cloud name. First part of composite key should be formatted as vendor-cloudname
+          required: true
+          type: string
+        - name: cloud-region-id
+          in: path
+          description: Identifier used by the vendor for the region. Second part of composite key
+          required: true
+          type: string
+        - name: tenant-id
+          in: path
+          description: Unique id relative to the cloud-region.
+          required: true
+          type: string
+        - name: resource-version
+          in: query
+          description: resource-version for concurrency
+          required: true
+          type: string
+  /cloud-infrastructure/cloud-regions/cloud-region/{cloud-owner}/{cloud-region-id}/tenants:
+    get:
+      tags:
+        - CloudInfrastructure
+      summary: returns tenants
+      description: returns tenants
+      operationId: getCloudInfrastructureCloudRegionsCloudRegionTenants
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "200":
+          description: successful operation
+          schema:
+              $ref: "#/definitions/tenants"
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: cloud-owner
+          in: path
+          description: Identifies the vendor and cloud name. First part of composite key should be formatted as vendor-cloudname
+          required: true
+          type: string
+        - name: cloud-region-id
+          in: path
+          description: Identifier used by the vendor for the region. Second part of composite key
+          required: true
+          type: string
+        - name: cloud-type
+          in: query
+          description: Type of the cloud (e.g., openstack)
+          required: false
+          type: string
+        - name: owner-defined-type
+          in: query
+          description: Cloud-owner defined type indicator (e.g., dcp, lcp)
+          required: false
+          type: string
+  /cloud-infrastructure/cloud-regions/cloud-region/{cloud-owner}/{cloud-region-id}/flavors/flavor/{flavor-id}/relationship-list/relationship:
+    put:
+      tags:
+        - CloudInfrastructure
+      summary: see node definition for valid relationships
+      operationId: createOrUpdateCloudInfrastructureCloudRegionsCloudRegionFlavorsFlavorRelationshipListRelationship
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: cloud-owner
+          in: path
+          description: Identifies the vendor and cloud name. First part of composite key should be formatted as vendor-cloudname
+          required: true
+          type: string
+        - name: cloud-region-id
+          in: path
+          description: Identifier used by the vendor for the region. Second part of composite key
+          required: true
+          type: string
+        - name: flavor-id
+          in: path
+          description: Flavor id, expected to be unique across cloud-region.
+          required: true
+          type: string
+        - name: body
+          in: body
+          description: relationship object that needs to be created or updated
+          required: true
+          schema:
+            $ref: "#/definitions/relationship"
+    delete:
+      tags:
+        - CloudInfrastructure
+      summary: delete an existing relationship
+      description: delete an existing relationship
+      operationId: deleteCloudInfrastructureCloudRegionsCloudRegionFlavorsFlavorRelationshipListRelationship
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: cloud-owner
+          in: path
+          description: Identifies the vendor and cloud name. First part of composite key should be formatted as vendor-cloudname
+          required: true
+          type: string
+        - name: cloud-region-id
+          in: path
+          description: Identifier used by the vendor for the region. Second part of composite key
+          required: true
+          type: string
+        - name: flavor-id
+          in: path
+          description: Flavor id, expected to be unique across cloud-region.
+          required: true
+          type: string
+  /cloud-infrastructure/cloud-regions/cloud-region/{cloud-owner}/{cloud-region-id}/flavors/flavor/{flavor-id}:
+    get:
+      tags:
+        - CloudInfrastructure
+      summary: returns flavor
+      description: returns flavor
+      operationId: getCloudInfrastructureCloudRegionsCloudRegionFlavorsFlavor
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "200":
+          description: successful operation
+          schema:
+              $ref: "#/definitions/flavor"
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: cloud-owner
+          in: path
+          description: Identifies the vendor and cloud name. First part of composite key should be formatted as vendor-cloudname
+          required: true
+          type: string
+        - name: cloud-region-id
+          in: path
+          description: Identifier used by the vendor for the region. Second part of composite key
+          required: true
+          type: string
+        - name: flavor-id
+          in: path
+          description: Flavor id, expected to be unique across cloud-region.
+          required: true
+          type: string
+        - name: cloud-type
+          in: query
+          description: Type of the cloud (e.g., openstack)
+          required: false
+          type: string
+        - name: owner-defined-type
+          in: query
+          description: Cloud-owner defined type indicator (e.g., dcp, lcp)
+          required: false
+          type: string
+        - name: flavor-name
+          in: query
+          description: Flavor name
+          required: false
+          type: string
+    put:
+      tags:
+        - CloudInfrastructure
+      summary: create or update an existing flavor
+      description: create or update an existing flavor
+      operationId: createOrUpdateCloudInfrastructureCloudRegionsCloudRegionFlavorsFlavor
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: cloud-owner
+          in: path
+          description: Identifies the vendor and cloud name. First part of composite key should be formatted as vendor-cloudname
+          required: true
+          type: string
+        - name: cloud-region-id
+          in: path
+          description: Identifier used by the vendor for the region. Second part of composite key
+          required: true
+          type: string
+        - name: flavor-id
+          in: path
+          description: Flavor id, expected to be unique across cloud-region.
+          required: true
+          type: string
+        - name: body
+          in: body
+          description: flavor object that needs to be created or updated
+          required: true
+          schema:
+            $ref: "#/definitions/flavor"
+    delete:
+      tags:
+        - CloudInfrastructure
+      summary: delete an existing flavor
+      description: delete an existing flavor
+      operationId: deleteCloudInfrastructureCloudRegionsCloudRegionFlavorsFlavor
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: cloud-owner
+          in: path
+          description: Identifies the vendor and cloud name. First part of composite key should be formatted as vendor-cloudname
+          required: true
+          type: string
+        - name: cloud-region-id
+          in: path
+          description: Identifier used by the vendor for the region. Second part of composite key
+          required: true
+          type: string
+        - name: flavor-id
+          in: path
+          description: Flavor id, expected to be unique across cloud-region.
+          required: true
+          type: string
+        - name: resource-version
+          in: query
+          description: resource-version for concurrency
+          required: true
+          type: string
+  /cloud-infrastructure/cloud-regions/cloud-region/{cloud-owner}/{cloud-region-id}/flavors:
+    get:
+      tags:
+        - CloudInfrastructure
+      summary: returns flavors
+      description: returns flavors
+      operationId: getCloudInfrastructureCloudRegionsCloudRegionFlavors
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "200":
+          description: successful operation
+          schema:
+              $ref: "#/definitions/flavors"
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: cloud-owner
+          in: path
+          description: Identifies the vendor and cloud name. First part of composite key should be formatted as vendor-cloudname
+          required: true
+          type: string
+        - name: cloud-region-id
+          in: path
+          description: Identifier used by the vendor for the region. Second part of composite key
+          required: true
+          type: string
+        - name: cloud-type
+          in: query
+          description: Type of the cloud (e.g., openstack)
+          required: false
+          type: string
+        - name: owner-defined-type
+          in: query
+          description: Cloud-owner defined type indicator (e.g., dcp, lcp)
+          required: false
+          type: string
+  /cloud-infrastructure/cloud-regions/cloud-region/{cloud-owner}/{cloud-region-id}/group-assignments/group-assignment/{group-id}/relationship-list/relationship:
+    put:
+      tags:
+        - CloudInfrastructure
+      summary: see node definition for valid relationships
+      operationId: createOrUpdateCloudInfrastructureCloudRegionsCloudRegionGroupAssignmentsGroupAssignmentRelationshipListRelationship
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: cloud-owner
+          in: path
+          description: Identifies the vendor and cloud name. First part of composite key should be formatted as vendor-cloudname
+          required: true
+          type: string
+        - name: cloud-region-id
+          in: path
+          description: Identifier used by the vendor for the region. Second part of composite key
+          required: true
+          type: string
+        - name: group-id
+          in: path
+          description: Group id, expected to be unique across cloud-region.
+          required: true
+          type: string
+        - name: body
+          in: body
+          description: relationship object that needs to be created or updated
+          required: true
+          schema:
+            $ref: "#/definitions/relationship"
+    delete:
+      tags:
+        - CloudInfrastructure
+      summary: delete an existing relationship
+      description: delete an existing relationship
+      operationId: deleteCloudInfrastructureCloudRegionsCloudRegionGroupAssignmentsGroupAssignmentRelationshipListRelationship
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: cloud-owner
+          in: path
+          description: Identifies the vendor and cloud name. First part of composite key should be formatted as vendor-cloudname
+          required: true
+          type: string
+        - name: cloud-region-id
+          in: path
+          description: Identifier used by the vendor for the region. Second part of composite key
+          required: true
+          type: string
+        - name: group-id
+          in: path
+          description: Group id, expected to be unique across cloud-region.
+          required: true
+          type: string
+  /cloud-infrastructure/cloud-regions/cloud-region/{cloud-owner}/{cloud-region-id}/group-assignments/group-assignment/{group-id}:
+    get:
+      tags:
+        - CloudInfrastructure
+      summary: returns group-assignment
+      description: returns group-assignment
+      operationId: getCloudInfrastructureCloudRegionsCloudRegionGroupAssignmentsGroupAssignment
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "200":
+          description: successful operation
+          schema:
+              $ref: "#/definitions/group-assignment"
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: cloud-owner
+          in: path
+          description: Identifies the vendor and cloud name. First part of composite key should be formatted as vendor-cloudname
+          required: true
+          type: string
+        - name: cloud-region-id
+          in: path
+          description: Identifier used by the vendor for the region. Second part of composite key
+          required: true
+          type: string
+        - name: group-id
+          in: path
+          description: Group id, expected to be unique across cloud-region.
+          required: true
+          type: string
+        - name: cloud-type
+          in: query
+          description: Type of the cloud (e.g., openstack)
+          required: false
+          type: string
+        - name: owner-defined-type
+          in: query
+          description: Cloud-owner defined type indicator (e.g., dcp, lcp)
+          required: false
+          type: string
+        - name: group-type
+          in: query
+          description: Group type - the type of group this instance refers to
+          required: false
+          type: string
+        - name: group-name
+          in: query
+          description: Group name - name assigned to the group
+          required: false
+          type: string
+    put:
+      tags:
+        - CloudInfrastructure
+      summary: create or update an existing group-assignment
+      description: create or update an existing group-assignment
+      operationId: createOrUpdateCloudInfrastructureCloudRegionsCloudRegionGroupAssignmentsGroupAssignment
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: cloud-owner
+          in: path
+          description: Identifies the vendor and cloud name. First part of composite key should be formatted as vendor-cloudname
+          required: true
+          type: string
+        - name: cloud-region-id
+          in: path
+          description: Identifier used by the vendor for the region. Second part of composite key
+          required: true
+          type: string
+        - name: group-id
+          in: path
+          description: Group id, expected to be unique across cloud-region.
+          required: true
+          type: string
+        - name: body
+          in: body
+          description: group-assignment object that needs to be created or updated
+          required: true
+          schema:
+            $ref: "#/definitions/group-assignment"
+    delete:
+      tags:
+        - CloudInfrastructure
+      summary: delete an existing group-assignment
+      description: delete an existing group-assignment
+      operationId: deleteCloudInfrastructureCloudRegionsCloudRegionGroupAssignmentsGroupAssignment
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: cloud-owner
+          in: path
+          description: Identifies the vendor and cloud name. First part of composite key should be formatted as vendor-cloudname
+          required: true
+          type: string
+        - name: cloud-region-id
+          in: path
+          description: Identifier used by the vendor for the region. Second part of composite key
+          required: true
+          type: string
+        - name: group-id
+          in: path
+          description: Group id, expected to be unique across cloud-region.
+          required: true
+          type: string
+        - name: resource-version
+          in: query
+          description: resource-version for concurrency
+          required: true
+          type: string
+  /cloud-infrastructure/cloud-regions/cloud-region/{cloud-owner}/{cloud-region-id}/group-assignments:
+    get:
+      tags:
+        - CloudInfrastructure
+      summary: returns group-assignments
+      description: returns group-assignments
+      operationId: getCloudInfrastructureCloudRegionsCloudRegionGroupAssignments
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "200":
+          description: successful operation
+          schema:
+              $ref: "#/definitions/group-assignments"
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: cloud-owner
+          in: path
+          description: Identifies the vendor and cloud name. First part of composite key should be formatted as vendor-cloudname
+          required: true
+          type: string
+        - name: cloud-region-id
+          in: path
+          description: Identifier used by the vendor for the region. Second part of composite key
+          required: true
+          type: string
+        - name: cloud-type
+          in: query
+          description: Type of the cloud (e.g., openstack)
+          required: false
+          type: string
+        - name: owner-defined-type
+          in: query
+          description: Cloud-owner defined type indicator (e.g., dcp, lcp)
+          required: false
+          type: string
+  /cloud-infrastructure/cloud-regions/cloud-region/{cloud-owner}/{cloud-region-id}/snapshots/snapshot/{snapshot-id}/relationship-list/relationship:
+    put:
+      tags:
+        - CloudInfrastructure
+      summary: see node definition for valid relationships
+      operationId: createOrUpdateCloudInfrastructureCloudRegionsCloudRegionSnapshotsSnapshotRelationshipListRelationship
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: cloud-owner
+          in: path
+          description: Identifies the vendor and cloud name. First part of composite key should be formatted as vendor-cloudname
+          required: true
+          type: string
+        - name: cloud-region-id
+          in: path
+          description: Identifier used by the vendor for the region. Second part of composite key
+          required: true
+          type: string
+        - name: snapshot-id
+          in: path
+          description: Snapshot id, this is the key UUID assoc associated in glance with the snapshots.
+          required: true
+          type: string
+        - name: body
+          in: body
+          description: relationship object that needs to be created or updated
+          required: true
+          schema:
+            $ref: "#/definitions/relationship"
+    delete:
+      tags:
+        - CloudInfrastructure
+      summary: delete an existing relationship
+      description: delete an existing relationship
+      operationId: deleteCloudInfrastructureCloudRegionsCloudRegionSnapshotsSnapshotRelationshipListRelationship
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: cloud-owner
+          in: path
+          description: Identifies the vendor and cloud name. First part of composite key should be formatted as vendor-cloudname
+          required: true
+          type: string
+        - name: cloud-region-id
+          in: path
+          description: Identifier used by the vendor for the region. Second part of composite key
+          required: true
+          type: string
+        - name: snapshot-id
+          in: path
+          description: Snapshot id, this is the key UUID assoc associated in glance with the snapshots.
+          required: true
+          type: string
+  /cloud-infrastructure/cloud-regions/cloud-region/{cloud-owner}/{cloud-region-id}/snapshots/snapshot/{snapshot-id}:
+    get:
+      tags:
+        - CloudInfrastructure
+      summary: returns snapshot
+      description: returns snapshot
+      operationId: getCloudInfrastructureCloudRegionsCloudRegionSnapshotsSnapshot
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "200":
+          description: successful operation
+          schema:
+              $ref: "#/definitions/snapshot"
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: cloud-owner
+          in: path
+          description: Identifies the vendor and cloud name. First part of composite key should be formatted as vendor-cloudname
+          required: true
+          type: string
+        - name: cloud-region-id
+          in: path
+          description: Identifier used by the vendor for the region. Second part of composite key
+          required: true
+          type: string
+        - name: snapshot-id
+          in: path
+          description: Snapshot id, this is the key UUID assoc associated in glance with the snapshots.
+          required: true
+          type: string
+        - name: cloud-type
+          in: query
+          description: Type of the cloud (e.g., openstack)
+          required: false
+          type: string
+        - name: owner-defined-type
+          in: query
+          description: Cloud-owner defined type indicator (e.g., dcp, lcp)
+          required: false
+          type: string
+        - name: snapshot-name
+          in: query
+          description: Snapshot name
+          required: false
+          type: string
+        - name: application
+          in: query
+          description: The application that the image instantiates.
+          required: false
+          type: string
+        - name: application-vendor
+          in: query
+          description: The vendor of the application.
+          required: false
+          type: string
+        - name: application-version
+          in: query
+          description: The version of the application.
+          required: false
+          type: string
+        - name: prev-snapshot-id
+          in: query
+          description: This field contains the UUID of the previous snapshot (if any).
+          required: false
+          type: string
+    put:
+      tags:
+        - CloudInfrastructure
+      summary: create or update an existing snapshot
+      description: create or update an existing snapshot
+      operationId: createOrUpdateCloudInfrastructureCloudRegionsCloudRegionSnapshotsSnapshot
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: cloud-owner
+          in: path
+          description: Identifies the vendor and cloud name. First part of composite key should be formatted as vendor-cloudname
+          required: true
+          type: string
+        - name: cloud-region-id
+          in: path
+          description: Identifier used by the vendor for the region. Second part of composite key
+          required: true
+          type: string
+        - name: snapshot-id
+          in: path
+          description: Snapshot id, this is the key UUID assoc associated in glance with the snapshots.
+          required: true
+          type: string
+        - name: body
+          in: body
+          description: snapshot object that needs to be created or updated
+          required: true
+          schema:
+            $ref: "#/definitions/snapshot"
+    delete:
+      tags:
+        - CloudInfrastructure
+      summary: delete an existing snapshot
+      description: delete an existing snapshot
+      operationId: deleteCloudInfrastructureCloudRegionsCloudRegionSnapshotsSnapshot
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: cloud-owner
+          in: path
+          description: Identifies the vendor and cloud name. First part of composite key should be formatted as vendor-cloudname
+          required: true
+          type: string
+        - name: cloud-region-id
+          in: path
+          description: Identifier used by the vendor for the region. Second part of composite key
+          required: true
+          type: string
+        - name: snapshot-id
+          in: path
+          description: Snapshot id, this is the key UUID assoc associated in glance with the snapshots.
+          required: true
+          type: string
+        - name: resource-version
+          in: query
+          description: resource-version for concurrency
+          required: true
+          type: string
+  /cloud-infrastructure/cloud-regions/cloud-region/{cloud-owner}/{cloud-region-id}/snapshots:
+    get:
+      tags:
+        - CloudInfrastructure
+      summary: returns snapshots
+      description: returns snapshots
+      operationId: getCloudInfrastructureCloudRegionsCloudRegionSnapshots
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "200":
+          description: successful operation
+          schema:
+              $ref: "#/definitions/snapshots"
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: cloud-owner
+          in: path
+          description: Identifies the vendor and cloud name. First part of composite key should be formatted as vendor-cloudname
+          required: true
+          type: string
+        - name: cloud-region-id
+          in: path
+          description: Identifier used by the vendor for the region. Second part of composite key
+          required: true
+          type: string
+        - name: cloud-type
+          in: query
+          description: Type of the cloud (e.g., openstack)
+          required: false
+          type: string
+        - name: owner-defined-type
+          in: query
+          description: Cloud-owner defined type indicator (e.g., dcp, lcp)
+          required: false
+          type: string
+  /cloud-infrastructure/cloud-regions/cloud-region/{cloud-owner}/{cloud-region-id}/images/image/{image-id}/relationship-list/relationship:
+    put:
+      tags:
+        - CloudInfrastructure
+      summary: see node definition for valid relationships
+      operationId: createOrUpdateCloudInfrastructureCloudRegionsCloudRegionImagesImageRelationshipListRelationship
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: cloud-owner
+          in: path
+          description: Identifies the vendor and cloud name. First part of composite key should be formatted as vendor-cloudname
+          required: true
+          type: string
+        - name: cloud-region-id
+          in: path
+          description: Identifier used by the vendor for the region. Second part of composite key
+          required: true
+          type: string
+        - name: image-id
+          in: path
+          description: Image id, expected to be unique across cloud region
+          required: true
+          type: string
+        - name: body
+          in: body
+          description: relationship object that needs to be created or updated
+          required: true
+          schema:
+            $ref: "#/definitions/relationship"
+    delete:
+      tags:
+        - CloudInfrastructure
+      summary: delete an existing relationship
+      description: delete an existing relationship
+      operationId: deleteCloudInfrastructureCloudRegionsCloudRegionImagesImageRelationshipListRelationship
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: cloud-owner
+          in: path
+          description: Identifies the vendor and cloud name. First part of composite key should be formatted as vendor-cloudname
+          required: true
+          type: string
+        - name: cloud-region-id
+          in: path
+          description: Identifier used by the vendor for the region. Second part of composite key
+          required: true
+          type: string
+        - name: image-id
+          in: path
+          description: Image id, expected to be unique across cloud region
+          required: true
+          type: string
+  /cloud-infrastructure/cloud-regions/cloud-region/{cloud-owner}/{cloud-region-id}/images/image/{image-id}/metadata/metadatum/{metaname}:
+    get:
+      tags:
+        - CloudInfrastructure
+      summary: returns metadatum
+      description: returns metadatum
+      operationId: getCloudInfrastructureCloudRegionsCloudRegionImagesImageMetadataMetadatum
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "200":
+          description: successful operation
+          schema:
+              $ref: "#/definitions/metadatum"
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: cloud-owner
+          in: path
+          description: Identifies the vendor and cloud name. First part of composite key should be formatted as vendor-cloudname
+          required: true
+          type: string
+        - name: cloud-region-id
+          in: path
+          description: Identifier used by the vendor for the region. Second part of composite key
+          required: true
+          type: string
+        - name: image-id
+          in: path
+          description: Image id, expected to be unique across cloud region
+          required: true
+          type: string
+        - name: metaname
+          in: path
+          required: true
+          type: string
+        - name: cloud-type
+          in: query
+          description: Type of the cloud (e.g., openstack)
+          required: false
+          type: string
+        - name: owner-defined-type
+          in: query
+          description: Cloud-owner defined type indicator (e.g., dcp, lcp)
+          required: false
+          type: string
+        - name: image-name
+          in: query
+          description: Image name
+          required: false
+          type: string
+        - name: application
+          in: query
+          description: The application that the image instantiates.
+          required: false
+          type: string
+        - name: application-vendor
+          in: query
+          description: The vendor of the application.
+          required: false
+          type: string
+        - name: application-version
+          in: query
+          description: The version of the application.
+          required: false
+          type: string
+    put:
+      tags:
+        - CloudInfrastructure
+      summary: create or update an existing metadatum
+      description: create or update an existing metadatum
+      operationId: createOrUpdateCloudInfrastructureCloudRegionsCloudRegionImagesImageMetadataMetadatum
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: cloud-owner
+          in: path
+          description: Identifies the vendor and cloud name. First part of composite key should be formatted as vendor-cloudname
+          required: true
+          type: string
+        - name: cloud-region-id
+          in: path
+          description: Identifier used by the vendor for the region. Second part of composite key
+          required: true
+          type: string
+        - name: image-id
+          in: path
+          description: Image id, expected to be unique across cloud region
+          required: true
+          type: string
+        - name: metaname
+          in: path
+          required: true
+          type: string
+        - name: body
+          in: body
+          description: metadatum object that needs to be created or updated
+          required: true
+          schema:
+            $ref: "#/definitions/metadatum"
+    delete:
+      tags:
+        - CloudInfrastructure
+      summary: delete an existing metadatum
+      description: delete an existing metadatum
+      operationId: deleteCloudInfrastructureCloudRegionsCloudRegionImagesImageMetadataMetadatum
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: cloud-owner
+          in: path
+          description: Identifies the vendor and cloud name. First part of composite key should be formatted as vendor-cloudname
+          required: true
+          type: string
+        - name: cloud-region-id
+          in: path
+          description: Identifier used by the vendor for the region. Second part of composite key
+          required: true
+          type: string
+        - name: image-id
+          in: path
+          description: Image id, expected to be unique across cloud region
+          required: true
+          type: string
+        - name: metaname
+          in: path
+          required: true
+          type: string
+        - name: resource-version
+          in: query
+          description: resource-version for concurrency
+          required: true
+          type: string
+  /cloud-infrastructure/cloud-regions/cloud-region/{cloud-owner}/{cloud-region-id}/images/image/{image-id}/metadata:
+    get:
+      tags:
+        - CloudInfrastructure
+      summary: returns metadata
+      description: returns metadata
+      operationId: getCloudInfrastructureCloudRegionsCloudRegionImagesImageMetadata
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "200":
+          description: successful operation
+          schema:
+              $ref: "#/definitions/metadata"
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: cloud-owner
+          in: path
+          description: Identifies the vendor and cloud name. First part of composite key should be formatted as vendor-cloudname
+          required: true
+          type: string
+        - name: cloud-region-id
+          in: path
+          description: Identifier used by the vendor for the region. Second part of composite key
+          required: true
+          type: string
+        - name: image-id
+          in: path
+          description: Image id, expected to be unique across cloud region
+          required: true
+          type: string
+        - name: cloud-type
+          in: query
+          description: Type of the cloud (e.g., openstack)
+          required: false
+          type: string
+        - name: owner-defined-type
+          in: query
+          description: Cloud-owner defined type indicator (e.g., dcp, lcp)
+          required: false
+          type: string
+        - name: image-name
+          in: query
+          description: Image name
+          required: false
+          type: string
+        - name: application
+          in: query
+          description: The application that the image instantiates.
+          required: false
+          type: string
+        - name: application-vendor
+          in: query
+          description: The vendor of the application.
+          required: false
+          type: string
+        - name: application-version
+          in: query
+          description: The version of the application.
+          required: false
+          type: string
+  /cloud-infrastructure/cloud-regions/cloud-region/{cloud-owner}/{cloud-region-id}/images/image/{image-id}:
+    get:
+      tags:
+        - CloudInfrastructure
+      summary: returns image
+      description: returns image
+      operationId: getCloudInfrastructureCloudRegionsCloudRegionImagesImage
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "200":
+          description: successful operation
+          schema:
+              $ref: "#/definitions/image"
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: cloud-owner
+          in: path
+          description: Identifies the vendor and cloud name. First part of composite key should be formatted as vendor-cloudname
+          required: true
+          type: string
+        - name: cloud-region-id
+          in: path
+          description: Identifier used by the vendor for the region. Second part of composite key
+          required: true
+          type: string
+        - name: image-id
+          in: path
+          description: Image id, expected to be unique across cloud region
+          required: true
+          type: string
+        - name: cloud-type
+          in: query
+          description: Type of the cloud (e.g., openstack)
+          required: false
+          type: string
+        - name: owner-defined-type
+          in: query
+          description: Cloud-owner defined type indicator (e.g., dcp, lcp)
+          required: false
+          type: string
+        - name: image-name
+          in: query
+          description: Image name
+          required: false
+          type: string
+        - name: application
+          in: query
+          description: The application that the image instantiates.
+          required: false
+          type: string
+        - name: application-vendor
+          in: query
+          description: The vendor of the application.
+          required: false
+          type: string
+        - name: application-version
+          in: query
+          description: The version of the application.
+          required: false
+          type: string
+    put:
+      tags:
+        - CloudInfrastructure
+      summary: create or update an existing image
+      description: create or update an existing image
+      operationId: createOrUpdateCloudInfrastructureCloudRegionsCloudRegionImagesImage
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: cloud-owner
+          in: path
+          description: Identifies the vendor and cloud name. First part of composite key should be formatted as vendor-cloudname
+          required: true
+          type: string
+        - name: cloud-region-id
+          in: path
+          description: Identifier used by the vendor for the region. Second part of composite key
+          required: true
+          type: string
+        - name: image-id
+          in: path
+          description: Image id, expected to be unique across cloud region
+          required: true
+          type: string
+        - name: body
+          in: body
+          description: image object that needs to be created or updated
+          required: true
+          schema:
+            $ref: "#/definitions/image"
+    delete:
+      tags:
+        - CloudInfrastructure
+      summary: delete an existing image
+      description: delete an existing image
+      operationId: deleteCloudInfrastructureCloudRegionsCloudRegionImagesImage
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: cloud-owner
+          in: path
+          description: Identifies the vendor and cloud name. First part of composite key should be formatted as vendor-cloudname
+          required: true
+          type: string
+        - name: cloud-region-id
+          in: path
+          description: Identifier used by the vendor for the region. Second part of composite key
+          required: true
+          type: string
+        - name: image-id
+          in: path
+          description: Image id, expected to be unique across cloud region
+          required: true
+          type: string
+        - name: resource-version
+          in: query
+          description: resource-version for concurrency
+          required: true
+          type: string
+  /cloud-infrastructure/cloud-regions/cloud-region/{cloud-owner}/{cloud-region-id}/images:
+    get:
+      tags:
+        - CloudInfrastructure
+      summary: returns images
+      description: returns images
+      operationId: getCloudInfrastructureCloudRegionsCloudRegionImages
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "200":
+          description: successful operation
+          schema:
+              $ref: "#/definitions/images"
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: cloud-owner
+          in: path
+          description: Identifies the vendor and cloud name. First part of composite key should be formatted as vendor-cloudname
+          required: true
+          type: string
+        - name: cloud-region-id
+          in: path
+          description: Identifier used by the vendor for the region. Second part of composite key
+          required: true
+          type: string
+        - name: cloud-type
+          in: query
+          description: Type of the cloud (e.g., openstack)
+          required: false
+          type: string
+        - name: owner-defined-type
+          in: query
+          description: Cloud-owner defined type indicator (e.g., dcp, lcp)
+          required: false
+          type: string
+  /cloud-infrastructure/cloud-regions/cloud-region/{cloud-owner}/{cloud-region-id}/dvs-switches/dvs-switch/{switch-name}/relationship-list/relationship:
+    put:
+      tags:
+        - CloudInfrastructure
+      summary: see node definition for valid relationships
+      operationId: createOrUpdateCloudInfrastructureCloudRegionsCloudRegionDvsSwitchesDvsSwitchRelationshipListRelationship
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: cloud-owner
+          in: path
+          description: Identifies the vendor and cloud name. First part of composite key should be formatted as vendor-cloudname
+          required: true
+          type: string
+        - name: cloud-region-id
+          in: path
+          description: Identifier used by the vendor for the region. Second part of composite key
+          required: true
+          type: string
+        - name: switch-name
+          in: path
+          description: DVS switch name
+          required: true
+          type: string
+        - name: body
+          in: body
+          description: relationship object that needs to be created or updated
+          required: true
+          schema:
+            $ref: "#/definitions/relationship"
+    delete:
+      tags:
+        - CloudInfrastructure
+      summary: delete an existing relationship
+      description: delete an existing relationship
+      operationId: deleteCloudInfrastructureCloudRegionsCloudRegionDvsSwitchesDvsSwitchRelationshipListRelationship
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: cloud-owner
+          in: path
+          description: Identifies the vendor and cloud name. First part of composite key should be formatted as vendor-cloudname
+          required: true
+          type: string
+        - name: cloud-region-id
+          in: path
+          description: Identifier used by the vendor for the region. Second part of composite key
+          required: true
+          type: string
+        - name: switch-name
+          in: path
+          description: DVS switch name
+          required: true
+          type: string
+  /cloud-infrastructure/cloud-regions/cloud-region/{cloud-owner}/{cloud-region-id}/dvs-switches/dvs-switch/{switch-name}:
+    get:
+      tags:
+        - CloudInfrastructure
+      summary: returns dvs-switch
+      description: returns dvs-switch
+      operationId: getCloudInfrastructureCloudRegionsCloudRegionDvsSwitchesDvsSwitch
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "200":
+          description: successful operation
+          schema:
+              $ref: "#/definitions/dvs-switch"
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: cloud-owner
+          in: path
+          description: Identifies the vendor and cloud name. First part of composite key should be formatted as vendor-cloudname
+          required: true
+          type: string
+        - name: cloud-region-id
+          in: path
+          description: Identifier used by the vendor for the region. Second part of composite key
+          required: true
+          type: string
+        - name: switch-name
+          in: path
+          description: DVS switch name
+          required: true
+          type: string
+        - name: cloud-type
+          in: query
+          description: Type of the cloud (e.g., openstack)
+          required: false
+          type: string
+        - name: owner-defined-type
+          in: query
+          description: Cloud-owner defined type indicator (e.g., dcp, lcp)
+          required: false
+          type: string
+        - name: vcenter-url
+          in: query
+          description: URL used to reach the vcenter
+          required: false
+          type: string
+    put:
+      tags:
+        - CloudInfrastructure
+      summary: create or update an existing dvs-switch
+      description: create or update an existing dvs-switch
+      operationId: createOrUpdateCloudInfrastructureCloudRegionsCloudRegionDvsSwitchesDvsSwitch
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: cloud-owner
+          in: path
+          description: Identifies the vendor and cloud name. First part of composite key should be formatted as vendor-cloudname
+          required: true
+          type: string
+        - name: cloud-region-id
+          in: path
+          description: Identifier used by the vendor for the region. Second part of composite key
+          required: true
+          type: string
+        - name: switch-name
+          in: path
+          description: DVS switch name
+          required: true
+          type: string
+        - name: body
+          in: body
+          description: dvs-switch object that needs to be created or updated
+          required: true
+          schema:
+            $ref: "#/definitions/dvs-switch"
+    delete:
+      tags:
+        - CloudInfrastructure
+      summary: delete an existing dvs-switch
+      description: delete an existing dvs-switch
+      operationId: deleteCloudInfrastructureCloudRegionsCloudRegionDvsSwitchesDvsSwitch
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: cloud-owner
+          in: path
+          description: Identifies the vendor and cloud name. First part of composite key should be formatted as vendor-cloudname
+          required: true
+          type: string
+        - name: cloud-region-id
+          in: path
+          description: Identifier used by the vendor for the region. Second part of composite key
+          required: true
+          type: string
+        - name: switch-name
+          in: path
+          description: DVS switch name
+          required: true
+          type: string
+        - name: resource-version
+          in: query
+          description: resource-version for concurrency
+          required: true
+          type: string
+  /cloud-infrastructure/cloud-regions/cloud-region/{cloud-owner}/{cloud-region-id}/dvs-switches:
+    get:
+      tags:
+        - CloudInfrastructure
+      summary: returns dvs-switches
+      description: returns dvs-switches
+      operationId: getCloudInfrastructureCloudRegionsCloudRegionDvsSwitches
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "200":
+          description: successful operation
+          schema:
+              $ref: "#/definitions/dvs-switches"
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: cloud-owner
+          in: path
+          description: Identifies the vendor and cloud name. First part of composite key should be formatted as vendor-cloudname
+          required: true
+          type: string
+        - name: cloud-region-id
+          in: path
+          description: Identifier used by the vendor for the region. Second part of composite key
+          required: true
+          type: string
+        - name: cloud-type
+          in: query
+          description: Type of the cloud (e.g., openstack)
+          required: false
+          type: string
+        - name: owner-defined-type
+          in: query
+          description: Cloud-owner defined type indicator (e.g., dcp, lcp)
+          required: false
+          type: string
+  /cloud-infrastructure/cloud-regions/cloud-region/{cloud-owner}/{cloud-region-id}/oam-networks/oam-network/{network-uuid}/relationship-list/relationship:
+    put:
+      tags:
+        - CloudInfrastructure
+      summary: see node definition for valid relationships
+      operationId: createOrUpdateCloudInfrastructureCloudRegionsCloudRegionOamNetworksOamNetworkRelationshipListRelationship
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: cloud-owner
+          in: path
+          description: Identifies the vendor and cloud name. First part of composite key should be formatted as vendor-cloudname
+          required: true
+          type: string
+        - name: cloud-region-id
+          in: path
+          description: Identifier used by the vendor for the region. Second part of composite key
+          required: true
+          type: string
+        - name: network-uuid
+          in: path
+          description: UUID of the network. Unique across a cloud-region
+          required: true
+          type: string
+        - name: body
+          in: body
+          description: relationship object that needs to be created or updated
+          required: true
+          schema:
+            $ref: "#/definitions/relationship"
+    delete:
+      tags:
+        - CloudInfrastructure
+      summary: delete an existing relationship
+      description: delete an existing relationship
+      operationId: deleteCloudInfrastructureCloudRegionsCloudRegionOamNetworksOamNetworkRelationshipListRelationship
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: cloud-owner
+          in: path
+          description: Identifies the vendor and cloud name. First part of composite key should be formatted as vendor-cloudname
+          required: true
+          type: string
+        - name: cloud-region-id
+          in: path
+          description: Identifier used by the vendor for the region. Second part of composite key
+          required: true
+          type: string
+        - name: network-uuid
+          in: path
+          description: UUID of the network. Unique across a cloud-region
+          required: true
+          type: string
+  /cloud-infrastructure/cloud-regions/cloud-region/{cloud-owner}/{cloud-region-id}/oam-networks/oam-network/{network-uuid}:
+    get:
+      tags:
+        - CloudInfrastructure
+      summary: returns oam-network
+      description: returns oam-network
+      operationId: getCloudInfrastructureCloudRegionsCloudRegionOamNetworksOamNetwork
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "200":
+          description: successful operation
+          schema:
+              $ref: "#/definitions/oam-network"
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: cloud-owner
+          in: path
+          description: Identifies the vendor and cloud name. First part of composite key should be formatted as vendor-cloudname
+          required: true
+          type: string
+        - name: cloud-region-id
+          in: path
+          description: Identifier used by the vendor for the region. Second part of composite key
+          required: true
+          type: string
+        - name: network-uuid
+          in: path
+          description: UUID of the network. Unique across a cloud-region
+          required: true
+          type: string
+        - name: cloud-type
+          in: query
+          description: Type of the cloud (e.g., openstack)
+          required: false
+          type: string
+        - name: owner-defined-type
+          in: query
+          description: Cloud-owner defined type indicator (e.g., dcp, lcp)
+          required: false
+          type: string
+        - name: network-name
+          in: query
+          description: Name of the network.
+          required: false
+          type: string
+        - name: cvlan-tag
+          in: query
+          description: cvlan-id
+          required: false
+          type: integer
+          format: int64
+    put:
+      tags:
+        - CloudInfrastructure
+      summary: create or update an existing oam-network
+      description: create or update an existing oam-network
+      operationId: createOrUpdateCloudInfrastructureCloudRegionsCloudRegionOamNetworksOamNetwork
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: cloud-owner
+          in: path
+          description: Identifies the vendor and cloud name. First part of composite key should be formatted as vendor-cloudname
+          required: true
+          type: string
+        - name: cloud-region-id
+          in: path
+          description: Identifier used by the vendor for the region. Second part of composite key
+          required: true
+          type: string
+        - name: network-uuid
+          in: path
+          description: UUID of the network. Unique across a cloud-region
+          required: true
+          type: string
+        - name: body
+          in: body
+          description: oam-network object that needs to be created or updated
+          required: true
+          schema:
+            $ref: "#/definitions/oam-network"
+    delete:
+      tags:
+        - CloudInfrastructure
+      summary: delete an existing oam-network
+      description: delete an existing oam-network
+      operationId: deleteCloudInfrastructureCloudRegionsCloudRegionOamNetworksOamNetwork
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: cloud-owner
+          in: path
+          description: Identifies the vendor and cloud name. First part of composite key should be formatted as vendor-cloudname
+          required: true
+          type: string
+        - name: cloud-region-id
+          in: path
+          description: Identifier used by the vendor for the region. Second part of composite key
+          required: true
+          type: string
+        - name: network-uuid
+          in: path
+          description: UUID of the network. Unique across a cloud-region
+          required: true
+          type: string
+        - name: resource-version
+          in: query
+          description: resource-version for concurrency
+          required: true
+          type: string
+  /cloud-infrastructure/cloud-regions/cloud-region/{cloud-owner}/{cloud-region-id}/oam-networks:
+    get:
+      tags:
+        - CloudInfrastructure
+      summary: returns oam-networks
+      description: returns oam-networks
+      operationId: getCloudInfrastructureCloudRegionsCloudRegionOamNetworks
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "200":
+          description: successful operation
+          schema:
+              $ref: "#/definitions/oam-networks"
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: cloud-owner
+          in: path
+          description: Identifies the vendor and cloud name. First part of composite key should be formatted as vendor-cloudname
+          required: true
+          type: string
+        - name: cloud-region-id
+          in: path
+          description: Identifier used by the vendor for the region. Second part of composite key
+          required: true
+          type: string
+        - name: cloud-type
+          in: query
+          description: Type of the cloud (e.g., openstack)
+          required: false
+          type: string
+        - name: owner-defined-type
+          in: query
+          description: Cloud-owner defined type indicator (e.g., dcp, lcp)
+          required: false
+          type: string
+  /cloud-infrastructure/cloud-regions/cloud-region/{cloud-owner}/{cloud-region-id}/availability-zones/availability-zone/{availability-zone-name}/relationship-list/relationship:
+    put:
+      tags:
+        - CloudInfrastructure
+      summary: see node definition for valid relationships
+      operationId: createOrUpdateCloudInfrastructureCloudRegionsCloudRegionAvailabilityZonesAvailabilityZoneRelationshipListRelationship
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: cloud-owner
+          in: path
+          description: Identifies the vendor and cloud name. First part of composite key should be formatted as vendor-cloudname
+          required: true
+          type: string
+        - name: cloud-region-id
+          in: path
+          description: Identifier used by the vendor for the region. Second part of composite key
+          required: true
+          type: string
+        - name: availability-zone-name
+          in: path
+          description: Name of the availability zone.  Unique across a cloud region
+          required: true
+          type: string
+        - name: body
+          in: body
+          description: relationship object that needs to be created or updated
+          required: true
+          schema:
+            $ref: "#/definitions/relationship"
+    delete:
+      tags:
+        - CloudInfrastructure
+      summary: delete an existing relationship
+      description: delete an existing relationship
+      operationId: deleteCloudInfrastructureCloudRegionsCloudRegionAvailabilityZonesAvailabilityZoneRelationshipListRelationship
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: cloud-owner
+          in: path
+          description: Identifies the vendor and cloud name. First part of composite key should be formatted as vendor-cloudname
+          required: true
+          type: string
+        - name: cloud-region-id
+          in: path
+          description: Identifier used by the vendor for the region. Second part of composite key
+          required: true
+          type: string
+        - name: availability-zone-name
+          in: path
+          description: Name of the availability zone.  Unique across a cloud region
+          required: true
+          type: string
+  /cloud-infrastructure/cloud-regions/cloud-region/{cloud-owner}/{cloud-region-id}/availability-zones/availability-zone/{availability-zone-name}:
+    get:
+      tags:
+        - CloudInfrastructure
+      summary: returns availability-zone
+      description: returns availability-zone
+      operationId: getCloudInfrastructureCloudRegionsCloudRegionAvailabilityZonesAvailabilityZone
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "200":
+          description: successful operation
+          schema:
+              $ref: "#/definitions/availability-zone"
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: cloud-owner
+          in: path
+          description: Identifies the vendor and cloud name. First part of composite key should be formatted as vendor-cloudname
+          required: true
+          type: string
+        - name: cloud-region-id
+          in: path
+          description: Identifier used by the vendor for the region. Second part of composite key
+          required: true
+          type: string
+        - name: availability-zone-name
+          in: path
+          description: Name of the availability zone.  Unique across a cloud region
+          required: true
+          type: string
+        - name: cloud-type
+          in: query
+          description: Type of the cloud (e.g., openstack)
+          required: false
+          type: string
+        - name: owner-defined-type
+          in: query
+          description: Cloud-owner defined type indicator (e.g., dcp, lcp)
+          required: false
+          type: string
+    put:
+      tags:
+        - CloudInfrastructure
+      summary: create or update an existing availability-zone
+      description: create or update an existing availability-zone
+      operationId: createOrUpdateCloudInfrastructureCloudRegionsCloudRegionAvailabilityZonesAvailabilityZone
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: cloud-owner
+          in: path
+          description: Identifies the vendor and cloud name. First part of composite key should be formatted as vendor-cloudname
+          required: true
+          type: string
+        - name: cloud-region-id
+          in: path
+          description: Identifier used by the vendor for the region. Second part of composite key
+          required: true
+          type: string
+        - name: availability-zone-name
+          in: path
+          description: Name of the availability zone.  Unique across a cloud region
+          required: true
+          type: string
+        - name: body
+          in: body
+          description: availability-zone object that needs to be created or updated
+          required: true
+          schema:
+            $ref: "#/definitions/availability-zone"
+    delete:
+      tags:
+        - CloudInfrastructure
+      summary: delete an existing availability-zone
+      description: delete an existing availability-zone
+      operationId: deleteCloudInfrastructureCloudRegionsCloudRegionAvailabilityZonesAvailabilityZone
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: cloud-owner
+          in: path
+          description: Identifies the vendor and cloud name. First part of composite key should be formatted as vendor-cloudname
+          required: true
+          type: string
+        - name: cloud-region-id
+          in: path
+          description: Identifier used by the vendor for the region. Second part of composite key
+          required: true
+          type: string
+        - name: availability-zone-name
+          in: path
+          description: Name of the availability zone.  Unique across a cloud region
+          required: true
+          type: string
+        - name: resource-version
+          in: query
+          description: resource-version for concurrency
+          required: true
+          type: string
+  /cloud-infrastructure/cloud-regions/cloud-region/{cloud-owner}/{cloud-region-id}/availability-zones:
+    get:
+      tags:
+        - CloudInfrastructure
+      summary: returns availability-zones
+      description: returns availability-zones
+      operationId: getCloudInfrastructureCloudRegionsCloudRegionAvailabilityZones
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "200":
+          description: successful operation
+          schema:
+              $ref: "#/definitions/availability-zones"
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: cloud-owner
+          in: path
+          description: Identifies the vendor and cloud name. First part of composite key should be formatted as vendor-cloudname
+          required: true
+          type: string
+        - name: cloud-region-id
+          in: path
+          description: Identifier used by the vendor for the region. Second part of composite key
+          required: true
+          type: string
+        - name: cloud-type
+          in: query
+          description: Type of the cloud (e.g., openstack)
+          required: false
+          type: string
+        - name: owner-defined-type
+          in: query
+          description: Cloud-owner defined type indicator (e.g., dcp, lcp)
+          required: false
+          type: string
+  /cloud-infrastructure/cloud-regions/cloud-region/{cloud-owner}/{cloud-region-id}/relationship-list/relationship:
+    put:
+      tags:
+        - CloudInfrastructure
+      summary: see node definition for valid relationships
+      operationId: createOrUpdateCloudInfrastructureCloudRegionsCloudRegionRelationshipListRelationship
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: cloud-owner
+          in: path
+          description: Identifies the vendor and cloud name. First part of composite key should be formatted as vendor-cloudname
+          required: true
+          type: string
+        - name: cloud-region-id
+          in: path
+          description: Identifier used by the vendor for the region. Second part of composite key
+          required: true
+          type: string
+        - name: body
+          in: body
+          description: relationship object that needs to be created or updated
+          required: true
+          schema:
+            $ref: "#/definitions/relationship"
+    delete:
+      tags:
+        - CloudInfrastructure
+      summary: delete an existing relationship
+      description: delete an existing relationship
+      operationId: deleteCloudInfrastructureCloudRegionsCloudRegionRelationshipListRelationship
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: cloud-owner
+          in: path
+          description: Identifies the vendor and cloud name. First part of composite key should be formatted as vendor-cloudname
+          required: true
+          type: string
+        - name: cloud-region-id
+          in: path
+          description: Identifier used by the vendor for the region. Second part of composite key
+          required: true
+          type: string
+  /cloud-infrastructure/cloud-regions/cloud-region/{cloud-owner}/{cloud-region-id}/esr-system-info-list/esr-system-info/{esr-system-info-id}/relationship-list/relationship:
+    put:
+      tags:
+        - CloudInfrastructure
+      summary: see node definition for valid relationships
+      operationId: createOrUpdateCloudInfrastructureCloudRegionsCloudRegionEsrSystemInfoListEsrSystemInfoRelationshipListRelationship
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: cloud-owner
+          in: path
+          description: Identifies the vendor and cloud name. First part of composite key should be formatted as vendor-cloudname
+          required: true
+          type: string
+        - name: cloud-region-id
+          in: path
+          description: Identifier used by the vendor for the region. Second part of composite key
+          required: true
+          type: string
+        - name: esr-system-info-id
+          in: path
+          description: Unique ID of esr system info.
+          required: true
+          type: string
+        - name: body
+          in: body
+          description: relationship object that needs to be created or updated
+          required: true
+          schema:
+            $ref: "#/definitions/relationship"
+    delete:
+      tags:
+        - CloudInfrastructure
+      summary: delete an existing relationship
+      description: delete an existing relationship
+      operationId: deleteCloudInfrastructureCloudRegionsCloudRegionEsrSystemInfoListEsrSystemInfoRelationshipListRelationship
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: cloud-owner
+          in: path
+          description: Identifies the vendor and cloud name. First part of composite key should be formatted as vendor-cloudname
+          required: true
+          type: string
+        - name: cloud-region-id
+          in: path
+          description: Identifier used by the vendor for the region. Second part of composite key
+          required: true
+          type: string
+        - name: esr-system-info-id
+          in: path
+          description: Unique ID of esr system info.
+          required: true
+          type: string
+  /cloud-infrastructure/cloud-regions/cloud-region/{cloud-owner}/{cloud-region-id}/esr-system-info-list/esr-system-info/{esr-system-info-id}:
+    get:
+      tags:
+        - CloudInfrastructure
+      summary: returns esr-system-info
+      description: returns esr-system-info
+      operationId: getCloudInfrastructureCloudRegionsCloudRegionEsrSystemInfoListEsrSystemInfo
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "200":
+          description: successful operation
+          schema:
+              $ref: "#/definitions/esr-system-info"
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: cloud-owner
+          in: path
+          description: Identifies the vendor and cloud name. First part of composite key should be formatted as vendor-cloudname
+          required: true
+          type: string
+        - name: cloud-region-id
+          in: path
+          description: Identifier used by the vendor for the region. Second part of composite key
+          required: true
+          type: string
+        - name: esr-system-info-id
+          in: path
+          description: Unique ID of esr system info.
+          required: true
+          type: string
+        - name: cloud-type
+          in: query
+          description: Type of the cloud (e.g., openstack)
+          required: false
+          type: string
+        - name: owner-defined-type
+          in: query
+          description: Cloud-owner defined type indicator (e.g., dcp, lcp)
+          required: false
+          type: string
+        - name: system-name
+          in: query
+          description: name of external system.
+          required: false
+          type: string
+        - name: system-type
+          in: query
+          description: it could be vim/vnfm/thirdparty-sdnc/ems-resource/ems-performance/ems-alarm.
+          required: false
+          type: string
+    put:
+      tags:
+        - CloudInfrastructure
+      summary: create or update an existing esr-system-info
+      description: create or update an existing esr-system-info
+      operationId: createOrUpdateCloudInfrastructureCloudRegionsCloudRegionEsrSystemInfoListEsrSystemInfo
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: cloud-owner
+          in: path
+          description: Identifies the vendor and cloud name. First part of composite key should be formatted as vendor-cloudname
+          required: true
+          type: string
+        - name: cloud-region-id
+          in: path
+          description: Identifier used by the vendor for the region. Second part of composite key
+          required: true
+          type: string
+        - name: esr-system-info-id
+          in: path
+          description: Unique ID of esr system info.
+          required: true
+          type: string
+        - name: body
+          in: body
+          description: esr-system-info object that needs to be created or updated
+          required: true
+          schema:
+            $ref: "#/definitions/esr-system-info"
+    delete:
+      tags:
+        - CloudInfrastructure
+      summary: delete an existing esr-system-info
+      description: delete an existing esr-system-info
+      operationId: deleteCloudInfrastructureCloudRegionsCloudRegionEsrSystemInfoListEsrSystemInfo
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: cloud-owner
+          in: path
+          description: Identifies the vendor and cloud name. First part of composite key should be formatted as vendor-cloudname
+          required: true
+          type: string
+        - name: cloud-region-id
+          in: path
+          description: Identifier used by the vendor for the region. Second part of composite key
+          required: true
+          type: string
+        - name: esr-system-info-id
+          in: path
+          description: Unique ID of esr system info.
+          required: true
+          type: string
+        - name: resource-version
+          in: query
+          description: resource-version for concurrency
+          required: true
+          type: string
+  /cloud-infrastructure/cloud-regions/cloud-region/{cloud-owner}/{cloud-region-id}/esr-system-info-list:
+    get:
+      tags:
+        - CloudInfrastructure
+      summary: returns esr-system-info-list
+      description: returns esr-system-info-list
+      operationId: getCloudInfrastructureCloudRegionsCloudRegionEsrSystemInfoList
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "200":
+          description: successful operation
+          schema:
+              $ref: "#/definitions/esr-system-info-list"
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: cloud-owner
+          in: path
+          description: Identifies the vendor and cloud name. First part of composite key should be formatted as vendor-cloudname
+          required: true
+          type: string
+        - name: cloud-region-id
+          in: path
+          description: Identifier used by the vendor for the region. Second part of composite key
+          required: true
+          type: string
+        - name: cloud-type
+          in: query
+          description: Type of the cloud (e.g., openstack)
+          required: false
+          type: string
+        - name: owner-defined-type
+          in: query
+          description: Cloud-owner defined type indicator (e.g., dcp, lcp)
+          required: false
+          type: string
+  /cloud-infrastructure/cloud-regions/cloud-region/{cloud-owner}/{cloud-region-id}/vip-ipv4-address-list/{vip-ipv4-address}/relationship-list/relationship:
+    put:
+      tags:
+        - CloudInfrastructure
+      summary: see node definition for valid relationships
+      operationId: createOrUpdateCloudInfrastructureCloudRegionsCloudRegionVipIpv4AddressListRelationshipListRelationship
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: cloud-owner
+          in: path
+          description: Identifies the vendor and cloud name. First part of composite key should be formatted as vendor-cloudname
+          required: true
+          type: string
+        - name: cloud-region-id
+          in: path
+          description: Identifier used by the vendor for the region. Second part of composite key
+          required: true
+          type: string
+        - name: vip-ipv4-address
+          in: path
+          description: IP address
+          required: true
+          type: string
+        - name: body
+          in: body
+          description: relationship object that needs to be created or updated
+          required: true
+          schema:
+            $ref: "#/definitions/relationship"
+    delete:
+      tags:
+        - CloudInfrastructure
+      summary: delete an existing relationship
+      description: delete an existing relationship
+      operationId: deleteCloudInfrastructureCloudRegionsCloudRegionVipIpv4AddressListRelationshipListRelationship
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: cloud-owner
+          in: path
+          description: Identifies the vendor and cloud name. First part of composite key should be formatted as vendor-cloudname
+          required: true
+          type: string
+        - name: cloud-region-id
+          in: path
+          description: Identifier used by the vendor for the region. Second part of composite key
+          required: true
+          type: string
+        - name: vip-ipv4-address
+          in: path
+          description: IP address
+          required: true
+          type: string
+  /cloud-infrastructure/cloud-regions/cloud-region/{cloud-owner}/{cloud-region-id}/vip-ipv4-address-list/{vip-ipv4-address}:
+    get:
+      tags:
+        - CloudInfrastructure
+      summary: returns vip-ipv4-address-list
+      description: returns vip-ipv4-address-list
+      operationId: getCloudInfrastructureCloudRegionsCloudRegionVipIpv4AddressList
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "200":
+          description: successful operation
+          schema:
+              $ref: "#/definitions/vip-ipv4-address-list"
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: cloud-owner
+          in: path
+          description: Identifies the vendor and cloud name. First part of composite key should be formatted as vendor-cloudname
+          required: true
+          type: string
+        - name: cloud-region-id
+          in: path
+          description: Identifier used by the vendor for the region. Second part of composite key
+          required: true
+          type: string
+        - name: vip-ipv4-address
+          in: path
+          description: IP address
+          required: true
+          type: string
+        - name: cloud-type
+          in: query
+          description: Type of the cloud (e.g., openstack)
+          required: false
+          type: string
+        - name: owner-defined-type
+          in: query
+          description: Cloud-owner defined type indicator (e.g., dcp, lcp)
+          required: false
+          type: string
+        - name: vlan-id-inner
+          in: query
+          description: Inner VLAN tag
+          required: false
+          type: integer
+          format: int64
+        - name: neutron-network-id
+          in: query
+          description: Neutron network id of the interface that address belongs to
+          required: false
+          type: string
+        - name: neutron-subnet-id
+          in: query
+          description: Neutron id of subnet that address belongs to
+          required: false
+          type: string
+    put:
+      tags:
+        - CloudInfrastructure
+      summary: create or update an existing vip-ipv4-address-list
+      description: create or update an existing vip-ipv4-address-list
+      operationId: createOrUpdateCloudInfrastructureCloudRegionsCloudRegionVipIpv4AddressList
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: cloud-owner
+          in: path
+          description: Identifies the vendor and cloud name. First part of composite key should be formatted as vendor-cloudname
+          required: true
+          type: string
+        - name: cloud-region-id
+          in: path
+          description: Identifier used by the vendor for the region. Second part of composite key
+          required: true
+          type: string
+        - name: vip-ipv4-address
+          in: path
+          description: IP address
+          required: true
+          type: string
+        - name: body
+          in: body
+          description: vip-ipv4-address-list object that needs to be created or updated
+          required: true
+          schema:
+            $ref: "#/definitions/vip-ipv4-address-list"
+    delete:
+      tags:
+        - CloudInfrastructure
+      summary: delete an existing vip-ipv4-address-list
+      description: delete an existing vip-ipv4-address-list
+      operationId: deleteCloudInfrastructureCloudRegionsCloudRegionVipIpv4AddressList
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: cloud-owner
+          in: path
+          description: Identifies the vendor and cloud name. First part of composite key should be formatted as vendor-cloudname
+          required: true
+          type: string
+        - name: cloud-region-id
+          in: path
+          description: Identifier used by the vendor for the region. Second part of composite key
+          required: true
+          type: string
+        - name: vip-ipv4-address
+          in: path
+          description: IP address
+          required: true
+          type: string
+        - name: resource-version
+          in: query
+          description: resource-version for concurrency
+          required: true
+          type: string
+  /cloud-infrastructure/cloud-regions/cloud-region/{cloud-owner}/{cloud-region-id}/vip-ipv6-address-list/{vip-ipv6-address}/relationship-list/relationship:
+    put:
+      tags:
+        - CloudInfrastructure
+      summary: see node definition for valid relationships
+      operationId: createOrUpdateCloudInfrastructureCloudRegionsCloudRegionVipIpv6AddressListRelationshipListRelationship
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: cloud-owner
+          in: path
+          description: Identifies the vendor and cloud name. First part of composite key should be formatted as vendor-cloudname
+          required: true
+          type: string
+        - name: cloud-region-id
+          in: path
+          description: Identifier used by the vendor for the region. Second part of composite key
+          required: true
+          type: string
+        - name: vip-ipv6-address
+          in: path
+          description: IP address
+          required: true
+          type: string
+        - name: body
+          in: body
+          description: relationship object that needs to be created or updated
+          required: true
+          schema:
+            $ref: "#/definitions/relationship"
+    delete:
+      tags:
+        - CloudInfrastructure
+      summary: delete an existing relationship
+      description: delete an existing relationship
+      operationId: deleteCloudInfrastructureCloudRegionsCloudRegionVipIpv6AddressListRelationshipListRelationship
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: cloud-owner
+          in: path
+          description: Identifies the vendor and cloud name. First part of composite key should be formatted as vendor-cloudname
+          required: true
+          type: string
+        - name: cloud-region-id
+          in: path
+          description: Identifier used by the vendor for the region. Second part of composite key
+          required: true
+          type: string
+        - name: vip-ipv6-address
+          in: path
+          description: IP address
+          required: true
+          type: string
+  /cloud-infrastructure/cloud-regions/cloud-region/{cloud-owner}/{cloud-region-id}/vip-ipv6-address-list/{vip-ipv6-address}:
+    get:
+      tags:
+        - CloudInfrastructure
+      summary: returns vip-ipv6-address-list
+      description: returns vip-ipv6-address-list
+      operationId: getCloudInfrastructureCloudRegionsCloudRegionVipIpv6AddressList
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "200":
+          description: successful operation
+          schema:
+              $ref: "#/definitions/vip-ipv6-address-list"
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: cloud-owner
+          in: path
+          description: Identifies the vendor and cloud name. First part of composite key should be formatted as vendor-cloudname
+          required: true
+          type: string
+        - name: cloud-region-id
+          in: path
+          description: Identifier used by the vendor for the region. Second part of composite key
+          required: true
+          type: string
+        - name: vip-ipv6-address
+          in: path
+          description: IP address
+          required: true
+          type: string
+        - name: cloud-type
+          in: query
+          description: Type of the cloud (e.g., openstack)
+          required: false
+          type: string
+        - name: owner-defined-type
+          in: query
+          description: Cloud-owner defined type indicator (e.g., dcp, lcp)
+          required: false
+          type: string
+        - name: vlan-id-inner
+          in: query
+          description: Inner VLAN tag
+          required: false
+          type: integer
+          format: int64
+        - name: neutron-network-id
+          in: query
+          description: Neutron network id of the interface that address belongs to
+          required: false
+          type: string
+        - name: neutron-subnet-id
+          in: query
+          description: Neutron id of subnet that address belongs to
+          required: false
+          type: string
+    put:
+      tags:
+        - CloudInfrastructure
+      summary: create or update an existing vip-ipv6-address-list
+      description: create or update an existing vip-ipv6-address-list
+      operationId: createOrUpdateCloudInfrastructureCloudRegionsCloudRegionVipIpv6AddressList
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: cloud-owner
+          in: path
+          description: Identifies the vendor and cloud name. First part of composite key should be formatted as vendor-cloudname
+          required: true
+          type: string
+        - name: cloud-region-id
+          in: path
+          description: Identifier used by the vendor for the region. Second part of composite key
+          required: true
+          type: string
+        - name: vip-ipv6-address
+          in: path
+          description: IP address
+          required: true
+          type: string
+        - name: body
+          in: body
+          description: vip-ipv6-address-list object that needs to be created or updated
+          required: true
+          schema:
+            $ref: "#/definitions/vip-ipv6-address-list"
+    delete:
+      tags:
+        - CloudInfrastructure
+      summary: delete an existing vip-ipv6-address-list
+      description: delete an existing vip-ipv6-address-list
+      operationId: deleteCloudInfrastructureCloudRegionsCloudRegionVipIpv6AddressList
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: cloud-owner
+          in: path
+          description: Identifies the vendor and cloud name. First part of composite key should be formatted as vendor-cloudname
+          required: true
+          type: string
+        - name: cloud-region-id
+          in: path
+          description: Identifier used by the vendor for the region. Second part of composite key
+          required: true
+          type: string
+        - name: vip-ipv6-address
+          in: path
+          description: IP address
+          required: true
+          type: string
+        - name: resource-version
+          in: query
+          description: resource-version for concurrency
+          required: true
+          type: string
+  /cloud-infrastructure/cloud-regions/cloud-region/{cloud-owner}/{cloud-region-id}:
+    get:
+      tags:
+        - CloudInfrastructure
+      summary: returns cloud-region
+      description: returns cloud-region
+      operationId: getCloudInfrastructureCloudRegionsCloudRegion
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "200":
+          description: successful operation
+          schema:
+              $ref: "#/definitions/cloud-region"
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: cloud-owner
+          in: path
+          description: Identifies the vendor and cloud name. First part of composite key should be formatted as vendor-cloudname
+          required: true
+          type: string
+        - name: cloud-region-id
+          in: path
+          description: Identifier used by the vendor for the region. Second part of composite key
+          required: true
+          type: string
+        - name: cloud-type
+          in: query
+          description: Type of the cloud (e.g., openstack)
+          required: false
+          type: string
+        - name: owner-defined-type
+          in: query
+          description: Cloud-owner defined type indicator (e.g., dcp, lcp)
+          required: false
+          type: string
+    put:
+      tags:
+        - CloudInfrastructure
+      summary: create or update an existing cloud-region
+      description: create or update an existing cloud-region
+      operationId: createOrUpdateCloudInfrastructureCloudRegionsCloudRegion
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: cloud-owner
+          in: path
+          description: Identifies the vendor and cloud name. First part of composite key should be formatted as vendor-cloudname
+          required: true
+          type: string
+        - name: cloud-region-id
+          in: path
+          description: Identifier used by the vendor for the region. Second part of composite key
+          required: true
+          type: string
+        - name: body
+          in: body
+          description: cloud-region object that needs to be created or updated
+          required: true
+          schema:
+            $ref: "#/definitions/cloud-region"
+    delete:
+      tags:
+        - CloudInfrastructure
+      summary: delete an existing cloud-region
+      description: delete an existing cloud-region
+      operationId: deleteCloudInfrastructureCloudRegionsCloudRegion
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: cloud-owner
+          in: path
+          description: Identifies the vendor and cloud name. First part of composite key should be formatted as vendor-cloudname
+          required: true
+          type: string
+        - name: cloud-region-id
+          in: path
+          description: Identifier used by the vendor for the region. Second part of composite key
+          required: true
+          type: string
+        - name: resource-version
+          in: query
+          description: resource-version for concurrency
+          required: true
+          type: string
+  /cloud-infrastructure/cloud-regions:
+    get:
+      tags:
+        - CloudInfrastructure
+      summary: returns cloud-regions
+      description: returns cloud-regions
+      operationId: getCloudInfrastructureCloudRegions
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "200":
+          description: successful operation
+          schema:
+              $ref: "#/definitions/cloud-regions"
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+  /cloud-infrastructure/network-profiles/network-profile/{nm-profile-name}/relationship-list/relationship:
+    put:
+      tags:
+        - CloudInfrastructure
+      summary: see node definition for valid relationships
+      operationId: createOrUpdateCloudInfrastructureNetworkProfilesNetworkProfileRelationshipListRelationship
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: nm-profile-name
+          in: path
+          description: Unique name of network profile.
+          required: true
+          type: string
+        - name: body
+          in: body
+          description: relationship object that needs to be created or updated
+          required: true
+          schema:
+            $ref: "#/definitions/relationship"
+    delete:
+      tags:
+        - CloudInfrastructure
+      summary: delete an existing relationship
+      description: delete an existing relationship
+      operationId: deleteCloudInfrastructureNetworkProfilesNetworkProfileRelationshipListRelationship
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: nm-profile-name
+          in: path
+          description: Unique name of network profile.
+          required: true
+          type: string
+  /cloud-infrastructure/network-profiles/network-profile/{nm-profile-name}:
+    get:
+      tags:
+        - CloudInfrastructure
+      summary: returns network-profile
+      description: returns network-profile
+      operationId: getCloudInfrastructureNetworkProfilesNetworkProfile
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "200":
+          description: successful operation
+          schema:
+              $ref: "#/definitions/network-profile"
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: nm-profile-name
+          in: path
+          description: Unique name of network profile.
+          required: true
+          type: string
+    put:
+      tags:
+        - CloudInfrastructure
+      summary: create or update an existing network-profile
+      description: create or update an existing network-profile
+      operationId: createOrUpdateCloudInfrastructureNetworkProfilesNetworkProfile
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: nm-profile-name
+          in: path
+          description: Unique name of network profile.
+          required: true
+          type: string
+        - name: body
+          in: body
+          description: network-profile object that needs to be created or updated
+          required: true
+          schema:
+            $ref: "#/definitions/network-profile"
+    delete:
+      tags:
+        - CloudInfrastructure
+      summary: delete an existing network-profile
+      description: delete an existing network-profile
+      operationId: deleteCloudInfrastructureNetworkProfilesNetworkProfile
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: nm-profile-name
+          in: path
+          description: Unique name of network profile.
+          required: true
+          type: string
+        - name: resource-version
+          in: query
+          description: resource-version for concurrency
+          required: true
+          type: string
+  /cloud-infrastructure/network-profiles:
+    get:
+      tags:
+        - CloudInfrastructure
+      summary: returns network-profiles
+      description: returns network-profiles
+      operationId: getCloudInfrastructureNetworkProfiles
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "200":
+          description: successful operation
+          schema:
+              $ref: "#/definitions/network-profiles"
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+  /cloud-infrastructure/pservers/pserver/{hostname}/relationship-list/relationship:
+    put:
+      tags:
+        - CloudInfrastructure
+      summary: see node definition for valid relationships
+      operationId: createOrUpdateCloudInfrastructurePserversPserverRelationshipListRelationship
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: hostname
+          in: path
+          description: Value from executing hostname on the compute node.
+          required: true
+          type: string
+        - name: body
+          in: body
+          description: relationship object that needs to be created or updated
+          required: true
+          schema:
+            $ref: "#/definitions/relationship"
+    delete:
+      tags:
+        - CloudInfrastructure
+      summary: delete an existing relationship
+      description: delete an existing relationship
+      operationId: deleteCloudInfrastructurePserversPserverRelationshipListRelationship
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: hostname
+          in: path
+          description: Value from executing hostname on the compute node.
+          required: true
+          type: string
+  /cloud-infrastructure/pservers/pserver/{hostname}/p-interfaces/p-interface/{interface-name}/relationship-list/relationship:
+    put:
+      tags:
+        - CloudInfrastructure
+      summary: see node definition for valid relationships
+      operationId: createOrUpdateCloudInfrastructurePserversPserverPInterfacesPInterfaceRelationshipListRelationship
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: hostname
+          in: path
+          description: Value from executing hostname on the compute node.
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name that identifies the physical interface
+          required: true
+          type: string
+        - name: body
+          in: body
+          description: relationship object that needs to be created or updated
+          required: true
+          schema:
+            $ref: "#/definitions/relationship"
+    delete:
+      tags:
+        - CloudInfrastructure
+      summary: delete an existing relationship
+      description: delete an existing relationship
+      operationId: deleteCloudInfrastructurePserversPserverPInterfacesPInterfaceRelationshipListRelationship
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: hostname
+          in: path
+          description: Value from executing hostname on the compute node.
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name that identifies the physical interface
+          required: true
+          type: string
+  /cloud-infrastructure/pservers/pserver/{hostname}/p-interfaces/p-interface/{interface-name}/sriov-pfs/sriov-pf/{pf-pci-id}/relationship-list/relationship:
+    put:
+      tags:
+        - CloudInfrastructure
+      summary: see node definition for valid relationships
+      operationId: createOrUpdateCloudInfrastructurePserversPserverPInterfacesPInterfaceSriovPfsSriovPfRelationshipListRelationship
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: hostname
+          in: path
+          description: Value from executing hostname on the compute node.
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name that identifies the physical interface
+          required: true
+          type: string
+        - name: pf-pci-id
+          in: path
+          description: Identifier for the sriov-pf
+          required: true
+          type: string
+        - name: body
+          in: body
+          description: relationship object that needs to be created or updated
+          required: true
+          schema:
+            $ref: "#/definitions/relationship"
+    delete:
+      tags:
+        - CloudInfrastructure
+      summary: delete an existing relationship
+      description: delete an existing relationship
+      operationId: deleteCloudInfrastructurePserversPserverPInterfacesPInterfaceSriovPfsSriovPfRelationshipListRelationship
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: hostname
+          in: path
+          description: Value from executing hostname on the compute node.
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name that identifies the physical interface
+          required: true
+          type: string
+        - name: pf-pci-id
+          in: path
+          description: Identifier for the sriov-pf
+          required: true
+          type: string
+  /cloud-infrastructure/pservers/pserver/{hostname}/p-interfaces/p-interface/{interface-name}/sriov-pfs/sriov-pf/{pf-pci-id}:
+    get:
+      tags:
+        - CloudInfrastructure
+      summary: returns sriov-pf
+      description: returns sriov-pf
+      operationId: getCloudInfrastructurePserversPserverPInterfacesPInterfaceSriovPfsSriovPf
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "200":
+          description: successful operation
+          schema:
+              $ref: "#/definitions/sriov-pf"
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: hostname
+          in: path
+          description: Value from executing hostname on the compute node.
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name that identifies the physical interface
+          required: true
+          type: string
+        - name: pf-pci-id
+          in: path
+          description: Identifier for the sriov-pf
+          required: true
+          type: string
+        - name: inv-status
+          in: query
+          description: CANOPI's inventory status.  Only set with values exactly as defined by CANOPI.
+          required: false
+          type: string
+        - name: pserver-id
+          in: query
+          description: ID of Pserver
+          required: false
+          type: string
+        - name: in-maint
+          in: query
+          required: false
+          type: boolean
+        - name: pserver-name2
+          in: query
+          description: alternative pserver name
+          required: false
+          type: string
+        - name: prov-status
+          in: query
+          description: Trigger for operational monitoring of this resource by Service Assurance systems.
+          required: false
+          type: string
+    put:
+      tags:
+        - CloudInfrastructure
+      summary: create or update an existing sriov-pf
+      description: create or update an existing sriov-pf
+      operationId: createOrUpdateCloudInfrastructurePserversPserverPInterfacesPInterfaceSriovPfsSriovPf
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: hostname
+          in: path
+          description: Value from executing hostname on the compute node.
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name that identifies the physical interface
+          required: true
+          type: string
+        - name: pf-pci-id
+          in: path
+          description: Identifier for the sriov-pf
+          required: true
+          type: string
+        - name: body
+          in: body
+          description: sriov-pf object that needs to be created or updated
+          required: true
+          schema:
+            $ref: "#/definitions/sriov-pf"
+    delete:
+      tags:
+        - CloudInfrastructure
+      summary: delete an existing sriov-pf
+      description: delete an existing sriov-pf
+      operationId: deleteCloudInfrastructurePserversPserverPInterfacesPInterfaceSriovPfsSriovPf
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: hostname
+          in: path
+          description: Value from executing hostname on the compute node.
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name that identifies the physical interface
+          required: true
+          type: string
+        - name: pf-pci-id
+          in: path
+          description: Identifier for the sriov-pf
+          required: true
+          type: string
+        - name: resource-version
+          in: query
+          description: resource-version for concurrency
+          required: true
+          type: string
+  /cloud-infrastructure/pservers/pserver/{hostname}/p-interfaces/p-interface/{interface-name}/sriov-pfs:
+    get:
+      tags:
+        - CloudInfrastructure
+      summary: returns sriov-pfs
+      description: returns sriov-pfs
+      operationId: getCloudInfrastructurePserversPserverPInterfacesPInterfaceSriovPfs
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "200":
+          description: successful operation
+          schema:
+              $ref: "#/definitions/sriov-pfs"
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: hostname
+          in: path
+          description: Value from executing hostname on the compute node.
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name that identifies the physical interface
+          required: true
+          type: string
+        - name: inv-status
+          in: query
+          description: CANOPI's inventory status.  Only set with values exactly as defined by CANOPI.
+          required: false
+          type: string
+        - name: pserver-id
+          in: query
+          description: ID of Pserver
+          required: false
+          type: string
+        - name: in-maint
+          in: query
+          required: false
+          type: boolean
+        - name: pserver-name2
+          in: query
+          description: alternative pserver name
+          required: false
+          type: string
+        - name: prov-status
+          in: query
+          description: Trigger for operational monitoring of this resource by Service Assurance systems.
+          required: false
+          type: string
+  /cloud-infrastructure/pservers/pserver/{hostname}/p-interfaces/p-interface/{interface-name}/l-interfaces/l-interface/{interface-name}/vlans/vlan/{vlan-interface}/relationship-list/relationship:
+    put:
+      tags:
+        - CloudInfrastructure
+      summary: see node definition for valid relationships
+      operationId: createOrUpdateCloudInfrastructurePserversPserverPInterfacesPInterfaceLInterfacesLInterfaceVlansVlanRelationshipListRelationship
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: hostname
+          in: path
+          description: Value from executing hostname on the compute node.
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name that identifies the physical interface
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name given to the interface
+          required: true
+          type: string
+        - name: vlan-interface
+          in: path
+          description: String that identifies the interface
+          required: true
+          type: string
+        - name: body
+          in: body
+          description: relationship object that needs to be created or updated
+          required: true
+          schema:
+            $ref: "#/definitions/relationship"
+    delete:
+      tags:
+        - CloudInfrastructure
+      summary: delete an existing relationship
+      description: delete an existing relationship
+      operationId: deleteCloudInfrastructurePserversPserverPInterfacesPInterfaceLInterfacesLInterfaceVlansVlanRelationshipListRelationship
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: hostname
+          in: path
+          description: Value from executing hostname on the compute node.
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name that identifies the physical interface
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name given to the interface
+          required: true
+          type: string
+        - name: vlan-interface
+          in: path
+          description: String that identifies the interface
+          required: true
+          type: string
+  /cloud-infrastructure/pservers/pserver/{hostname}/p-interfaces/p-interface/{interface-name}/l-interfaces/l-interface/{interface-name}/vlans/vlan/{vlan-interface}/l3-interface-ipv4-address-list/{l3-interface-ipv4-address}/relationship-list/relationship:
+    put:
+      tags:
+        - CloudInfrastructure
+      summary: see node definition for valid relationships
+      operationId: createOrUpdateCloudInfrastructurePserversPserverPInterfacesPInterfaceLInterfacesLInterfaceVlansVlanL3InterfaceIpv4AddressListRelationshipListRelationship
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: hostname
+          in: path
+          description: Value from executing hostname on the compute node.
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name that identifies the physical interface
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name given to the interface
+          required: true
+          type: string
+        - name: vlan-interface
+          in: path
+          description: String that identifies the interface
+          required: true
+          type: string
+        - name: l3-interface-ipv4-address
+          in: path
+          description: IP address
+          required: true
+          type: string
+        - name: body
+          in: body
+          description: relationship object that needs to be created or updated
+          required: true
+          schema:
+            $ref: "#/definitions/relationship"
+    delete:
+      tags:
+        - CloudInfrastructure
+      summary: delete an existing relationship
+      description: delete an existing relationship
+      operationId: deleteCloudInfrastructurePserversPserverPInterfacesPInterfaceLInterfacesLInterfaceVlansVlanL3InterfaceIpv4AddressListRelationshipListRelationship
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: hostname
+          in: path
+          description: Value from executing hostname on the compute node.
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name that identifies the physical interface
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name given to the interface
+          required: true
+          type: string
+        - name: vlan-interface
+          in: path
+          description: String that identifies the interface
+          required: true
+          type: string
+        - name: l3-interface-ipv4-address
+          in: path
+          description: IP address
+          required: true
+          type: string
+  /cloud-infrastructure/pservers/pserver/{hostname}/p-interfaces/p-interface/{interface-name}/l-interfaces/l-interface/{interface-name}/vlans/vlan/{vlan-interface}/l3-interface-ipv4-address-list/{l3-interface-ipv4-address}:
+    get:
+      tags:
+        - CloudInfrastructure
+      summary: returns l3-interface-ipv4-address-list
+      description: returns l3-interface-ipv4-address-list
+      operationId: getCloudInfrastructurePserversPserverPInterfacesPInterfaceLInterfacesLInterfaceVlansVlanL3InterfaceIpv4AddressList
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "200":
+          description: successful operation
+          schema:
+              $ref: "#/definitions/l3-interface-ipv4-address-list"
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: hostname
+          in: path
+          description: Value from executing hostname on the compute node.
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name that identifies the physical interface
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name given to the interface
+          required: true
+          type: string
+        - name: vlan-interface
+          in: path
+          description: String that identifies the interface
+          required: true
+          type: string
+        - name: l3-interface-ipv4-address
+          in: path
+          description: IP address
+          required: true
+          type: string
+        - name: inv-status
+          in: query
+          description: CANOPI's inventory status.  Only set with values exactly as defined by CANOPI.
+          required: false
+          type: string
+        - name: pserver-id
+          in: query
+          description: ID of Pserver
+          required: false
+          type: string
+        - name: in-maint
+          in: query
+          required: false
+          type: boolean
+        - name: pserver-name2
+          in: query
+          description: alternative pserver name
+          required: false
+          type: string
+        - name: prov-status
+          in: query
+          description: Trigger for operational monitoring of this resource by Service Assurance systems.
+          required: false
+          type: string
+        - name: interface-id
+          in: query
+          description: ID of interface
+          required: false
+          type: string
+        - name: macaddr
+          in: query
+          description: MAC address for the interface
+          required: false
+          type: string
+        - name: network-name
+          in: query
+          description: Name of the network
+          required: false
+          type: string
+        - name: vlan-id-inner
+          in: query
+          description: Inner VLAN tag
+          required: false
+          type: integer
+          format: int64
+        - name: vpn-key
+          in: query
+          description: This indicates the customers VPN ID associated with this vlan
+          required: false
+          type: string
+        - name: vlan-id-inner
+          in: query
+          description: Inner VLAN tag
+          required: false
+          type: integer
+          format: int64
+        - name: neutron-network-id
+          in: query
+          description: Neutron network id of the interface that address belongs to
+          required: false
+          type: string
+        - name: neutron-subnet-id
+          in: query
+          description: Neutron id of subnet that address belongs to
+          required: false
+          type: string
+    put:
+      tags:
+        - CloudInfrastructure
+      summary: create or update an existing l3-interface-ipv4-address-list
+      description: create or update an existing l3-interface-ipv4-address-list
+      operationId: createOrUpdateCloudInfrastructurePserversPserverPInterfacesPInterfaceLInterfacesLInterfaceVlansVlanL3InterfaceIpv4AddressList
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: hostname
+          in: path
+          description: Value from executing hostname on the compute node.
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name that identifies the physical interface
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name given to the interface
+          required: true
+          type: string
+        - name: vlan-interface
+          in: path
+          description: String that identifies the interface
+          required: true
+          type: string
+        - name: l3-interface-ipv4-address
+          in: path
+          description: IP address
+          required: true
+          type: string
+        - name: body
+          in: body
+          description: l3-interface-ipv4-address-list object that needs to be created or updated
+          required: true
+          schema:
+            $ref: "#/definitions/l3-interface-ipv4-address-list"
+    delete:
+      tags:
+        - CloudInfrastructure
+      summary: delete an existing l3-interface-ipv4-address-list
+      description: delete an existing l3-interface-ipv4-address-list
+      operationId: deleteCloudInfrastructurePserversPserverPInterfacesPInterfaceLInterfacesLInterfaceVlansVlanL3InterfaceIpv4AddressList
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: hostname
+          in: path
+          description: Value from executing hostname on the compute node.
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name that identifies the physical interface
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name given to the interface
+          required: true
+          type: string
+        - name: vlan-interface
+          in: path
+          description: String that identifies the interface
+          required: true
+          type: string
+        - name: l3-interface-ipv4-address
+          in: path
+          description: IP address
+          required: true
+          type: string
+        - name: resource-version
+          in: query
+          description: resource-version for concurrency
+          required: true
+          type: string
+  /cloud-infrastructure/pservers/pserver/{hostname}/p-interfaces/p-interface/{interface-name}/l-interfaces/l-interface/{interface-name}/vlans/vlan/{vlan-interface}/l3-interface-ipv6-address-list/{l3-interface-ipv6-address}/relationship-list/relationship:
+    put:
+      tags:
+        - CloudInfrastructure
+      summary: see node definition for valid relationships
+      operationId: createOrUpdateCloudInfrastructurePserversPserverPInterfacesPInterfaceLInterfacesLInterfaceVlansVlanL3InterfaceIpv6AddressListRelationshipListRelationship
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: hostname
+          in: path
+          description: Value from executing hostname on the compute node.
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name that identifies the physical interface
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name given to the interface
+          required: true
+          type: string
+        - name: vlan-interface
+          in: path
+          description: String that identifies the interface
+          required: true
+          type: string
+        - name: l3-interface-ipv6-address
+          in: path
+          description: IP address
+          required: true
+          type: string
+        - name: body
+          in: body
+          description: relationship object that needs to be created or updated
+          required: true
+          schema:
+            $ref: "#/definitions/relationship"
+    delete:
+      tags:
+        - CloudInfrastructure
+      summary: delete an existing relationship
+      description: delete an existing relationship
+      operationId: deleteCloudInfrastructurePserversPserverPInterfacesPInterfaceLInterfacesLInterfaceVlansVlanL3InterfaceIpv6AddressListRelationshipListRelationship
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: hostname
+          in: path
+          description: Value from executing hostname on the compute node.
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name that identifies the physical interface
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name given to the interface
+          required: true
+          type: string
+        - name: vlan-interface
+          in: path
+          description: String that identifies the interface
+          required: true
+          type: string
+        - name: l3-interface-ipv6-address
+          in: path
+          description: IP address
+          required: true
+          type: string
+  /cloud-infrastructure/pservers/pserver/{hostname}/p-interfaces/p-interface/{interface-name}/l-interfaces/l-interface/{interface-name}/vlans/vlan/{vlan-interface}/l3-interface-ipv6-address-list/{l3-interface-ipv6-address}:
+    get:
+      tags:
+        - CloudInfrastructure
+      summary: returns l3-interface-ipv6-address-list
+      description: returns l3-interface-ipv6-address-list
+      operationId: getCloudInfrastructurePserversPserverPInterfacesPInterfaceLInterfacesLInterfaceVlansVlanL3InterfaceIpv6AddressList
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "200":
+          description: successful operation
+          schema:
+              $ref: "#/definitions/l3-interface-ipv6-address-list"
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: hostname
+          in: path
+          description: Value from executing hostname on the compute node.
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name that identifies the physical interface
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name given to the interface
+          required: true
+          type: string
+        - name: vlan-interface
+          in: path
+          description: String that identifies the interface
+          required: true
+          type: string
+        - name: l3-interface-ipv6-address
+          in: path
+          description: IP address
+          required: true
+          type: string
+        - name: inv-status
+          in: query
+          description: CANOPI's inventory status.  Only set with values exactly as defined by CANOPI.
+          required: false
+          type: string
+        - name: pserver-id
+          in: query
+          description: ID of Pserver
+          required: false
+          type: string
+        - name: in-maint
+          in: query
+          required: false
+          type: boolean
+        - name: pserver-name2
+          in: query
+          description: alternative pserver name
+          required: false
+          type: string
+        - name: prov-status
+          in: query
+          description: Trigger for operational monitoring of this resource by Service Assurance systems.
+          required: false
+          type: string
+        - name: interface-id
+          in: query
+          description: ID of interface
+          required: false
+          type: string
+        - name: macaddr
+          in: query
+          description: MAC address for the interface
+          required: false
+          type: string
+        - name: network-name
+          in: query
+          description: Name of the network
+          required: false
+          type: string
+        - name: vlan-id-inner
+          in: query
+          description: Inner VLAN tag
+          required: false
+          type: integer
+          format: int64
+        - name: vpn-key
+          in: query
+          description: This indicates the customers VPN ID associated with this vlan
+          required: false
+          type: string
+        - name: vlan-id-inner
+          in: query
+          description: Inner VLAN tag
+          required: false
+          type: integer
+          format: int64
+        - name: neutron-network-id
+          in: query
+          description: Neutron network id of the interface that address belongs to
+          required: false
+          type: string
+        - name: neutron-subnet-id
+          in: query
+          description: Neutron id of subnet that address belongs to
+          required: false
+          type: string
+    put:
+      tags:
+        - CloudInfrastructure
+      summary: create or update an existing l3-interface-ipv6-address-list
+      description: create or update an existing l3-interface-ipv6-address-list
+      operationId: createOrUpdateCloudInfrastructurePserversPserverPInterfacesPInterfaceLInterfacesLInterfaceVlansVlanL3InterfaceIpv6AddressList
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: hostname
+          in: path
+          description: Value from executing hostname on the compute node.
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name that identifies the physical interface
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name given to the interface
+          required: true
+          type: string
+        - name: vlan-interface
+          in: path
+          description: String that identifies the interface
+          required: true
+          type: string
+        - name: l3-interface-ipv6-address
+          in: path
+          description: IP address
+          required: true
+          type: string
+        - name: body
+          in: body
+          description: l3-interface-ipv6-address-list object that needs to be created or updated
+          required: true
+          schema:
+            $ref: "#/definitions/l3-interface-ipv6-address-list"
+    delete:
+      tags:
+        - CloudInfrastructure
+      summary: delete an existing l3-interface-ipv6-address-list
+      description: delete an existing l3-interface-ipv6-address-list
+      operationId: deleteCloudInfrastructurePserversPserverPInterfacesPInterfaceLInterfacesLInterfaceVlansVlanL3InterfaceIpv6AddressList
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: hostname
+          in: path
+          description: Value from executing hostname on the compute node.
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name that identifies the physical interface
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name given to the interface
+          required: true
+          type: string
+        - name: vlan-interface
+          in: path
+          description: String that identifies the interface
+          required: true
+          type: string
+        - name: l3-interface-ipv6-address
+          in: path
+          description: IP address
+          required: true
+          type: string
+        - name: resource-version
+          in: query
+          description: resource-version for concurrency
+          required: true
+          type: string
+  /cloud-infrastructure/pservers/pserver/{hostname}/p-interfaces/p-interface/{interface-name}/l-interfaces/l-interface/{interface-name}/vlans/vlan/{vlan-interface}:
+    get:
+      tags:
+        - CloudInfrastructure
+      summary: returns vlan
+      description: returns vlan
+      operationId: getCloudInfrastructurePserversPserverPInterfacesPInterfaceLInterfacesLInterfaceVlansVlan
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "200":
+          description: successful operation
+          schema:
+              $ref: "#/definitions/vlan"
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: hostname
+          in: path
+          description: Value from executing hostname on the compute node.
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name that identifies the physical interface
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name given to the interface
+          required: true
+          type: string
+        - name: vlan-interface
+          in: path
+          description: String that identifies the interface
+          required: true
+          type: string
+        - name: inv-status
+          in: query
+          description: CANOPI's inventory status.  Only set with values exactly as defined by CANOPI.
+          required: false
+          type: string
+        - name: pserver-id
+          in: query
+          description: ID of Pserver
+          required: false
+          type: string
+        - name: in-maint
+          in: query
+          required: false
+          type: boolean
+        - name: pserver-name2
+          in: query
+          description: alternative pserver name
+          required: false
+          type: string
+        - name: prov-status
+          in: query
+          description: Trigger for operational monitoring of this resource by Service Assurance systems.
+          required: false
+          type: string
+        - name: interface-id
+          in: query
+          description: ID of interface
+          required: false
+          type: string
+        - name: macaddr
+          in: query
+          description: MAC address for the interface
+          required: false
+          type: string
+        - name: network-name
+          in: query
+          description: Name of the network
+          required: false
+          type: string
+        - name: vlan-id-inner
+          in: query
+          description: Inner VLAN tag
+          required: false
+          type: integer
+          format: int64
+        - name: vpn-key
+          in: query
+          description: This indicates the customers VPN ID associated with this vlan
+          required: false
+          type: string
+    put:
+      tags:
+        - CloudInfrastructure
+      summary: create or update an existing vlan
+      description: create or update an existing vlan
+      operationId: createOrUpdateCloudInfrastructurePserversPserverPInterfacesPInterfaceLInterfacesLInterfaceVlansVlan
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: hostname
+          in: path
+          description: Value from executing hostname on the compute node.
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name that identifies the physical interface
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name given to the interface
+          required: true
+          type: string
+        - name: vlan-interface
+          in: path
+          description: String that identifies the interface
+          required: true
+          type: string
+        - name: body
+          in: body
+          description: vlan object that needs to be created or updated
+          required: true
+          schema:
+            $ref: "#/definitions/vlan"
+    delete:
+      tags:
+        - CloudInfrastructure
+      summary: delete an existing vlan
+      description: delete an existing vlan
+      operationId: deleteCloudInfrastructurePserversPserverPInterfacesPInterfaceLInterfacesLInterfaceVlansVlan
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: hostname
+          in: path
+          description: Value from executing hostname on the compute node.
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name that identifies the physical interface
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name given to the interface
+          required: true
+          type: string
+        - name: vlan-interface
+          in: path
+          description: String that identifies the interface
+          required: true
+          type: string
+        - name: resource-version
+          in: query
+          description: resource-version for concurrency
+          required: true
+          type: string
+  /cloud-infrastructure/pservers/pserver/{hostname}/p-interfaces/p-interface/{interface-name}/l-interfaces/l-interface/{interface-name}/vlans:
+    get:
+      tags:
+        - CloudInfrastructure
+      summary: returns vlans
+      description: returns vlans
+      operationId: getCloudInfrastructurePserversPserverPInterfacesPInterfaceLInterfacesLInterfaceVlans
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "200":
+          description: successful operation
+          schema:
+              $ref: "#/definitions/vlans"
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: hostname
+          in: path
+          description: Value from executing hostname on the compute node.
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name that identifies the physical interface
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name given to the interface
+          required: true
+          type: string
+        - name: inv-status
+          in: query
+          description: CANOPI's inventory status.  Only set with values exactly as defined by CANOPI.
+          required: false
+          type: string
+        - name: pserver-id
+          in: query
+          description: ID of Pserver
+          required: false
+          type: string
+        - name: in-maint
+          in: query
+          required: false
+          type: boolean
+        - name: pserver-name2
+          in: query
+          description: alternative pserver name
+          required: false
+          type: string
+        - name: prov-status
+          in: query
+          description: Trigger for operational monitoring of this resource by Service Assurance systems.
+          required: false
+          type: string
+        - name: interface-id
+          in: query
+          description: ID of interface
+          required: false
+          type: string
+        - name: macaddr
+          in: query
+          description: MAC address for the interface
+          required: false
+          type: string
+        - name: network-name
+          in: query
+          description: Name of the network
+          required: false
+          type: string
+  /cloud-infrastructure/pservers/pserver/{hostname}/p-interfaces/p-interface/{interface-name}/l-interfaces/l-interface/{interface-name}/sriov-vfs/sriov-vf/{pci-id}/relationship-list/relationship:
+    put:
+      tags:
+        - CloudInfrastructure
+      summary: see node definition for valid relationships
+      operationId: createOrUpdateCloudInfrastructurePserversPserverPInterfacesPInterfaceLInterfacesLInterfaceSriovVfsSriovVfRelationshipListRelationship
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: hostname
+          in: path
+          description: Value from executing hostname on the compute node.
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name that identifies the physical interface
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name given to the interface
+          required: true
+          type: string
+        - name: pci-id
+          in: path
+          description: PCI ID used to identify the sriov-vf
+          required: true
+          type: string
+        - name: body
+          in: body
+          description: relationship object that needs to be created or updated
+          required: true
+          schema:
+            $ref: "#/definitions/relationship"
+    delete:
+      tags:
+        - CloudInfrastructure
+      summary: delete an existing relationship
+      description: delete an existing relationship
+      operationId: deleteCloudInfrastructurePserversPserverPInterfacesPInterfaceLInterfacesLInterfaceSriovVfsSriovVfRelationshipListRelationship
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: hostname
+          in: path
+          description: Value from executing hostname on the compute node.
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name that identifies the physical interface
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name given to the interface
+          required: true
+          type: string
+        - name: pci-id
+          in: path
+          description: PCI ID used to identify the sriov-vf
+          required: true
+          type: string
+  /cloud-infrastructure/pservers/pserver/{hostname}/p-interfaces/p-interface/{interface-name}/l-interfaces/l-interface/{interface-name}/sriov-vfs/sriov-vf/{pci-id}:
+    get:
+      tags:
+        - CloudInfrastructure
+      summary: returns sriov-vf
+      description: returns sriov-vf
+      operationId: getCloudInfrastructurePserversPserverPInterfacesPInterfaceLInterfacesLInterfaceSriovVfsSriovVf
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "200":
+          description: successful operation
+          schema:
+              $ref: "#/definitions/sriov-vf"
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: hostname
+          in: path
+          description: Value from executing hostname on the compute node.
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name that identifies the physical interface
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name given to the interface
+          required: true
+          type: string
+        - name: pci-id
+          in: path
+          description: PCI ID used to identify the sriov-vf
+          required: true
+          type: string
+        - name: inv-status
+          in: query
+          description: CANOPI's inventory status.  Only set with values exactly as defined by CANOPI.
+          required: false
+          type: string
+        - name: pserver-id
+          in: query
+          description: ID of Pserver
+          required: false
+          type: string
+        - name: in-maint
+          in: query
+          required: false
+          type: boolean
+        - name: pserver-name2
+          in: query
+          description: alternative pserver name
+          required: false
+          type: string
+        - name: prov-status
+          in: query
+          description: Trigger for operational monitoring of this resource by Service Assurance systems.
+          required: false
+          type: string
+        - name: interface-id
+          in: query
+          description: ID of interface
+          required: false
+          type: string
+        - name: macaddr
+          in: query
+          description: MAC address for the interface
+          required: false
+          type: string
+        - name: network-name
+          in: query
+          description: Name of the network
+          required: false
+          type: string
+        - name: vf-vlan-filter
+          in: query
+          description: This metadata provides option to specify list of VLAN filters applied on VF to pass the traffic to VM.
+          required: false
+          type: string
+        - name: vf-mac-filter
+          in: query
+          description: When MAC filters are specified, VF-agent service configures VFs to do MAC level filtering before the traffic is passed to VM.
+          required: false
+          type: string
+        - name: vf-vlan-strip
+          in: query
+          description: When this field is set to true, VF will configured to strip the outer TAG before the traffic is passed to VM.
+          required: false
+          type: boolean
+        - name: neutron-network-id
+          in: query
+          description: Neutron network id of the interface
+          required: false
+          type: string
+    put:
+      tags:
+        - CloudInfrastructure
+      summary: create or update an existing sriov-vf
+      description: create or update an existing sriov-vf
+      operationId: createOrUpdateCloudInfrastructurePserversPserverPInterfacesPInterfaceLInterfacesLInterfaceSriovVfsSriovVf
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: hostname
+          in: path
+          description: Value from executing hostname on the compute node.
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name that identifies the physical interface
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name given to the interface
+          required: true
+          type: string
+        - name: pci-id
+          in: path
+          description: PCI ID used to identify the sriov-vf
+          required: true
+          type: string
+        - name: body
+          in: body
+          description: sriov-vf object that needs to be created or updated
+          required: true
+          schema:
+            $ref: "#/definitions/sriov-vf"
+    delete:
+      tags:
+        - CloudInfrastructure
+      summary: delete an existing sriov-vf
+      description: delete an existing sriov-vf
+      operationId: deleteCloudInfrastructurePserversPserverPInterfacesPInterfaceLInterfacesLInterfaceSriovVfsSriovVf
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: hostname
+          in: path
+          description: Value from executing hostname on the compute node.
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name that identifies the physical interface
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name given to the interface
+          required: true
+          type: string
+        - name: pci-id
+          in: path
+          description: PCI ID used to identify the sriov-vf
+          required: true
+          type: string
+        - name: resource-version
+          in: query
+          description: resource-version for concurrency
+          required: true
+          type: string
+  /cloud-infrastructure/pservers/pserver/{hostname}/p-interfaces/p-interface/{interface-name}/l-interfaces/l-interface/{interface-name}/sriov-vfs:
+    get:
+      tags:
+        - CloudInfrastructure
+      summary: returns sriov-vfs
+      description: returns sriov-vfs
+      operationId: getCloudInfrastructurePserversPserverPInterfacesPInterfaceLInterfacesLInterfaceSriovVfs
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "200":
+          description: successful operation
+          schema:
+              $ref: "#/definitions/sriov-vfs"
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: hostname
+          in: path
+          description: Value from executing hostname on the compute node.
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name that identifies the physical interface
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name given to the interface
+          required: true
+          type: string
+        - name: inv-status
+          in: query
+          description: CANOPI's inventory status.  Only set with values exactly as defined by CANOPI.
+          required: false
+          type: string
+        - name: pserver-id
+          in: query
+          description: ID of Pserver
+          required: false
+          type: string
+        - name: in-maint
+          in: query
+          required: false
+          type: boolean
+        - name: pserver-name2
+          in: query
+          description: alternative pserver name
+          required: false
+          type: string
+        - name: prov-status
+          in: query
+          description: Trigger for operational monitoring of this resource by Service Assurance systems.
+          required: false
+          type: string
+        - name: interface-id
+          in: query
+          description: ID of interface
+          required: false
+          type: string
+        - name: macaddr
+          in: query
+          description: MAC address for the interface
+          required: false
+          type: string
+        - name: network-name
+          in: query
+          description: Name of the network
+          required: false
+          type: string
+  /cloud-infrastructure/pservers/pserver/{hostname}/p-interfaces/p-interface/{interface-name}/l-interfaces/l-interface/{interface-name}/relationship-list/relationship:
+    put:
+      tags:
+        - CloudInfrastructure
+      summary: see node definition for valid relationships
+      operationId: createOrUpdateCloudInfrastructurePserversPserverPInterfacesPInterfaceLInterfacesLInterfaceRelationshipListRelationship
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: hostname
+          in: path
+          description: Value from executing hostname on the compute node.
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name that identifies the physical interface
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name given to the interface
+          required: true
+          type: string
+        - name: body
+          in: body
+          description: relationship object that needs to be created or updated
+          required: true
+          schema:
+            $ref: "#/definitions/relationship"
+    delete:
+      tags:
+        - CloudInfrastructure
+      summary: delete an existing relationship
+      description: delete an existing relationship
+      operationId: deleteCloudInfrastructurePserversPserverPInterfacesPInterfaceLInterfacesLInterfaceRelationshipListRelationship
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: hostname
+          in: path
+          description: Value from executing hostname on the compute node.
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name that identifies the physical interface
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name given to the interface
+          required: true
+          type: string
+  /cloud-infrastructure/pservers/pserver/{hostname}/p-interfaces/p-interface/{interface-name}/l-interfaces/l-interface/{interface-name}/l3-interface-ipv4-address-list/{l3-interface-ipv4-address}/relationship-list/relationship:
+    put:
+      tags:
+        - CloudInfrastructure
+      summary: see node definition for valid relationships
+      operationId: createOrUpdateCloudInfrastructurePserversPserverPInterfacesPInterfaceLInterfacesLInterfaceL3InterfaceIpv4AddressListRelationshipListRelationship
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: hostname
+          in: path
+          description: Value from executing hostname on the compute node.
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name that identifies the physical interface
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name given to the interface
+          required: true
+          type: string
+        - name: l3-interface-ipv4-address
+          in: path
+          description: IP address
+          required: true
+          type: string
+        - name: body
+          in: body
+          description: relationship object that needs to be created or updated
+          required: true
+          schema:
+            $ref: "#/definitions/relationship"
+    delete:
+      tags:
+        - CloudInfrastructure
+      summary: delete an existing relationship
+      description: delete an existing relationship
+      operationId: deleteCloudInfrastructurePserversPserverPInterfacesPInterfaceLInterfacesLInterfaceL3InterfaceIpv4AddressListRelationshipListRelationship
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: hostname
+          in: path
+          description: Value from executing hostname on the compute node.
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name that identifies the physical interface
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name given to the interface
+          required: true
+          type: string
+        - name: l3-interface-ipv4-address
+          in: path
+          description: IP address
+          required: true
+          type: string
+  /cloud-infrastructure/pservers/pserver/{hostname}/p-interfaces/p-interface/{interface-name}/l-interfaces/l-interface/{interface-name}/l3-interface-ipv4-address-list/{l3-interface-ipv4-address}:
+    get:
+      tags:
+        - CloudInfrastructure
+      summary: returns l3-interface-ipv4-address-list
+      description: returns l3-interface-ipv4-address-list
+      operationId: getCloudInfrastructurePserversPserverPInterfacesPInterfaceLInterfacesLInterfaceL3InterfaceIpv4AddressList
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "200":
+          description: successful operation
+          schema:
+              $ref: "#/definitions/l3-interface-ipv4-address-list"
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: hostname
+          in: path
+          description: Value from executing hostname on the compute node.
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name that identifies the physical interface
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name given to the interface
+          required: true
+          type: string
+        - name: l3-interface-ipv4-address
+          in: path
+          description: IP address
+          required: true
+          type: string
+        - name: inv-status
+          in: query
+          description: CANOPI's inventory status.  Only set with values exactly as defined by CANOPI.
+          required: false
+          type: string
+        - name: pserver-id
+          in: query
+          description: ID of Pserver
+          required: false
+          type: string
+        - name: in-maint
+          in: query
+          required: false
+          type: boolean
+        - name: pserver-name2
+          in: query
+          description: alternative pserver name
+          required: false
+          type: string
+        - name: prov-status
+          in: query
+          description: Trigger for operational monitoring of this resource by Service Assurance systems.
+          required: false
+          type: string
+        - name: interface-id
+          in: query
+          description: ID of interface
+          required: false
+          type: string
+        - name: macaddr
+          in: query
+          description: MAC address for the interface
+          required: false
+          type: string
+        - name: network-name
+          in: query
+          description: Name of the network
+          required: false
+          type: string
+        - name: vlan-id-inner
+          in: query
+          description: Inner VLAN tag
+          required: false
+          type: integer
+          format: int64
+        - name: neutron-network-id
+          in: query
+          description: Neutron network id of the interface that address belongs to
+          required: false
+          type: string
+        - name: neutron-subnet-id
+          in: query
+          description: Neutron id of subnet that address belongs to
+          required: false
+          type: string
+    put:
+      tags:
+        - CloudInfrastructure
+      summary: create or update an existing l3-interface-ipv4-address-list
+      description: create or update an existing l3-interface-ipv4-address-list
+      operationId: createOrUpdateCloudInfrastructurePserversPserverPInterfacesPInterfaceLInterfacesLInterfaceL3InterfaceIpv4AddressList
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: hostname
+          in: path
+          description: Value from executing hostname on the compute node.
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name that identifies the physical interface
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name given to the interface
+          required: true
+          type: string
+        - name: l3-interface-ipv4-address
+          in: path
+          description: IP address
+          required: true
+          type: string
+        - name: body
+          in: body
+          description: l3-interface-ipv4-address-list object that needs to be created or updated
+          required: true
+          schema:
+            $ref: "#/definitions/l3-interface-ipv4-address-list"
+    delete:
+      tags:
+        - CloudInfrastructure
+      summary: delete an existing l3-interface-ipv4-address-list
+      description: delete an existing l3-interface-ipv4-address-list
+      operationId: deleteCloudInfrastructurePserversPserverPInterfacesPInterfaceLInterfacesLInterfaceL3InterfaceIpv4AddressList
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: hostname
+          in: path
+          description: Value from executing hostname on the compute node.
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name that identifies the physical interface
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name given to the interface
+          required: true
+          type: string
+        - name: l3-interface-ipv4-address
+          in: path
+          description: IP address
+          required: true
+          type: string
+        - name: resource-version
+          in: query
+          description: resource-version for concurrency
+          required: true
+          type: string
+  /cloud-infrastructure/pservers/pserver/{hostname}/p-interfaces/p-interface/{interface-name}/l-interfaces/l-interface/{interface-name}/l3-interface-ipv6-address-list/{l3-interface-ipv6-address}/relationship-list/relationship:
+    put:
+      tags:
+        - CloudInfrastructure
+      summary: see node definition for valid relationships
+      operationId: createOrUpdateCloudInfrastructurePserversPserverPInterfacesPInterfaceLInterfacesLInterfaceL3InterfaceIpv6AddressListRelationshipListRelationship
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: hostname
+          in: path
+          description: Value from executing hostname on the compute node.
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name that identifies the physical interface
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name given to the interface
+          required: true
+          type: string
+        - name: l3-interface-ipv6-address
+          in: path
+          description: IP address
+          required: true
+          type: string
+        - name: body
+          in: body
+          description: relationship object that needs to be created or updated
+          required: true
+          schema:
+            $ref: "#/definitions/relationship"
+    delete:
+      tags:
+        - CloudInfrastructure
+      summary: delete an existing relationship
+      description: delete an existing relationship
+      operationId: deleteCloudInfrastructurePserversPserverPInterfacesPInterfaceLInterfacesLInterfaceL3InterfaceIpv6AddressListRelationshipListRelationship
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: hostname
+          in: path
+          description: Value from executing hostname on the compute node.
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name that identifies the physical interface
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name given to the interface
+          required: true
+          type: string
+        - name: l3-interface-ipv6-address
+          in: path
+          description: IP address
+          required: true
+          type: string
+  /cloud-infrastructure/pservers/pserver/{hostname}/p-interfaces/p-interface/{interface-name}/l-interfaces/l-interface/{interface-name}/l3-interface-ipv6-address-list/{l3-interface-ipv6-address}:
+    get:
+      tags:
+        - CloudInfrastructure
+      summary: returns l3-interface-ipv6-address-list
+      description: returns l3-interface-ipv6-address-list
+      operationId: getCloudInfrastructurePserversPserverPInterfacesPInterfaceLInterfacesLInterfaceL3InterfaceIpv6AddressList
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "200":
+          description: successful operation
+          schema:
+              $ref: "#/definitions/l3-interface-ipv6-address-list"
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: hostname
+          in: path
+          description: Value from executing hostname on the compute node.
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name that identifies the physical interface
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name given to the interface
+          required: true
+          type: string
+        - name: l3-interface-ipv6-address
+          in: path
+          description: IP address
+          required: true
+          type: string
+        - name: inv-status
+          in: query
+          description: CANOPI's inventory status.  Only set with values exactly as defined by CANOPI.
+          required: false
+          type: string
+        - name: pserver-id
+          in: query
+          description: ID of Pserver
+          required: false
+          type: string
+        - name: in-maint
+          in: query
+          required: false
+          type: boolean
+        - name: pserver-name2
+          in: query
+          description: alternative pserver name
+          required: false
+          type: string
+        - name: prov-status
+          in: query
+          description: Trigger for operational monitoring of this resource by Service Assurance systems.
+          required: false
+          type: string
+        - name: interface-id
+          in: query
+          description: ID of interface
+          required: false
+          type: string
+        - name: macaddr
+          in: query
+          description: MAC address for the interface
+          required: false
+          type: string
+        - name: network-name
+          in: query
+          description: Name of the network
+          required: false
+          type: string
+        - name: vlan-id-inner
+          in: query
+          description: Inner VLAN tag
+          required: false
+          type: integer
+          format: int64
+        - name: neutron-network-id
+          in: query
+          description: Neutron network id of the interface that address belongs to
+          required: false
+          type: string
+        - name: neutron-subnet-id
+          in: query
+          description: Neutron id of subnet that address belongs to
+          required: false
+          type: string
+    put:
+      tags:
+        - CloudInfrastructure
+      summary: create or update an existing l3-interface-ipv6-address-list
+      description: create or update an existing l3-interface-ipv6-address-list
+      operationId: createOrUpdateCloudInfrastructurePserversPserverPInterfacesPInterfaceLInterfacesLInterfaceL3InterfaceIpv6AddressList
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: hostname
+          in: path
+          description: Value from executing hostname on the compute node.
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name that identifies the physical interface
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name given to the interface
+          required: true
+          type: string
+        - name: l3-interface-ipv6-address
+          in: path
+          description: IP address
+          required: true
+          type: string
+        - name: body
+          in: body
+          description: l3-interface-ipv6-address-list object that needs to be created or updated
+          required: true
+          schema:
+            $ref: "#/definitions/l3-interface-ipv6-address-list"
+    delete:
+      tags:
+        - CloudInfrastructure
+      summary: delete an existing l3-interface-ipv6-address-list
+      description: delete an existing l3-interface-ipv6-address-list
+      operationId: deleteCloudInfrastructurePserversPserverPInterfacesPInterfaceLInterfacesLInterfaceL3InterfaceIpv6AddressList
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: hostname
+          in: path
+          description: Value from executing hostname on the compute node.
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name that identifies the physical interface
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name given to the interface
+          required: true
+          type: string
+        - name: l3-interface-ipv6-address
+          in: path
+          description: IP address
+          required: true
+          type: string
+        - name: resource-version
+          in: query
+          description: resource-version for concurrency
+          required: true
+          type: string
+  /cloud-infrastructure/pservers/pserver/{hostname}/p-interfaces/p-interface/{interface-name}/l-interfaces/l-interface/{interface-name}:
+    get:
+      tags:
+        - CloudInfrastructure
+      summary: returns l-interface
+      description: returns l-interface
+      operationId: getCloudInfrastructurePserversPserverPInterfacesPInterfaceLInterfacesLInterface
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "200":
+          description: successful operation
+          schema:
+              $ref: "#/definitions/l-interface"
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: hostname
+          in: path
+          description: Value from executing hostname on the compute node.
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name that identifies the physical interface
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name given to the interface
+          required: true
+          type: string
+        - name: inv-status
+          in: query
+          description: CANOPI's inventory status.  Only set with values exactly as defined by CANOPI.
+          required: false
+          type: string
+        - name: pserver-id
+          in: query
+          description: ID of Pserver
+          required: false
+          type: string
+        - name: in-maint
+          in: query
+          required: false
+          type: boolean
+        - name: pserver-name2
+          in: query
+          description: alternative pserver name
+          required: false
+          type: string
+        - name: prov-status
+          in: query
+          description: Trigger for operational monitoring of this resource by Service Assurance systems.
+          required: false
+          type: string
+        - name: interface-id
+          in: query
+          description: ID of interface
+          required: false
+          type: string
+        - name: macaddr
+          in: query
+          description: MAC address for the interface
+          required: false
+          type: string
+        - name: network-name
+          in: query
+          description: Name of the network
+          required: false
+          type: string
+    put:
+      tags:
+        - CloudInfrastructure
+      summary: create or update an existing l-interface
+      description: create or update an existing l-interface
+      operationId: createOrUpdateCloudInfrastructurePserversPserverPInterfacesPInterfaceLInterfacesLInterface
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: hostname
+          in: path
+          description: Value from executing hostname on the compute node.
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name that identifies the physical interface
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name given to the interface
+          required: true
+          type: string
+        - name: body
+          in: body
+          description: l-interface object that needs to be created or updated
+          required: true
+          schema:
+            $ref: "#/definitions/l-interface"
+    delete:
+      tags:
+        - CloudInfrastructure
+      summary: delete an existing l-interface
+      description: delete an existing l-interface
+      operationId: deleteCloudInfrastructurePserversPserverPInterfacesPInterfaceLInterfacesLInterface
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: hostname
+          in: path
+          description: Value from executing hostname on the compute node.
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name that identifies the physical interface
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name given to the interface
+          required: true
+          type: string
+        - name: resource-version
+          in: query
+          description: resource-version for concurrency
+          required: true
+          type: string
+  /cloud-infrastructure/pservers/pserver/{hostname}/p-interfaces/p-interface/{interface-name}/l-interfaces:
+    get:
+      tags:
+        - CloudInfrastructure
+      summary: returns l-interfaces
+      description: returns l-interfaces
+      operationId: getCloudInfrastructurePserversPserverPInterfacesPInterfaceLInterfaces
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "200":
+          description: successful operation
+          schema:
+              $ref: "#/definitions/l-interfaces"
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: hostname
+          in: path
+          description: Value from executing hostname on the compute node.
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name that identifies the physical interface
+          required: true
+          type: string
+        - name: inv-status
+          in: query
+          description: CANOPI's inventory status.  Only set with values exactly as defined by CANOPI.
+          required: false
+          type: string
+        - name: pserver-id
+          in: query
+          description: ID of Pserver
+          required: false
+          type: string
+        - name: in-maint
+          in: query
+          required: false
+          type: boolean
+        - name: pserver-name2
+          in: query
+          description: alternative pserver name
+          required: false
+          type: string
+        - name: prov-status
+          in: query
+          description: Trigger for operational monitoring of this resource by Service Assurance systems.
+          required: false
+          type: string
+  /cloud-infrastructure/pservers/pserver/{hostname}/p-interfaces/p-interface/{interface-name}:
+    get:
+      tags:
+        - CloudInfrastructure
+      summary: returns p-interface
+      description: returns p-interface
+      operationId: getCloudInfrastructurePserversPserverPInterfacesPInterface
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "200":
+          description: successful operation
+          schema:
+              $ref: "#/definitions/p-interface"
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: hostname
+          in: path
+          description: Value from executing hostname on the compute node.
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name that identifies the physical interface
+          required: true
+          type: string
+        - name: inv-status
+          in: query
+          description: CANOPI's inventory status.  Only set with values exactly as defined by CANOPI.
+          required: false
+          type: string
+        - name: pserver-id
+          in: query
+          description: ID of Pserver
+          required: false
+          type: string
+        - name: in-maint
+          in: query
+          required: false
+          type: boolean
+        - name: pserver-name2
+          in: query
+          description: alternative pserver name
+          required: false
+          type: string
+        - name: prov-status
+          in: query
+          description: Trigger for operational monitoring of this resource by Service Assurance systems.
+          required: false
+          type: string
+    put:
+      tags:
+        - CloudInfrastructure
+      summary: create or update an existing p-interface
+      description: create or update an existing p-interface
+      operationId: createOrUpdateCloudInfrastructurePserversPserverPInterfacesPInterface
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: hostname
+          in: path
+          description: Value from executing hostname on the compute node.
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name that identifies the physical interface
+          required: true
+          type: string
+        - name: body
+          in: body
+          description: p-interface object that needs to be created or updated
+          required: true
+          schema:
+            $ref: "#/definitions/p-interface"
+    delete:
+      tags:
+        - CloudInfrastructure
+      summary: delete an existing p-interface
+      description: delete an existing p-interface
+      operationId: deleteCloudInfrastructurePserversPserverPInterfacesPInterface
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: hostname
+          in: path
+          description: Value from executing hostname on the compute node.
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name that identifies the physical interface
+          required: true
+          type: string
+        - name: resource-version
+          in: query
+          description: resource-version for concurrency
+          required: true
+          type: string
+  /cloud-infrastructure/pservers/pserver/{hostname}/p-interfaces:
+    get:
+      tags:
+        - CloudInfrastructure
+      summary: returns p-interfaces
+      description: returns p-interfaces
+      operationId: getCloudInfrastructurePserversPserverPInterfaces
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "200":
+          description: successful operation
+          schema:
+              $ref: "#/definitions/p-interfaces"
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: hostname
+          in: path
+          description: Value from executing hostname on the compute node.
+          required: true
+          type: string
+        - name: inv-status
+          in: query
+          description: CANOPI's inventory status.  Only set with values exactly as defined by CANOPI.
+          required: false
+          type: string
+        - name: pserver-id
+          in: query
+          description: ID of Pserver
+          required: false
+          type: string
+        - name: in-maint
+          in: query
+          required: false
+          type: boolean
+        - name: pserver-name2
+          in: query
+          description: alternative pserver name
+          required: false
+          type: string
+  /cloud-infrastructure/pservers/pserver/{hostname}/lag-interfaces/lag-interface/{interface-name}/relationship-list/relationship:
+    put:
+      tags:
+        - CloudInfrastructure
+      summary: see node definition for valid relationships
+      operationId: createOrUpdateCloudInfrastructurePserversPserverLagInterfacesLagInterfaceRelationshipListRelationship
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: hostname
+          in: path
+          description: Value from executing hostname on the compute node.
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name that identifies the link aggregate interface
+          required: true
+          type: string
+        - name: body
+          in: body
+          description: relationship object that needs to be created or updated
+          required: true
+          schema:
+            $ref: "#/definitions/relationship"
+    delete:
+      tags:
+        - CloudInfrastructure
+      summary: delete an existing relationship
+      description: delete an existing relationship
+      operationId: deleteCloudInfrastructurePserversPserverLagInterfacesLagInterfaceRelationshipListRelationship
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: hostname
+          in: path
+          description: Value from executing hostname on the compute node.
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name that identifies the link aggregate interface
+          required: true
+          type: string
+  /cloud-infrastructure/pservers/pserver/{hostname}/lag-interfaces/lag-interface/{interface-name}/l-interfaces/l-interface/{interface-name}/vlans/vlan/{vlan-interface}/relationship-list/relationship:
+    put:
+      tags:
+        - CloudInfrastructure
+      summary: see node definition for valid relationships
+      operationId: createOrUpdateCloudInfrastructurePserversPserverLagInterfacesLagInterfaceLInterfacesLInterfaceVlansVlanRelationshipListRelationship
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: hostname
+          in: path
+          description: Value from executing hostname on the compute node.
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name that identifies the link aggregate interface
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name given to the interface
+          required: true
+          type: string
+        - name: vlan-interface
+          in: path
+          description: String that identifies the interface
+          required: true
+          type: string
+        - name: body
+          in: body
+          description: relationship object that needs to be created or updated
+          required: true
+          schema:
+            $ref: "#/definitions/relationship"
+    delete:
+      tags:
+        - CloudInfrastructure
+      summary: delete an existing relationship
+      description: delete an existing relationship
+      operationId: deleteCloudInfrastructurePserversPserverLagInterfacesLagInterfaceLInterfacesLInterfaceVlansVlanRelationshipListRelationship
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: hostname
+          in: path
+          description: Value from executing hostname on the compute node.
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name that identifies the link aggregate interface
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name given to the interface
+          required: true
+          type: string
+        - name: vlan-interface
+          in: path
+          description: String that identifies the interface
+          required: true
+          type: string
+  /cloud-infrastructure/pservers/pserver/{hostname}/lag-interfaces/lag-interface/{interface-name}/l-interfaces/l-interface/{interface-name}/vlans/vlan/{vlan-interface}/l3-interface-ipv4-address-list/{l3-interface-ipv4-address}/relationship-list/relationship:
+    put:
+      tags:
+        - CloudInfrastructure
+      summary: see node definition for valid relationships
+      operationId: createOrUpdateCloudInfrastructurePserversPserverLagInterfacesLagInterfaceLInterfacesLInterfaceVlansVlanL3InterfaceIpv4AddressListRelationshipListRelationship
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: hostname
+          in: path
+          description: Value from executing hostname on the compute node.
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name that identifies the link aggregate interface
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name given to the interface
+          required: true
+          type: string
+        - name: vlan-interface
+          in: path
+          description: String that identifies the interface
+          required: true
+          type: string
+        - name: l3-interface-ipv4-address
+          in: path
+          description: IP address
+          required: true
+          type: string
+        - name: body
+          in: body
+          description: relationship object that needs to be created or updated
+          required: true
+          schema:
+            $ref: "#/definitions/relationship"
+    delete:
+      tags:
+        - CloudInfrastructure
+      summary: delete an existing relationship
+      description: delete an existing relationship
+      operationId: deleteCloudInfrastructurePserversPserverLagInterfacesLagInterfaceLInterfacesLInterfaceVlansVlanL3InterfaceIpv4AddressListRelationshipListRelationship
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: hostname
+          in: path
+          description: Value from executing hostname on the compute node.
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name that identifies the link aggregate interface
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name given to the interface
+          required: true
+          type: string
+        - name: vlan-interface
+          in: path
+          description: String that identifies the interface
+          required: true
+          type: string
+        - name: l3-interface-ipv4-address
+          in: path
+          description: IP address
+          required: true
+          type: string
+  /cloud-infrastructure/pservers/pserver/{hostname}/lag-interfaces/lag-interface/{interface-name}/l-interfaces/l-interface/{interface-name}/vlans/vlan/{vlan-interface}/l3-interface-ipv4-address-list/{l3-interface-ipv4-address}:
+    get:
+      tags:
+        - CloudInfrastructure
+      summary: returns l3-interface-ipv4-address-list
+      description: returns l3-interface-ipv4-address-list
+      operationId: getCloudInfrastructurePserversPserverLagInterfacesLagInterfaceLInterfacesLInterfaceVlansVlanL3InterfaceIpv4AddressList
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "200":
+          description: successful operation
+          schema:
+              $ref: "#/definitions/l3-interface-ipv4-address-list"
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: hostname
+          in: path
+          description: Value from executing hostname on the compute node.
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name that identifies the link aggregate interface
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name given to the interface
+          required: true
+          type: string
+        - name: vlan-interface
+          in: path
+          description: String that identifies the interface
+          required: true
+          type: string
+        - name: l3-interface-ipv4-address
+          in: path
+          description: IP address
+          required: true
+          type: string
+        - name: inv-status
+          in: query
+          description: CANOPI's inventory status.  Only set with values exactly as defined by CANOPI.
+          required: false
+          type: string
+        - name: pserver-id
+          in: query
+          description: ID of Pserver
+          required: false
+          type: string
+        - name: in-maint
+          in: query
+          required: false
+          type: boolean
+        - name: pserver-name2
+          in: query
+          description: alternative pserver name
+          required: false
+          type: string
+        - name: interface-id
+          in: query
+          description: ID of interface
+          required: false
+          type: string
+        - name: interface-role
+          in: query
+          description: Role assigned to this Interface, should use values as defined in ECOMP Yang models.
+          required: false
+          type: string
+        - name: interface-id
+          in: query
+          description: ID of interface
+          required: false
+          type: string
+        - name: macaddr
+          in: query
+          description: MAC address for the interface
+          required: false
+          type: string
+        - name: network-name
+          in: query
+          description: Name of the network
+          required: false
+          type: string
+        - name: vlan-id-inner
+          in: query
+          description: Inner VLAN tag
+          required: false
+          type: integer
+          format: int64
+        - name: vpn-key
+          in: query
+          description: This indicates the customers VPN ID associated with this vlan
+          required: false
+          type: string
+        - name: vlan-id-inner
+          in: query
+          description: Inner VLAN tag
+          required: false
+          type: integer
+          format: int64
+        - name: neutron-network-id
+          in: query
+          description: Neutron network id of the interface that address belongs to
+          required: false
+          type: string
+        - name: neutron-subnet-id
+          in: query
+          description: Neutron id of subnet that address belongs to
+          required: false
+          type: string
+    put:
+      tags:
+        - CloudInfrastructure
+      summary: create or update an existing l3-interface-ipv4-address-list
+      description: create or update an existing l3-interface-ipv4-address-list
+      operationId: createOrUpdateCloudInfrastructurePserversPserverLagInterfacesLagInterfaceLInterfacesLInterfaceVlansVlanL3InterfaceIpv4AddressList
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: hostname
+          in: path
+          description: Value from executing hostname on the compute node.
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name that identifies the link aggregate interface
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name given to the interface
+          required: true
+          type: string
+        - name: vlan-interface
+          in: path
+          description: String that identifies the interface
+          required: true
+          type: string
+        - name: l3-interface-ipv4-address
+          in: path
+          description: IP address
+          required: true
+          type: string
+        - name: body
+          in: body
+          description: l3-interface-ipv4-address-list object that needs to be created or updated
+          required: true
+          schema:
+            $ref: "#/definitions/l3-interface-ipv4-address-list"
+    delete:
+      tags:
+        - CloudInfrastructure
+      summary: delete an existing l3-interface-ipv4-address-list
+      description: delete an existing l3-interface-ipv4-address-list
+      operationId: deleteCloudInfrastructurePserversPserverLagInterfacesLagInterfaceLInterfacesLInterfaceVlansVlanL3InterfaceIpv4AddressList
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: hostname
+          in: path
+          description: Value from executing hostname on the compute node.
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name that identifies the link aggregate interface
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name given to the interface
+          required: true
+          type: string
+        - name: vlan-interface
+          in: path
+          description: String that identifies the interface
+          required: true
+          type: string
+        - name: l3-interface-ipv4-address
+          in: path
+          description: IP address
+          required: true
+          type: string
+        - name: resource-version
+          in: query
+          description: resource-version for concurrency
+          required: true
+          type: string
+  /cloud-infrastructure/pservers/pserver/{hostname}/lag-interfaces/lag-interface/{interface-name}/l-interfaces/l-interface/{interface-name}/vlans/vlan/{vlan-interface}/l3-interface-ipv6-address-list/{l3-interface-ipv6-address}/relationship-list/relationship:
+    put:
+      tags:
+        - CloudInfrastructure
+      summary: see node definition for valid relationships
+      operationId: createOrUpdateCloudInfrastructurePserversPserverLagInterfacesLagInterfaceLInterfacesLInterfaceVlansVlanL3InterfaceIpv6AddressListRelationshipListRelationship
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: hostname
+          in: path
+          description: Value from executing hostname on the compute node.
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name that identifies the link aggregate interface
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name given to the interface
+          required: true
+          type: string
+        - name: vlan-interface
+          in: path
+          description: String that identifies the interface
+          required: true
+          type: string
+        - name: l3-interface-ipv6-address
+          in: path
+          description: IP address
+          required: true
+          type: string
+        - name: body
+          in: body
+          description: relationship object that needs to be created or updated
+          required: true
+          schema:
+            $ref: "#/definitions/relationship"
+    delete:
+      tags:
+        - CloudInfrastructure
+      summary: delete an existing relationship
+      description: delete an existing relationship
+      operationId: deleteCloudInfrastructurePserversPserverLagInterfacesLagInterfaceLInterfacesLInterfaceVlansVlanL3InterfaceIpv6AddressListRelationshipListRelationship
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: hostname
+          in: path
+          description: Value from executing hostname on the compute node.
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name that identifies the link aggregate interface
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name given to the interface
+          required: true
+          type: string
+        - name: vlan-interface
+          in: path
+          description: String that identifies the interface
+          required: true
+          type: string
+        - name: l3-interface-ipv6-address
+          in: path
+          description: IP address
+          required: true
+          type: string
+  /cloud-infrastructure/pservers/pserver/{hostname}/lag-interfaces/lag-interface/{interface-name}/l-interfaces/l-interface/{interface-name}/vlans/vlan/{vlan-interface}/l3-interface-ipv6-address-list/{l3-interface-ipv6-address}:
+    get:
+      tags:
+        - CloudInfrastructure
+      summary: returns l3-interface-ipv6-address-list
+      description: returns l3-interface-ipv6-address-list
+      operationId: getCloudInfrastructurePserversPserverLagInterfacesLagInterfaceLInterfacesLInterfaceVlansVlanL3InterfaceIpv6AddressList
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "200":
+          description: successful operation
+          schema:
+              $ref: "#/definitions/l3-interface-ipv6-address-list"
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: hostname
+          in: path
+          description: Value from executing hostname on the compute node.
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name that identifies the link aggregate interface
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name given to the interface
+          required: true
+          type: string
+        - name: vlan-interface
+          in: path
+          description: String that identifies the interface
+          required: true
+          type: string
+        - name: l3-interface-ipv6-address
+          in: path
+          description: IP address
+          required: true
+          type: string
+        - name: inv-status
+          in: query
+          description: CANOPI's inventory status.  Only set with values exactly as defined by CANOPI.
+          required: false
+          type: string
+        - name: pserver-id
+          in: query
+          description: ID of Pserver
+          required: false
+          type: string
+        - name: in-maint
+          in: query
+          required: false
+          type: boolean
+        - name: pserver-name2
+          in: query
+          description: alternative pserver name
+          required: false
+          type: string
+        - name: interface-id
+          in: query
+          description: ID of interface
+          required: false
+          type: string
+        - name: interface-role
+          in: query
+          description: Role assigned to this Interface, should use values as defined in ECOMP Yang models.
+          required: false
+          type: string
+        - name: interface-id
+          in: query
+          description: ID of interface
+          required: false
+          type: string
+        - name: macaddr
+          in: query
+          description: MAC address for the interface
+          required: false
+          type: string
+        - name: network-name
+          in: query
+          description: Name of the network
+          required: false
+          type: string
+        - name: vlan-id-inner
+          in: query
+          description: Inner VLAN tag
+          required: false
+          type: integer
+          format: int64
+        - name: vpn-key
+          in: query
+          description: This indicates the customers VPN ID associated with this vlan
+          required: false
+          type: string
+        - name: vlan-id-inner
+          in: query
+          description: Inner VLAN tag
+          required: false
+          type: integer
+          format: int64
+        - name: neutron-network-id
+          in: query
+          description: Neutron network id of the interface that address belongs to
+          required: false
+          type: string
+        - name: neutron-subnet-id
+          in: query
+          description: Neutron id of subnet that address belongs to
+          required: false
+          type: string
+    put:
+      tags:
+        - CloudInfrastructure
+      summary: create or update an existing l3-interface-ipv6-address-list
+      description: create or update an existing l3-interface-ipv6-address-list
+      operationId: createOrUpdateCloudInfrastructurePserversPserverLagInterfacesLagInterfaceLInterfacesLInterfaceVlansVlanL3InterfaceIpv6AddressList
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: hostname
+          in: path
+          description: Value from executing hostname on the compute node.
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name that identifies the link aggregate interface
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name given to the interface
+          required: true
+          type: string
+        - name: vlan-interface
+          in: path
+          description: String that identifies the interface
+          required: true
+          type: string
+        - name: l3-interface-ipv6-address
+          in: path
+          description: IP address
+          required: true
+          type: string
+        - name: body
+          in: body
+          description: l3-interface-ipv6-address-list object that needs to be created or updated
+          required: true
+          schema:
+            $ref: "#/definitions/l3-interface-ipv6-address-list"
+    delete:
+      tags:
+        - CloudInfrastructure
+      summary: delete an existing l3-interface-ipv6-address-list
+      description: delete an existing l3-interface-ipv6-address-list
+      operationId: deleteCloudInfrastructurePserversPserverLagInterfacesLagInterfaceLInterfacesLInterfaceVlansVlanL3InterfaceIpv6AddressList
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: hostname
+          in: path
+          description: Value from executing hostname on the compute node.
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name that identifies the link aggregate interface
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name given to the interface
+          required: true
+          type: string
+        - name: vlan-interface
+          in: path
+          description: String that identifies the interface
+          required: true
+          type: string
+        - name: l3-interface-ipv6-address
+          in: path
+          description: IP address
+          required: true
+          type: string
+        - name: resource-version
+          in: query
+          description: resource-version for concurrency
+          required: true
+          type: string
+  /cloud-infrastructure/pservers/pserver/{hostname}/lag-interfaces/lag-interface/{interface-name}/l-interfaces/l-interface/{interface-name}/vlans/vlan/{vlan-interface}:
+    get:
+      tags:
+        - CloudInfrastructure
+      summary: returns vlan
+      description: returns vlan
+      operationId: getCloudInfrastructurePserversPserverLagInterfacesLagInterfaceLInterfacesLInterfaceVlansVlan
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "200":
+          description: successful operation
+          schema:
+              $ref: "#/definitions/vlan"
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: hostname
+          in: path
+          description: Value from executing hostname on the compute node.
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name that identifies the link aggregate interface
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name given to the interface
+          required: true
+          type: string
+        - name: vlan-interface
+          in: path
+          description: String that identifies the interface
+          required: true
+          type: string
+        - name: inv-status
+          in: query
+          description: CANOPI's inventory status.  Only set with values exactly as defined by CANOPI.
+          required: false
+          type: string
+        - name: pserver-id
+          in: query
+          description: ID of Pserver
+          required: false
+          type: string
+        - name: in-maint
+          in: query
+          required: false
+          type: boolean
+        - name: pserver-name2
+          in: query
+          description: alternative pserver name
+          required: false
+          type: string
+        - name: interface-id
+          in: query
+          description: ID of interface
+          required: false
+          type: string
+        - name: interface-role
+          in: query
+          description: Role assigned to this Interface, should use values as defined in ECOMP Yang models.
+          required: false
+          type: string
+        - name: interface-id
+          in: query
+          description: ID of interface
+          required: false
+          type: string
+        - name: macaddr
+          in: query
+          description: MAC address for the interface
+          required: false
+          type: string
+        - name: network-name
+          in: query
+          description: Name of the network
+          required: false
+          type: string
+        - name: vlan-id-inner
+          in: query
+          description: Inner VLAN tag
+          required: false
+          type: integer
+          format: int64
+        - name: vpn-key
+          in: query
+          description: This indicates the customers VPN ID associated with this vlan
+          required: false
+          type: string
+    put:
+      tags:
+        - CloudInfrastructure
+      summary: create or update an existing vlan
+      description: create or update an existing vlan
+      operationId: createOrUpdateCloudInfrastructurePserversPserverLagInterfacesLagInterfaceLInterfacesLInterfaceVlansVlan
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: hostname
+          in: path
+          description: Value from executing hostname on the compute node.
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name that identifies the link aggregate interface
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name given to the interface
+          required: true
+          type: string
+        - name: vlan-interface
+          in: path
+          description: String that identifies the interface
+          required: true
+          type: string
+        - name: body
+          in: body
+          description: vlan object that needs to be created or updated
+          required: true
+          schema:
+            $ref: "#/definitions/vlan"
+    delete:
+      tags:
+        - CloudInfrastructure
+      summary: delete an existing vlan
+      description: delete an existing vlan
+      operationId: deleteCloudInfrastructurePserversPserverLagInterfacesLagInterfaceLInterfacesLInterfaceVlansVlan
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: hostname
+          in: path
+          description: Value from executing hostname on the compute node.
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name that identifies the link aggregate interface
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name given to the interface
+          required: true
+          type: string
+        - name: vlan-interface
+          in: path
+          description: String that identifies the interface
+          required: true
+          type: string
+        - name: resource-version
+          in: query
+          description: resource-version for concurrency
+          required: true
+          type: string
+  /cloud-infrastructure/pservers/pserver/{hostname}/lag-interfaces/lag-interface/{interface-name}/l-interfaces/l-interface/{interface-name}/vlans:
+    get:
+      tags:
+        - CloudInfrastructure
+      summary: returns vlans
+      description: returns vlans
+      operationId: getCloudInfrastructurePserversPserverLagInterfacesLagInterfaceLInterfacesLInterfaceVlans
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "200":
+          description: successful operation
+          schema:
+              $ref: "#/definitions/vlans"
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: hostname
+          in: path
+          description: Value from executing hostname on the compute node.
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name that identifies the link aggregate interface
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name given to the interface
+          required: true
+          type: string
+        - name: inv-status
+          in: query
+          description: CANOPI's inventory status.  Only set with values exactly as defined by CANOPI.
+          required: false
+          type: string
+        - name: pserver-id
+          in: query
+          description: ID of Pserver
+          required: false
+          type: string
+        - name: in-maint
+          in: query
+          required: false
+          type: boolean
+        - name: pserver-name2
+          in: query
+          description: alternative pserver name
+          required: false
+          type: string
+        - name: interface-id
+          in: query
+          description: ID of interface
+          required: false
+          type: string
+        - name: interface-role
+          in: query
+          description: Role assigned to this Interface, should use values as defined in ECOMP Yang models.
+          required: false
+          type: string
+        - name: interface-id
+          in: query
+          description: ID of interface
+          required: false
+          type: string
+        - name: macaddr
+          in: query
+          description: MAC address for the interface
+          required: false
+          type: string
+        - name: network-name
+          in: query
+          description: Name of the network
+          required: false
+          type: string
+  /cloud-infrastructure/pservers/pserver/{hostname}/lag-interfaces/lag-interface/{interface-name}/l-interfaces/l-interface/{interface-name}/sriov-vfs/sriov-vf/{pci-id}/relationship-list/relationship:
+    put:
+      tags:
+        - CloudInfrastructure
+      summary: see node definition for valid relationships
+      operationId: createOrUpdateCloudInfrastructurePserversPserverLagInterfacesLagInterfaceLInterfacesLInterfaceSriovVfsSriovVfRelationshipListRelationship
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: hostname
+          in: path
+          description: Value from executing hostname on the compute node.
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name that identifies the link aggregate interface
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name given to the interface
+          required: true
+          type: string
+        - name: pci-id
+          in: path
+          description: PCI ID used to identify the sriov-vf
+          required: true
+          type: string
+        - name: body
+          in: body
+          description: relationship object that needs to be created or updated
+          required: true
+          schema:
+            $ref: "#/definitions/relationship"
+    delete:
+      tags:
+        - CloudInfrastructure
+      summary: delete an existing relationship
+      description: delete an existing relationship
+      operationId: deleteCloudInfrastructurePserversPserverLagInterfacesLagInterfaceLInterfacesLInterfaceSriovVfsSriovVfRelationshipListRelationship
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: hostname
+          in: path
+          description: Value from executing hostname on the compute node.
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name that identifies the link aggregate interface
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name given to the interface
+          required: true
+          type: string
+        - name: pci-id
+          in: path
+          description: PCI ID used to identify the sriov-vf
+          required: true
+          type: string
+  /cloud-infrastructure/pservers/pserver/{hostname}/lag-interfaces/lag-interface/{interface-name}/l-interfaces/l-interface/{interface-name}/sriov-vfs/sriov-vf/{pci-id}:
+    get:
+      tags:
+        - CloudInfrastructure
+      summary: returns sriov-vf
+      description: returns sriov-vf
+      operationId: getCloudInfrastructurePserversPserverLagInterfacesLagInterfaceLInterfacesLInterfaceSriovVfsSriovVf
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "200":
+          description: successful operation
+          schema:
+              $ref: "#/definitions/sriov-vf"
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: hostname
+          in: path
+          description: Value from executing hostname on the compute node.
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name that identifies the link aggregate interface
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name given to the interface
+          required: true
+          type: string
+        - name: pci-id
+          in: path
+          description: PCI ID used to identify the sriov-vf
+          required: true
+          type: string
+        - name: inv-status
+          in: query
+          description: CANOPI's inventory status.  Only set with values exactly as defined by CANOPI.
+          required: false
+          type: string
+        - name: pserver-id
+          in: query
+          description: ID of Pserver
+          required: false
+          type: string
+        - name: in-maint
+          in: query
+          required: false
+          type: boolean
+        - name: pserver-name2
+          in: query
+          description: alternative pserver name
+          required: false
+          type: string
+        - name: interface-id
+          in: query
+          description: ID of interface
+          required: false
+          type: string
+        - name: interface-role
+          in: query
+          description: Role assigned to this Interface, should use values as defined in ECOMP Yang models.
+          required: false
+          type: string
+        - name: interface-id
+          in: query
+          description: ID of interface
+          required: false
+          type: string
+        - name: macaddr
+          in: query
+          description: MAC address for the interface
+          required: false
+          type: string
+        - name: network-name
+          in: query
+          description: Name of the network
+          required: false
+          type: string
+        - name: vf-vlan-filter
+          in: query
+          description: This metadata provides option to specify list of VLAN filters applied on VF to pass the traffic to VM.
+          required: false
+          type: string
+        - name: vf-mac-filter
+          in: query
+          description: When MAC filters are specified, VF-agent service configures VFs to do MAC level filtering before the traffic is passed to VM.
+          required: false
+          type: string
+        - name: vf-vlan-strip
+          in: query
+          description: When this field is set to true, VF will configured to strip the outer TAG before the traffic is passed to VM.
+          required: false
+          type: boolean
+        - name: neutron-network-id
+          in: query
+          description: Neutron network id of the interface
+          required: false
+          type: string
+    put:
+      tags:
+        - CloudInfrastructure
+      summary: create or update an existing sriov-vf
+      description: create or update an existing sriov-vf
+      operationId: createOrUpdateCloudInfrastructurePserversPserverLagInterfacesLagInterfaceLInterfacesLInterfaceSriovVfsSriovVf
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: hostname
+          in: path
+          description: Value from executing hostname on the compute node.
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name that identifies the link aggregate interface
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name given to the interface
+          required: true
+          type: string
+        - name: pci-id
+          in: path
+          description: PCI ID used to identify the sriov-vf
+          required: true
+          type: string
+        - name: body
+          in: body
+          description: sriov-vf object that needs to be created or updated
+          required: true
+          schema:
+            $ref: "#/definitions/sriov-vf"
+    delete:
+      tags:
+        - CloudInfrastructure
+      summary: delete an existing sriov-vf
+      description: delete an existing sriov-vf
+      operationId: deleteCloudInfrastructurePserversPserverLagInterfacesLagInterfaceLInterfacesLInterfaceSriovVfsSriovVf
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: hostname
+          in: path
+          description: Value from executing hostname on the compute node.
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name that identifies the link aggregate interface
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name given to the interface
+          required: true
+          type: string
+        - name: pci-id
+          in: path
+          description: PCI ID used to identify the sriov-vf
+          required: true
+          type: string
+        - name: resource-version
+          in: query
+          description: resource-version for concurrency
+          required: true
+          type: string
+  /cloud-infrastructure/pservers/pserver/{hostname}/lag-interfaces/lag-interface/{interface-name}/l-interfaces/l-interface/{interface-name}/sriov-vfs:
+    get:
+      tags:
+        - CloudInfrastructure
+      summary: returns sriov-vfs
+      description: returns sriov-vfs
+      operationId: getCloudInfrastructurePserversPserverLagInterfacesLagInterfaceLInterfacesLInterfaceSriovVfs
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "200":
+          description: successful operation
+          schema:
+              $ref: "#/definitions/sriov-vfs"
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: hostname
+          in: path
+          description: Value from executing hostname on the compute node.
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name that identifies the link aggregate interface
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name given to the interface
+          required: true
+          type: string
+        - name: inv-status
+          in: query
+          description: CANOPI's inventory status.  Only set with values exactly as defined by CANOPI.
+          required: false
+          type: string
+        - name: pserver-id
+          in: query
+          description: ID of Pserver
+          required: false
+          type: string
+        - name: in-maint
+          in: query
+          required: false
+          type: boolean
+        - name: pserver-name2
+          in: query
+          description: alternative pserver name
+          required: false
+          type: string
+        - name: interface-id
+          in: query
+          description: ID of interface
+          required: false
+          type: string
+        - name: interface-role
+          in: query
+          description: Role assigned to this Interface, should use values as defined in ECOMP Yang models.
+          required: false
+          type: string
+        - name: interface-id
+          in: query
+          description: ID of interface
+          required: false
+          type: string
+        - name: macaddr
+          in: query
+          description: MAC address for the interface
+          required: false
+          type: string
+        - name: network-name
+          in: query
+          description: Name of the network
+          required: false
+          type: string
+  /cloud-infrastructure/pservers/pserver/{hostname}/lag-interfaces/lag-interface/{interface-name}/l-interfaces/l-interface/{interface-name}/relationship-list/relationship:
+    put:
+      tags:
+        - CloudInfrastructure
+      summary: see node definition for valid relationships
+      operationId: createOrUpdateCloudInfrastructurePserversPserverLagInterfacesLagInterfaceLInterfacesLInterfaceRelationshipListRelationship
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: hostname
+          in: path
+          description: Value from executing hostname on the compute node.
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name that identifies the link aggregate interface
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name given to the interface
+          required: true
+          type: string
+        - name: body
+          in: body
+          description: relationship object that needs to be created or updated
+          required: true
+          schema:
+            $ref: "#/definitions/relationship"
+    delete:
+      tags:
+        - CloudInfrastructure
+      summary: delete an existing relationship
+      description: delete an existing relationship
+      operationId: deleteCloudInfrastructurePserversPserverLagInterfacesLagInterfaceLInterfacesLInterfaceRelationshipListRelationship
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: hostname
+          in: path
+          description: Value from executing hostname on the compute node.
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name that identifies the link aggregate interface
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name given to the interface
+          required: true
+          type: string
+  /cloud-infrastructure/pservers/pserver/{hostname}/lag-interfaces/lag-interface/{interface-name}/l-interfaces/l-interface/{interface-name}/l3-interface-ipv4-address-list/{l3-interface-ipv4-address}/relationship-list/relationship:
+    put:
+      tags:
+        - CloudInfrastructure
+      summary: see node definition for valid relationships
+      operationId: createOrUpdateCloudInfrastructurePserversPserverLagInterfacesLagInterfaceLInterfacesLInterfaceL3InterfaceIpv4AddressListRelationshipListRelationship
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: hostname
+          in: path
+          description: Value from executing hostname on the compute node.
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name that identifies the link aggregate interface
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name given to the interface
+          required: true
+          type: string
+        - name: l3-interface-ipv4-address
+          in: path
+          description: IP address
+          required: true
+          type: string
+        - name: body
+          in: body
+          description: relationship object that needs to be created or updated
+          required: true
+          schema:
+            $ref: "#/definitions/relationship"
+    delete:
+      tags:
+        - CloudInfrastructure
+      summary: delete an existing relationship
+      description: delete an existing relationship
+      operationId: deleteCloudInfrastructurePserversPserverLagInterfacesLagInterfaceLInterfacesLInterfaceL3InterfaceIpv4AddressListRelationshipListRelationship
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: hostname
+          in: path
+          description: Value from executing hostname on the compute node.
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name that identifies the link aggregate interface
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name given to the interface
+          required: true
+          type: string
+        - name: l3-interface-ipv4-address
+          in: path
+          description: IP address
+          required: true
+          type: string
+  /cloud-infrastructure/pservers/pserver/{hostname}/lag-interfaces/lag-interface/{interface-name}/l-interfaces/l-interface/{interface-name}/l3-interface-ipv4-address-list/{l3-interface-ipv4-address}:
+    get:
+      tags:
+        - CloudInfrastructure
+      summary: returns l3-interface-ipv4-address-list
+      description: returns l3-interface-ipv4-address-list
+      operationId: getCloudInfrastructurePserversPserverLagInterfacesLagInterfaceLInterfacesLInterfaceL3InterfaceIpv4AddressList
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "200":
+          description: successful operation
+          schema:
+              $ref: "#/definitions/l3-interface-ipv4-address-list"
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: hostname
+          in: path
+          description: Value from executing hostname on the compute node.
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name that identifies the link aggregate interface
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name given to the interface
+          required: true
+          type: string
+        - name: l3-interface-ipv4-address
+          in: path
+          description: IP address
+          required: true
+          type: string
+        - name: inv-status
+          in: query
+          description: CANOPI's inventory status.  Only set with values exactly as defined by CANOPI.
+          required: false
+          type: string
+        - name: pserver-id
+          in: query
+          description: ID of Pserver
+          required: false
+          type: string
+        - name: in-maint
+          in: query
+          required: false
+          type: boolean
+        - name: pserver-name2
+          in: query
+          description: alternative pserver name
+          required: false
+          type: string
+        - name: interface-id
+          in: query
+          description: ID of interface
+          required: false
+          type: string
+        - name: interface-role
+          in: query
+          description: Role assigned to this Interface, should use values as defined in ECOMP Yang models.
+          required: false
+          type: string
+        - name: interface-id
+          in: query
+          description: ID of interface
+          required: false
+          type: string
+        - name: macaddr
+          in: query
+          description: MAC address for the interface
+          required: false
+          type: string
+        - name: network-name
+          in: query
+          description: Name of the network
+          required: false
+          type: string
+        - name: vlan-id-inner
+          in: query
+          description: Inner VLAN tag
+          required: false
+          type: integer
+          format: int64
+        - name: neutron-network-id
+          in: query
+          description: Neutron network id of the interface that address belongs to
+          required: false
+          type: string
+        - name: neutron-subnet-id
+          in: query
+          description: Neutron id of subnet that address belongs to
+          required: false
+          type: string
+    put:
+      tags:
+        - CloudInfrastructure
+      summary: create or update an existing l3-interface-ipv4-address-list
+      description: create or update an existing l3-interface-ipv4-address-list
+      operationId: createOrUpdateCloudInfrastructurePserversPserverLagInterfacesLagInterfaceLInterfacesLInterfaceL3InterfaceIpv4AddressList
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: hostname
+          in: path
+          description: Value from executing hostname on the compute node.
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name that identifies the link aggregate interface
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name given to the interface
+          required: true
+          type: string
+        - name: l3-interface-ipv4-address
+          in: path
+          description: IP address
+          required: true
+          type: string
+        - name: body
+          in: body
+          description: l3-interface-ipv4-address-list object that needs to be created or updated
+          required: true
+          schema:
+            $ref: "#/definitions/l3-interface-ipv4-address-list"
+    delete:
+      tags:
+        - CloudInfrastructure
+      summary: delete an existing l3-interface-ipv4-address-list
+      description: delete an existing l3-interface-ipv4-address-list
+      operationId: deleteCloudInfrastructurePserversPserverLagInterfacesLagInterfaceLInterfacesLInterfaceL3InterfaceIpv4AddressList
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: hostname
+          in: path
+          description: Value from executing hostname on the compute node.
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name that identifies the link aggregate interface
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name given to the interface
+          required: true
+          type: string
+        - name: l3-interface-ipv4-address
+          in: path
+          description: IP address
+          required: true
+          type: string
+        - name: resource-version
+          in: query
+          description: resource-version for concurrency
+          required: true
+          type: string
+  /cloud-infrastructure/pservers/pserver/{hostname}/lag-interfaces/lag-interface/{interface-name}/l-interfaces/l-interface/{interface-name}/l3-interface-ipv6-address-list/{l3-interface-ipv6-address}/relationship-list/relationship:
+    put:
+      tags:
+        - CloudInfrastructure
+      summary: see node definition for valid relationships
+      operationId: createOrUpdateCloudInfrastructurePserversPserverLagInterfacesLagInterfaceLInterfacesLInterfaceL3InterfaceIpv6AddressListRelationshipListRelationship
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: hostname
+          in: path
+          description: Value from executing hostname on the compute node.
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name that identifies the link aggregate interface
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name given to the interface
+          required: true
+          type: string
+        - name: l3-interface-ipv6-address
+          in: path
+          description: IP address
+          required: true
+          type: string
+        - name: body
+          in: body
+          description: relationship object that needs to be created or updated
+          required: true
+          schema:
+            $ref: "#/definitions/relationship"
+    delete:
+      tags:
+        - CloudInfrastructure
+      summary: delete an existing relationship
+      description: delete an existing relationship
+      operationId: deleteCloudInfrastructurePserversPserverLagInterfacesLagInterfaceLInterfacesLInterfaceL3InterfaceIpv6AddressListRelationshipListRelationship
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: hostname
+          in: path
+          description: Value from executing hostname on the compute node.
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name that identifies the link aggregate interface
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name given to the interface
+          required: true
+          type: string
+        - name: l3-interface-ipv6-address
+          in: path
+          description: IP address
+          required: true
+          type: string
+  /cloud-infrastructure/pservers/pserver/{hostname}/lag-interfaces/lag-interface/{interface-name}/l-interfaces/l-interface/{interface-name}/l3-interface-ipv6-address-list/{l3-interface-ipv6-address}:
+    get:
+      tags:
+        - CloudInfrastructure
+      summary: returns l3-interface-ipv6-address-list
+      description: returns l3-interface-ipv6-address-list
+      operationId: getCloudInfrastructurePserversPserverLagInterfacesLagInterfaceLInterfacesLInterfaceL3InterfaceIpv6AddressList
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "200":
+          description: successful operation
+          schema:
+              $ref: "#/definitions/l3-interface-ipv6-address-list"
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: hostname
+          in: path
+          description: Value from executing hostname on the compute node.
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name that identifies the link aggregate interface
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name given to the interface
+          required: true
+          type: string
+        - name: l3-interface-ipv6-address
+          in: path
+          description: IP address
+          required: true
+          type: string
+        - name: inv-status
+          in: query
+          description: CANOPI's inventory status.  Only set with values exactly as defined by CANOPI.
+          required: false
+          type: string
+        - name: pserver-id
+          in: query
+          description: ID of Pserver
+          required: false
+          type: string
+        - name: in-maint
+          in: query
+          required: false
+          type: boolean
+        - name: pserver-name2
+          in: query
+          description: alternative pserver name
+          required: false
+          type: string
+        - name: interface-id
+          in: query
+          description: ID of interface
+          required: false
+          type: string
+        - name: interface-role
+          in: query
+          description: Role assigned to this Interface, should use values as defined in ECOMP Yang models.
+          required: false
+          type: string
+        - name: interface-id
+          in: query
+          description: ID of interface
+          required: false
+          type: string
+        - name: macaddr
+          in: query
+          description: MAC address for the interface
+          required: false
+          type: string
+        - name: network-name
+          in: query
+          description: Name of the network
+          required: false
+          type: string
+        - name: vlan-id-inner
+          in: query
+          description: Inner VLAN tag
+          required: false
+          type: integer
+          format: int64
+        - name: neutron-network-id
+          in: query
+          description: Neutron network id of the interface that address belongs to
+          required: false
+          type: string
+        - name: neutron-subnet-id
+          in: query
+          description: Neutron id of subnet that address belongs to
+          required: false
+          type: string
+    put:
+      tags:
+        - CloudInfrastructure
+      summary: create or update an existing l3-interface-ipv6-address-list
+      description: create or update an existing l3-interface-ipv6-address-list
+      operationId: createOrUpdateCloudInfrastructurePserversPserverLagInterfacesLagInterfaceLInterfacesLInterfaceL3InterfaceIpv6AddressList
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: hostname
+          in: path
+          description: Value from executing hostname on the compute node.
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name that identifies the link aggregate interface
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name given to the interface
+          required: true
+          type: string
+        - name: l3-interface-ipv6-address
+          in: path
+          description: IP address
+          required: true
+          type: string
+        - name: body
+          in: body
+          description: l3-interface-ipv6-address-list object that needs to be created or updated
+          required: true
+          schema:
+            $ref: "#/definitions/l3-interface-ipv6-address-list"
+    delete:
+      tags:
+        - CloudInfrastructure
+      summary: delete an existing l3-interface-ipv6-address-list
+      description: delete an existing l3-interface-ipv6-address-list
+      operationId: deleteCloudInfrastructurePserversPserverLagInterfacesLagInterfaceLInterfacesLInterfaceL3InterfaceIpv6AddressList
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: hostname
+          in: path
+          description: Value from executing hostname on the compute node.
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name that identifies the link aggregate interface
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name given to the interface
+          required: true
+          type: string
+        - name: l3-interface-ipv6-address
+          in: path
+          description: IP address
+          required: true
+          type: string
+        - name: resource-version
+          in: query
+          description: resource-version for concurrency
+          required: true
+          type: string
+  /cloud-infrastructure/pservers/pserver/{hostname}/lag-interfaces/lag-interface/{interface-name}/l-interfaces/l-interface/{interface-name}:
+    get:
+      tags:
+        - CloudInfrastructure
+      summary: returns l-interface
+      description: returns l-interface
+      operationId: getCloudInfrastructurePserversPserverLagInterfacesLagInterfaceLInterfacesLInterface
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "200":
+          description: successful operation
+          schema:
+              $ref: "#/definitions/l-interface"
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: hostname
+          in: path
+          description: Value from executing hostname on the compute node.
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name that identifies the link aggregate interface
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name given to the interface
+          required: true
+          type: string
+        - name: inv-status
+          in: query
+          description: CANOPI's inventory status.  Only set with values exactly as defined by CANOPI.
+          required: false
+          type: string
+        - name: pserver-id
+          in: query
+          description: ID of Pserver
+          required: false
+          type: string
+        - name: in-maint
+          in: query
+          required: false
+          type: boolean
+        - name: pserver-name2
+          in: query
+          description: alternative pserver name
+          required: false
+          type: string
+        - name: interface-id
+          in: query
+          description: ID of interface
+          required: false
+          type: string
+        - name: interface-role
+          in: query
+          description: Role assigned to this Interface, should use values as defined in ECOMP Yang models.
+          required: false
+          type: string
+        - name: interface-id
+          in: query
+          description: ID of interface
+          required: false
+          type: string
+        - name: macaddr
+          in: query
+          description: MAC address for the interface
+          required: false
+          type: string
+        - name: network-name
+          in: query
+          description: Name of the network
+          required: false
+          type: string
+    put:
+      tags:
+        - CloudInfrastructure
+      summary: create or update an existing l-interface
+      description: create or update an existing l-interface
+      operationId: createOrUpdateCloudInfrastructurePserversPserverLagInterfacesLagInterfaceLInterfacesLInterface
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: hostname
+          in: path
+          description: Value from executing hostname on the compute node.
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name that identifies the link aggregate interface
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name given to the interface
+          required: true
+          type: string
+        - name: body
+          in: body
+          description: l-interface object that needs to be created or updated
+          required: true
+          schema:
+            $ref: "#/definitions/l-interface"
+    delete:
+      tags:
+        - CloudInfrastructure
+      summary: delete an existing l-interface
+      description: delete an existing l-interface
+      operationId: deleteCloudInfrastructurePserversPserverLagInterfacesLagInterfaceLInterfacesLInterface
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: hostname
+          in: path
+          description: Value from executing hostname on the compute node.
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name that identifies the link aggregate interface
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name given to the interface
+          required: true
+          type: string
+        - name: resource-version
+          in: query
+          description: resource-version for concurrency
+          required: true
+          type: string
+  /cloud-infrastructure/pservers/pserver/{hostname}/lag-interfaces/lag-interface/{interface-name}/l-interfaces:
+    get:
+      tags:
+        - CloudInfrastructure
+      summary: returns l-interfaces
+      description: returns l-interfaces
+      operationId: getCloudInfrastructurePserversPserverLagInterfacesLagInterfaceLInterfaces
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "200":
+          description: successful operation
+          schema:
+              $ref: "#/definitions/l-interfaces"
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: hostname
+          in: path
+          description: Value from executing hostname on the compute node.
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name that identifies the link aggregate interface
+          required: true
+          type: string
+        - name: inv-status
+          in: query
+          description: CANOPI's inventory status.  Only set with values exactly as defined by CANOPI.
+          required: false
+          type: string
+        - name: pserver-id
+          in: query
+          description: ID of Pserver
+          required: false
+          type: string
+        - name: in-maint
+          in: query
+          required: false
+          type: boolean
+        - name: pserver-name2
+          in: query
+          description: alternative pserver name
+          required: false
+          type: string
+        - name: interface-id
+          in: query
+          description: ID of interface
+          required: false
+          type: string
+        - name: interface-role
+          in: query
+          description: Role assigned to this Interface, should use values as defined in ECOMP Yang models.
+          required: false
+          type: string
+  /cloud-infrastructure/pservers/pserver/{hostname}/lag-interfaces/lag-interface/{interface-name}:
+    get:
+      tags:
+        - CloudInfrastructure
+      summary: returns lag-interface
+      description: returns lag-interface
+      operationId: getCloudInfrastructurePserversPserverLagInterfacesLagInterface
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "200":
+          description: successful operation
+          schema:
+              $ref: "#/definitions/lag-interface"
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: hostname
+          in: path
+          description: Value from executing hostname on the compute node.
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name that identifies the link aggregate interface
+          required: true
+          type: string
+        - name: inv-status
+          in: query
+          description: CANOPI's inventory status.  Only set with values exactly as defined by CANOPI.
+          required: false
+          type: string
+        - name: pserver-id
+          in: query
+          description: ID of Pserver
+          required: false
+          type: string
+        - name: in-maint
+          in: query
+          required: false
+          type: boolean
+        - name: pserver-name2
+          in: query
+          description: alternative pserver name
+          required: false
+          type: string
+        - name: interface-id
+          in: query
+          description: ID of interface
+          required: false
+          type: string
+        - name: interface-role
+          in: query
+          description: Role assigned to this Interface, should use values as defined in ECOMP Yang models.
+          required: false
+          type: string
+    put:
+      tags:
+        - CloudInfrastructure
+      summary: create or update an existing lag-interface
+      description: create or update an existing lag-interface
+      operationId: createOrUpdateCloudInfrastructurePserversPserverLagInterfacesLagInterface
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: hostname
+          in: path
+          description: Value from executing hostname on the compute node.
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name that identifies the link aggregate interface
+          required: true
+          type: string
+        - name: body
+          in: body
+          description: lag-interface object that needs to be created or updated
+          required: true
+          schema:
+            $ref: "#/definitions/lag-interface"
+    delete:
+      tags:
+        - CloudInfrastructure
+      summary: delete an existing lag-interface
+      description: delete an existing lag-interface
+      operationId: deleteCloudInfrastructurePserversPserverLagInterfacesLagInterface
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: hostname
+          in: path
+          description: Value from executing hostname on the compute node.
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name that identifies the link aggregate interface
+          required: true
+          type: string
+        - name: resource-version
+          in: query
+          description: resource-version for concurrency
+          required: true
+          type: string
+  /cloud-infrastructure/pservers/pserver/{hostname}/lag-interfaces:
+    get:
+      tags:
+        - CloudInfrastructure
+      summary: returns lag-interfaces
+      description: returns lag-interfaces
+      operationId: getCloudInfrastructurePserversPserverLagInterfaces
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "200":
+          description: successful operation
+          schema:
+              $ref: "#/definitions/lag-interfaces"
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: hostname
+          in: path
+          description: Value from executing hostname on the compute node.
+          required: true
+          type: string
+        - name: inv-status
+          in: query
+          description: CANOPI's inventory status.  Only set with values exactly as defined by CANOPI.
+          required: false
+          type: string
+        - name: pserver-id
+          in: query
+          description: ID of Pserver
+          required: false
+          type: string
+        - name: in-maint
+          in: query
+          required: false
+          type: boolean
+        - name: pserver-name2
+          in: query
+          description: alternative pserver name
+          required: false
+          type: string
+  /cloud-infrastructure/pservers/pserver/{hostname}:
+    get:
+      tags:
+        - CloudInfrastructure
+      summary: returns pserver
+      description: returns pserver
+      operationId: getCloudInfrastructurePserversPserver
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "200":
+          description: successful operation
+          schema:
+              $ref: "#/definitions/pserver"
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: hostname
+          in: path
+          description: Value from executing hostname on the compute node.
+          required: true
+          type: string
+        - name: inv-status
+          in: query
+          description: CANOPI's inventory status.  Only set with values exactly as defined by CANOPI.
+          required: false
+          type: string
+        - name: pserver-id
+          in: query
+          description: ID of Pserver
+          required: false
+          type: string
+        - name: in-maint
+          in: query
+          required: false
+          type: boolean
+        - name: pserver-name2
+          in: query
+          description: alternative pserver name
+          required: false
+          type: string
+    put:
+      tags:
+        - CloudInfrastructure
+      summary: create or update an existing pserver
+      description: create or update an existing pserver
+      operationId: createOrUpdateCloudInfrastructurePserversPserver
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: hostname
+          in: path
+          description: Value from executing hostname on the compute node.
+          required: true
+          type: string
+        - name: body
+          in: body
+          description: pserver object that needs to be created or updated
+          required: true
+          schema:
+            $ref: "#/definitions/pserver"
+    delete:
+      tags:
+        - CloudInfrastructure
+      summary: delete an existing pserver
+      description: delete an existing pserver
+      operationId: deleteCloudInfrastructurePserversPserver
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: hostname
+          in: path
+          description: Value from executing hostname on the compute node.
+          required: true
+          type: string
+        - name: resource-version
+          in: query
+          description: resource-version for concurrency
+          required: true
+          type: string
+  /cloud-infrastructure/pservers:
+    get:
+      tags:
+        - CloudInfrastructure
+      summary: returns pservers
+      description: returns pservers
+      operationId: getCloudInfrastructurePservers
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "200":
+          description: successful operation
+          schema:
+              $ref: "#/definitions/pservers"
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+  /cloud-infrastructure/virtual-data-centers/virtual-data-center/{vdc-id}/relationship-list/relationship:
+    put:
+      tags:
+        - CloudInfrastructure
+      summary: see node definition for valid relationships
+      operationId: createOrUpdateCloudInfrastructureVirtualDataCentersVirtualDataCenterRelationshipListRelationship
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: vdc-id
+          in: path
+          description: Unique ID of the vdc
+          required: true
+          type: string
+        - name: body
+          in: body
+          description: relationship object that needs to be created or updated
+          required: true
+          schema:
+            $ref: "#/definitions/relationship"
+    delete:
+      tags:
+        - CloudInfrastructure
+      summary: delete an existing relationship
+      description: delete an existing relationship
+      operationId: deleteCloudInfrastructureVirtualDataCentersVirtualDataCenterRelationshipListRelationship
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: vdc-id
+          in: path
+          description: Unique ID of the vdc
+          required: true
+          type: string
+  /cloud-infrastructure/virtual-data-centers/virtual-data-center/{vdc-id}:
+    get:
+      tags:
+        - CloudInfrastructure
+      summary: returns virtual-data-center
+      description: returns virtual-data-center
+      operationId: getCloudInfrastructureVirtualDataCentersVirtualDataCenter
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "200":
+          description: successful operation
+          schema:
+              $ref: "#/definitions/virtual-data-center"
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: vdc-id
+          in: path
+          description: Unique ID of the vdc
+          required: true
+          type: string
+        - name: vdc-name
+          in: query
+          description: Name of the virtual data center
+          required: false
+          type: string
+    put:
+      tags:
+        - CloudInfrastructure
+      summary: create or update an existing virtual-data-center
+      description: create or update an existing virtual-data-center
+      operationId: createOrUpdateCloudInfrastructureVirtualDataCentersVirtualDataCenter
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: vdc-id
+          in: path
+          description: Unique ID of the vdc
+          required: true
+          type: string
+        - name: body
+          in: body
+          description: virtual-data-center object that needs to be created or updated
+          required: true
+          schema:
+            $ref: "#/definitions/virtual-data-center"
+    delete:
+      tags:
+        - CloudInfrastructure
+      summary: delete an existing virtual-data-center
+      description: delete an existing virtual-data-center
+      operationId: deleteCloudInfrastructureVirtualDataCentersVirtualDataCenter
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: vdc-id
+          in: path
+          description: Unique ID of the vdc
+          required: true
+          type: string
+        - name: resource-version
+          in: query
+          description: resource-version for concurrency
+          required: true
+          type: string
+  /cloud-infrastructure/virtual-data-centers:
+    get:
+      tags:
+        - CloudInfrastructure
+      summary: returns virtual-data-centers
+      description: returns virtual-data-centers
+      operationId: getCloudInfrastructureVirtualDataCenters
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "200":
+          description: successful operation
+          schema:
+              $ref: "#/definitions/virtual-data-centers"
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+  /external-system/esr-ems-list/esr-ems/{ems-id}/esr-system-info-list/esr-system-info/{esr-system-info-id}/relationship-list/relationship:
+    put:
+      tags:
+        - ExternalSystem
+      summary: see node definition for valid relationships
+      operationId: createOrUpdateExternalSystemEsrEmsListEsrEmsEsrSystemInfoListEsrSystemInfoRelationshipListRelationship
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: ems-id
+          in: path
+          description: Unique ID of EMS.
+          required: true
+          type: string
+        - name: esr-system-info-id
+          in: path
+          description: Unique ID of esr system info.
+          required: true
+          type: string
+        - name: body
+          in: body
+          description: relationship object that needs to be created or updated
+          required: true
+          schema:
+            $ref: "#/definitions/relationship"
+    delete:
+      tags:
+        - ExternalSystem
+      summary: delete an existing relationship
+      description: delete an existing relationship
+      operationId: deleteExternalSystemEsrEmsListEsrEmsEsrSystemInfoListEsrSystemInfoRelationshipListRelationship
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: ems-id
+          in: path
+          description: Unique ID of EMS.
+          required: true
+          type: string
+        - name: esr-system-info-id
+          in: path
+          description: Unique ID of esr system info.
+          required: true
+          type: string
+  /external-system/esr-ems-list/esr-ems/{ems-id}/esr-system-info-list/esr-system-info/{esr-system-info-id}:
+    get:
+      tags:
+        - ExternalSystem
+      summary: returns esr-system-info
+      description: returns esr-system-info
+      operationId: getExternalSystemEsrEmsListEsrEmsEsrSystemInfoListEsrSystemInfo
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "200":
+          description: successful operation
+          schema:
+              $ref: "#/definitions/esr-system-info"
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: ems-id
+          in: path
+          description: Unique ID of EMS.
+          required: true
+          type: string
+        - name: esr-system-info-id
+          in: path
+          description: Unique ID of esr system info.
+          required: true
+          type: string
+        - name: system-name
+          in: query
+          description: name of external system.
+          required: false
+          type: string
+        - name: system-type
+          in: query
+          description: it could be vim/vnfm/thirdparty-sdnc/ems-resource/ems-performance/ems-alarm.
+          required: false
+          type: string
+    put:
+      tags:
+        - ExternalSystem
+      summary: create or update an existing esr-system-info
+      description: create or update an existing esr-system-info
+      operationId: createOrUpdateExternalSystemEsrEmsListEsrEmsEsrSystemInfoListEsrSystemInfo
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: ems-id
+          in: path
+          description: Unique ID of EMS.
+          required: true
+          type: string
+        - name: esr-system-info-id
+          in: path
+          description: Unique ID of esr system info.
+          required: true
+          type: string
+        - name: body
+          in: body
+          description: esr-system-info object that needs to be created or updated
+          required: true
+          schema:
+            $ref: "#/definitions/esr-system-info"
+    delete:
+      tags:
+        - ExternalSystem
+      summary: delete an existing esr-system-info
+      description: delete an existing esr-system-info
+      operationId: deleteExternalSystemEsrEmsListEsrEmsEsrSystemInfoListEsrSystemInfo
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: ems-id
+          in: path
+          description: Unique ID of EMS.
+          required: true
+          type: string
+        - name: esr-system-info-id
+          in: path
+          description: Unique ID of esr system info.
+          required: true
+          type: string
+        - name: resource-version
+          in: query
+          description: resource-version for concurrency
+          required: true
+          type: string
+  /external-system/esr-ems-list/esr-ems/{ems-id}/esr-system-info-list:
+    get:
+      tags:
+        - ExternalSystem
+      summary: returns esr-system-info-list
+      description: returns esr-system-info-list
+      operationId: getExternalSystemEsrEmsListEsrEmsEsrSystemInfoList
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "200":
+          description: successful operation
+          schema:
+              $ref: "#/definitions/esr-system-info-list"
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: ems-id
+          in: path
+          description: Unique ID of EMS.
+          required: true
+          type: string
+  /external-system/esr-ems-list/esr-ems/{ems-id}/relationship-list/relationship:
+    put:
+      tags:
+        - ExternalSystem
+      summary: see node definition for valid relationships
+      operationId: createOrUpdateExternalSystemEsrEmsListEsrEmsRelationshipListRelationship
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: ems-id
+          in: path
+          description: Unique ID of EMS.
+          required: true
+          type: string
+        - name: body
+          in: body
+          description: relationship object that needs to be created or updated
+          required: true
+          schema:
+            $ref: "#/definitions/relationship"
+    delete:
+      tags:
+        - ExternalSystem
+      summary: delete an existing relationship
+      description: delete an existing relationship
+      operationId: deleteExternalSystemEsrEmsListEsrEmsRelationshipListRelationship
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: ems-id
+          in: path
+          description: Unique ID of EMS.
+          required: true
+          type: string
+  /external-system/esr-ems-list/esr-ems/{ems-id}:
+    get:
+      tags:
+        - ExternalSystem
+      summary: returns esr-ems
+      description: returns esr-ems
+      operationId: getExternalSystemEsrEmsListEsrEms
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "200":
+          description: successful operation
+          schema:
+              $ref: "#/definitions/esr-ems"
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: ems-id
+          in: path
+          description: Unique ID of EMS.
+          required: true
+          type: string
+    put:
+      tags:
+        - ExternalSystem
+      summary: create or update an existing esr-ems
+      description: create or update an existing esr-ems
+      operationId: createOrUpdateExternalSystemEsrEmsListEsrEms
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: ems-id
+          in: path
+          description: Unique ID of EMS.
+          required: true
+          type: string
+        - name: body
+          in: body
+          description: esr-ems object that needs to be created or updated
+          required: true
+          schema:
+            $ref: "#/definitions/esr-ems"
+    delete:
+      tags:
+        - ExternalSystem
+      summary: delete an existing esr-ems
+      description: delete an existing esr-ems
+      operationId: deleteExternalSystemEsrEmsListEsrEms
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: ems-id
+          in: path
+          description: Unique ID of EMS.
+          required: true
+          type: string
+        - name: resource-version
+          in: query
+          description: resource-version for concurrency
+          required: true
+          type: string
+  /external-system/esr-ems-list:
+    get:
+      tags:
+        - ExternalSystem
+      summary: returns esr-ems-list
+      description: returns esr-ems-list
+      operationId: getExternalSystemEsrEmsList
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "200":
+          description: successful operation
+          schema:
+              $ref: "#/definitions/esr-ems-list"
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+  /external-system/esr-vnfm-list/esr-vnfm/{vnfm-id}/esr-system-info-list/esr-system-info/{esr-system-info-id}/relationship-list/relationship:
+    put:
+      tags:
+        - ExternalSystem
+      summary: see node definition for valid relationships
+      operationId: createOrUpdateExternalSystemEsrVnfmListEsrVnfmEsrSystemInfoListEsrSystemInfoRelationshipListRelationship
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: vnfm-id
+          in: path
+          description: Unique ID of VNFM.
+          required: true
+          type: string
+        - name: esr-system-info-id
+          in: path
+          description: Unique ID of esr system info.
+          required: true
+          type: string
+        - name: body
+          in: body
+          description: relationship object that needs to be created or updated
+          required: true
+          schema:
+            $ref: "#/definitions/relationship"
+    delete:
+      tags:
+        - ExternalSystem
+      summary: delete an existing relationship
+      description: delete an existing relationship
+      operationId: deleteExternalSystemEsrVnfmListEsrVnfmEsrSystemInfoListEsrSystemInfoRelationshipListRelationship
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: vnfm-id
+          in: path
+          description: Unique ID of VNFM.
+          required: true
+          type: string
+        - name: esr-system-info-id
+          in: path
+          description: Unique ID of esr system info.
+          required: true
+          type: string
+  /external-system/esr-vnfm-list/esr-vnfm/{vnfm-id}/esr-system-info-list/esr-system-info/{esr-system-info-id}:
+    get:
+      tags:
+        - ExternalSystem
+      summary: returns esr-system-info
+      description: returns esr-system-info
+      operationId: getExternalSystemEsrVnfmListEsrVnfmEsrSystemInfoListEsrSystemInfo
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "200":
+          description: successful operation
+          schema:
+              $ref: "#/definitions/esr-system-info"
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: vnfm-id
+          in: path
+          description: Unique ID of VNFM.
+          required: true
+          type: string
+        - name: esr-system-info-id
+          in: path
+          description: Unique ID of esr system info.
+          required: true
+          type: string
+        - name: system-name
+          in: query
+          description: name of external system.
+          required: false
+          type: string
+        - name: system-type
+          in: query
+          description: it could be vim/vnfm/thirdparty-sdnc/ems-resource/ems-performance/ems-alarm.
+          required: false
+          type: string
+    put:
+      tags:
+        - ExternalSystem
+      summary: create or update an existing esr-system-info
+      description: create or update an existing esr-system-info
+      operationId: createOrUpdateExternalSystemEsrVnfmListEsrVnfmEsrSystemInfoListEsrSystemInfo
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: vnfm-id
+          in: path
+          description: Unique ID of VNFM.
+          required: true
+          type: string
+        - name: esr-system-info-id
+          in: path
+          description: Unique ID of esr system info.
+          required: true
+          type: string
+        - name: body
+          in: body
+          description: esr-system-info object that needs to be created or updated
+          required: true
+          schema:
+            $ref: "#/definitions/esr-system-info"
+    delete:
+      tags:
+        - ExternalSystem
+      summary: delete an existing esr-system-info
+      description: delete an existing esr-system-info
+      operationId: deleteExternalSystemEsrVnfmListEsrVnfmEsrSystemInfoListEsrSystemInfo
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: vnfm-id
+          in: path
+          description: Unique ID of VNFM.
+          required: true
+          type: string
+        - name: esr-system-info-id
+          in: path
+          description: Unique ID of esr system info.
+          required: true
+          type: string
+        - name: resource-version
+          in: query
+          description: resource-version for concurrency
+          required: true
+          type: string
+  /external-system/esr-vnfm-list/esr-vnfm/{vnfm-id}/esr-system-info-list:
+    get:
+      tags:
+        - ExternalSystem
+      summary: returns esr-system-info-list
+      description: returns esr-system-info-list
+      operationId: getExternalSystemEsrVnfmListEsrVnfmEsrSystemInfoList
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "200":
+          description: successful operation
+          schema:
+              $ref: "#/definitions/esr-system-info-list"
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: vnfm-id
+          in: path
+          description: Unique ID of VNFM.
+          required: true
+          type: string
+  /external-system/esr-vnfm-list/esr-vnfm/{vnfm-id}/relationship-list/relationship:
+    put:
+      tags:
+        - ExternalSystem
+      summary: see node definition for valid relationships
+      operationId: createOrUpdateExternalSystemEsrVnfmListEsrVnfmRelationshipListRelationship
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: vnfm-id
+          in: path
+          description: Unique ID of VNFM.
+          required: true
+          type: string
+        - name: body
+          in: body
+          description: relationship object that needs to be created or updated
+          required: true
+          schema:
+            $ref: "#/definitions/relationship"
+    delete:
+      tags:
+        - ExternalSystem
+      summary: delete an existing relationship
+      description: delete an existing relationship
+      operationId: deleteExternalSystemEsrVnfmListEsrVnfmRelationshipListRelationship
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: vnfm-id
+          in: path
+          description: Unique ID of VNFM.
+          required: true
+          type: string
+  /external-system/esr-vnfm-list/esr-vnfm/{vnfm-id}:
+    get:
+      tags:
+        - ExternalSystem
+      summary: returns esr-vnfm
+      description: returns esr-vnfm
+      operationId: getExternalSystemEsrVnfmListEsrVnfm
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "200":
+          description: successful operation
+          schema:
+              $ref: "#/definitions/esr-vnfm"
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: vnfm-id
+          in: path
+          description: Unique ID of VNFM.
+          required: true
+          type: string
+    put:
+      tags:
+        - ExternalSystem
+      summary: create or update an existing esr-vnfm
+      description: create or update an existing esr-vnfm
+      operationId: createOrUpdateExternalSystemEsrVnfmListEsrVnfm
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: vnfm-id
+          in: path
+          description: Unique ID of VNFM.
+          required: true
+          type: string
+        - name: body
+          in: body
+          description: esr-vnfm object that needs to be created or updated
+          required: true
+          schema:
+            $ref: "#/definitions/esr-vnfm"
+    delete:
+      tags:
+        - ExternalSystem
+      summary: delete an existing esr-vnfm
+      description: delete an existing esr-vnfm
+      operationId: deleteExternalSystemEsrVnfmListEsrVnfm
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: vnfm-id
+          in: path
+          description: Unique ID of VNFM.
+          required: true
+          type: string
+        - name: resource-version
+          in: query
+          description: resource-version for concurrency
+          required: true
+          type: string
+  /external-system/esr-vnfm-list:
+    get:
+      tags:
+        - ExternalSystem
+      summary: returns esr-vnfm-list
+      description: returns esr-vnfm-list
+      operationId: getExternalSystemEsrVnfmList
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "200":
+          description: successful operation
+          schema:
+              $ref: "#/definitions/esr-vnfm-list"
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+  /external-system/esr-thirdparty-sdnc-list/esr-thirdparty-sdnc/{thirdparty-sdnc-id}/esr-system-info-list/esr-system-info/{esr-system-info-id}/relationship-list/relationship:
+    put:
+      tags:
+        - ExternalSystem
+      summary: see node definition for valid relationships
+      operationId: createOrUpdateExternalSystemEsrThirdpartySdncListEsrThirdpartySdncEsrSystemInfoListEsrSystemInfoRelationshipListRelationship
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: thirdparty-sdnc-id
+          in: path
+          description: Unique ID of SDNC.
+          required: true
+          type: string
+        - name: esr-system-info-id
+          in: path
+          description: Unique ID of esr system info.
+          required: true
+          type: string
+        - name: body
+          in: body
+          description: relationship object that needs to be created or updated
+          required: true
+          schema:
+            $ref: "#/definitions/relationship"
+    delete:
+      tags:
+        - ExternalSystem
+      summary: delete an existing relationship
+      description: delete an existing relationship
+      operationId: deleteExternalSystemEsrThirdpartySdncListEsrThirdpartySdncEsrSystemInfoListEsrSystemInfoRelationshipListRelationship
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: thirdparty-sdnc-id
+          in: path
+          description: Unique ID of SDNC.
+          required: true
+          type: string
+        - name: esr-system-info-id
+          in: path
+          description: Unique ID of esr system info.
+          required: true
+          type: string
+  /external-system/esr-thirdparty-sdnc-list/esr-thirdparty-sdnc/{thirdparty-sdnc-id}/esr-system-info-list/esr-system-info/{esr-system-info-id}:
+    get:
+      tags:
+        - ExternalSystem
+      summary: returns esr-system-info
+      description: returns esr-system-info
+      operationId: getExternalSystemEsrThirdpartySdncListEsrThirdpartySdncEsrSystemInfoListEsrSystemInfo
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "200":
+          description: successful operation
+          schema:
+              $ref: "#/definitions/esr-system-info"
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: thirdparty-sdnc-id
+          in: path
+          description: Unique ID of SDNC.
+          required: true
+          type: string
+        - name: esr-system-info-id
+          in: path
+          description: Unique ID of esr system info.
+          required: true
+          type: string
+        - name: system-name
+          in: query
+          description: name of external system.
+          required: false
+          type: string
+        - name: system-type
+          in: query
+          description: it could be vim/vnfm/thirdparty-sdnc/ems-resource/ems-performance/ems-alarm.
+          required: false
+          type: string
+    put:
+      tags:
+        - ExternalSystem
+      summary: create or update an existing esr-system-info
+      description: create or update an existing esr-system-info
+      operationId: createOrUpdateExternalSystemEsrThirdpartySdncListEsrThirdpartySdncEsrSystemInfoListEsrSystemInfo
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: thirdparty-sdnc-id
+          in: path
+          description: Unique ID of SDNC.
+          required: true
+          type: string
+        - name: esr-system-info-id
+          in: path
+          description: Unique ID of esr system info.
+          required: true
+          type: string
+        - name: body
+          in: body
+          description: esr-system-info object that needs to be created or updated
+          required: true
+          schema:
+            $ref: "#/definitions/esr-system-info"
+    delete:
+      tags:
+        - ExternalSystem
+      summary: delete an existing esr-system-info
+      description: delete an existing esr-system-info
+      operationId: deleteExternalSystemEsrThirdpartySdncListEsrThirdpartySdncEsrSystemInfoListEsrSystemInfo
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: thirdparty-sdnc-id
+          in: path
+          description: Unique ID of SDNC.
+          required: true
+          type: string
+        - name: esr-system-info-id
+          in: path
+          description: Unique ID of esr system info.
+          required: true
+          type: string
+        - name: resource-version
+          in: query
+          description: resource-version for concurrency
+          required: true
+          type: string
+  /external-system/esr-thirdparty-sdnc-list/esr-thirdparty-sdnc/{thirdparty-sdnc-id}/esr-system-info-list:
+    get:
+      tags:
+        - ExternalSystem
+      summary: returns esr-system-info-list
+      description: returns esr-system-info-list
+      operationId: getExternalSystemEsrThirdpartySdncListEsrThirdpartySdncEsrSystemInfoList
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "200":
+          description: successful operation
+          schema:
+              $ref: "#/definitions/esr-system-info-list"
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: thirdparty-sdnc-id
+          in: path
+          description: Unique ID of SDNC.
+          required: true
+          type: string
+  /external-system/esr-thirdparty-sdnc-list/esr-thirdparty-sdnc/{thirdparty-sdnc-id}/relationship-list/relationship:
+    put:
+      tags:
+        - ExternalSystem
+      summary: see node definition for valid relationships
+      operationId: createOrUpdateExternalSystemEsrThirdpartySdncListEsrThirdpartySdncRelationshipListRelationship
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: thirdparty-sdnc-id
+          in: path
+          description: Unique ID of SDNC.
+          required: true
+          type: string
+        - name: body
+          in: body
+          description: relationship object that needs to be created or updated
+          required: true
+          schema:
+            $ref: "#/definitions/relationship"
+    delete:
+      tags:
+        - ExternalSystem
+      summary: delete an existing relationship
+      description: delete an existing relationship
+      operationId: deleteExternalSystemEsrThirdpartySdncListEsrThirdpartySdncRelationshipListRelationship
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: thirdparty-sdnc-id
+          in: path
+          description: Unique ID of SDNC.
+          required: true
+          type: string
+  /external-system/esr-thirdparty-sdnc-list/esr-thirdparty-sdnc/{thirdparty-sdnc-id}:
+    get:
+      tags:
+        - ExternalSystem
+      summary: returns esr-thirdparty-sdnc
+      description: returns esr-thirdparty-sdnc
+      operationId: getExternalSystemEsrThirdpartySdncListEsrThirdpartySdnc
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "200":
+          description: successful operation
+          schema:
+              $ref: "#/definitions/esr-thirdparty-sdnc"
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: thirdparty-sdnc-id
+          in: path
+          description: Unique ID of SDNC.
+          required: true
+          type: string
+    put:
+      tags:
+        - ExternalSystem
+      summary: create or update an existing esr-thirdparty-sdnc
+      description: create or update an existing esr-thirdparty-sdnc
+      operationId: createOrUpdateExternalSystemEsrThirdpartySdncListEsrThirdpartySdnc
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: thirdparty-sdnc-id
+          in: path
+          description: Unique ID of SDNC.
+          required: true
+          type: string
+        - name: body
+          in: body
+          description: esr-thirdparty-sdnc object that needs to be created or updated
+          required: true
+          schema:
+            $ref: "#/definitions/esr-thirdparty-sdnc"
+    delete:
+      tags:
+        - ExternalSystem
+      summary: delete an existing esr-thirdparty-sdnc
+      description: delete an existing esr-thirdparty-sdnc
+      operationId: deleteExternalSystemEsrThirdpartySdncListEsrThirdpartySdnc
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: thirdparty-sdnc-id
+          in: path
+          description: Unique ID of SDNC.
+          required: true
+          type: string
+        - name: resource-version
+          in: query
+          description: resource-version for concurrency
+          required: true
+          type: string
+  /external-system/esr-thirdparty-sdnc-list:
+    get:
+      tags:
+        - ExternalSystem
+      summary: returns esr-thirdparty-sdnc-list
+      description: returns esr-thirdparty-sdnc-list
+      operationId: getExternalSystemEsrThirdpartySdncList
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "200":
+          description: successful operation
+          schema:
+              $ref: "#/definitions/esr-thirdparty-sdnc-list"
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+  /business/connectors/connector/{resource-instance-id}/relationship-list/relationship:
+    put:
+      tags:
+        - Business
+      summary: see node definition for valid relationships
+      operationId: createOrUpdateBusinessConnectorsConnectorRelationshipListRelationship
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: resource-instance-id
+          in: path
+          description: Unique id of resource instance.
+          required: true
+          type: string
+        - name: body
+          in: body
+          description: relationship object that needs to be created or updated
+          required: true
+          schema:
+            $ref: "#/definitions/relationship"
+    delete:
+      tags:
+        - Business
+      summary: delete an existing relationship
+      description: delete an existing relationship
+      operationId: deleteBusinessConnectorsConnectorRelationshipListRelationship
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: resource-instance-id
+          in: path
+          description: Unique id of resource instance.
+          required: true
+          type: string
+  /business/connectors/connector/{resource-instance-id}/metadata/metadatum/{metaname}:
+    get:
+      tags:
+        - Business
+      summary: returns metadatum
+      description: returns metadatum
+      operationId: getBusinessConnectorsConnectorMetadataMetadatum
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "200":
+          description: successful operation
+          schema:
+              $ref: "#/definitions/metadatum"
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: resource-instance-id
+          in: path
+          description: Unique id of resource instance.
+          required: true
+          type: string
+        - name: metaname
+          in: path
+          required: true
+          type: string
+        - name: model-invariant-id
+          in: query
+          description: the ASDC model id for this resource or service model.
+          required: false
+          type: string
+        - name: model-version-id
+          in: query
+          description: the ASDC model version for this resource or service model.
+          required: false
+          type: string
+        - name: widget-model-id
+          in: query
+          description: the ASDC data dictionary widget model. This maps directly to the A&AI widget.
+          required: false
+          type: string
+        - name: widget-model-version
+          in: query
+          description: the ASDC data dictionary version of the widget model.This maps directly to the A&AI version of the widget.
+          required: false
+          type: string
+    put:
+      tags:
+        - Business
+      summary: create or update an existing metadatum
+      description: create or update an existing metadatum
+      operationId: createOrUpdateBusinessConnectorsConnectorMetadataMetadatum
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: resource-instance-id
+          in: path
+          description: Unique id of resource instance.
+          required: true
+          type: string
+        - name: metaname
+          in: path
+          required: true
+          type: string
+        - name: body
+          in: body
+          description: metadatum object that needs to be created or updated
+          required: true
+          schema:
+            $ref: "#/definitions/metadatum"
+    delete:
+      tags:
+        - Business
+      summary: delete an existing metadatum
+      description: delete an existing metadatum
+      operationId: deleteBusinessConnectorsConnectorMetadataMetadatum
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: resource-instance-id
+          in: path
+          description: Unique id of resource instance.
+          required: true
+          type: string
+        - name: metaname
+          in: path
+          required: true
+          type: string
+        - name: resource-version
+          in: query
+          description: resource-version for concurrency
+          required: true
+          type: string
+  /business/connectors/connector/{resource-instance-id}/metadata:
+    get:
+      tags:
+        - Business
+      summary: returns metadata
+      description: returns metadata
+      operationId: getBusinessConnectorsConnectorMetadata
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "200":
+          description: successful operation
+          schema:
+              $ref: "#/definitions/metadata"
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: resource-instance-id
+          in: path
+          description: Unique id of resource instance.
+          required: true
+          type: string
+        - name: model-invariant-id
+          in: query
+          description: the ASDC model id for this resource or service model.
+          required: false
+          type: string
+        - name: model-version-id
+          in: query
+          description: the ASDC model version for this resource or service model.
+          required: false
+          type: string
+        - name: widget-model-id
+          in: query
+          description: the ASDC data dictionary widget model. This maps directly to the A&AI widget.
+          required: false
+          type: string
+        - name: widget-model-version
+          in: query
+          description: the ASDC data dictionary version of the widget model.This maps directly to the A&AI version of the widget.
+          required: false
+          type: string
+  /business/connectors/connector/{resource-instance-id}:
+    get:
+      tags:
+        - Business
+      summary: returns connector
+      description: returns connector
+      operationId: getBusinessConnectorsConnector
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "200":
+          description: successful operation
+          schema:
+              $ref: "#/definitions/connector"
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: resource-instance-id
+          in: path
+          description: Unique id of resource instance.
+          required: true
+          type: string
+        - name: model-invariant-id
+          in: query
+          description: the ASDC model id for this resource or service model.
+          required: false
+          type: string
+        - name: model-version-id
+          in: query
+          description: the ASDC model version for this resource or service model.
+          required: false
+          type: string
+        - name: widget-model-id
+          in: query
+          description: the ASDC data dictionary widget model. This maps directly to the A&AI widget.
+          required: false
+          type: string
+        - name: widget-model-version
+          in: query
+          description: the ASDC data dictionary version of the widget model.This maps directly to the A&AI version of the widget.
+          required: false
+          type: string
+    put:
+      tags:
+        - Business
+      summary: create or update an existing connector
+      description: create or update an existing connector
+      operationId: createOrUpdateBusinessConnectorsConnector
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: resource-instance-id
+          in: path
+          description: Unique id of resource instance.
+          required: true
+          type: string
+        - name: body
+          in: body
+          description: connector object that needs to be created or updated
+          required: true
+          schema:
+            $ref: "#/definitions/connector"
+    delete:
+      tags:
+        - Business
+      summary: delete an existing connector
+      description: delete an existing connector
+      operationId: deleteBusinessConnectorsConnector
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: resource-instance-id
+          in: path
+          description: Unique id of resource instance.
+          required: true
+          type: string
+        - name: resource-version
+          in: query
+          description: resource-version for concurrency
+          required: true
+          type: string
+  /business/connectors:
+    get:
+      tags:
+        - Business
+      summary: returns connectors
+      description: returns connectors
+      operationId: getBusinessConnectors
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "200":
+          description: successful operation
+          schema:
+              $ref: "#/definitions/connectors"
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+  /business/customers/customer/{global-customer-id}/service-subscriptions/service-subscription/{service-type}/service-instances/service-instance/{service-instance-id}/relationship-list/relationship:
+    put:
+      tags:
+        - Business
+      summary: see node definition for valid relationships
+      operationId: createOrUpdateBusinessCustomersCustomerServiceSubscriptionsServiceSubscriptionServiceInstancesServiceInstanceRelationshipListRelationship
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: global-customer-id
+          in: path
+          description: Global customer id used across ECOMP to uniquely identify customer.
+          required: true
+          type: string
+        - name: service-type
+          in: path
+          description: Value defined by orchestration to identify this service across ECOMP.
+          required: true
+          type: string
+        - name: service-instance-id
+          in: path
+          description: Uniquely identifies this instance of a service
+          required: true
+          type: string
+        - name: body
+          in: body
+          description: relationship object that needs to be created or updated
+          required: true
+          schema:
+            $ref: "#/definitions/relationship"
+    delete:
+      tags:
+        - Business
+      summary: delete an existing relationship
+      description: delete an existing relationship
+      operationId: deleteBusinessCustomersCustomerServiceSubscriptionsServiceSubscriptionServiceInstancesServiceInstanceRelationshipListRelationship
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: global-customer-id
+          in: path
+          description: Global customer id used across ECOMP to uniquely identify customer.
+          required: true
+          type: string
+        - name: service-type
+          in: path
+          description: Value defined by orchestration to identify this service across ECOMP.
+          required: true
+          type: string
+        - name: service-instance-id
+          in: path
+          description: Uniquely identifies this instance of a service
+          required: true
+          type: string
+  /business/customers/customer/{global-customer-id}/service-subscriptions/service-subscription/{service-type}/service-instances/service-instance/{service-instance-id}/metadata/metadatum/{metaname}:
+    get:
+      tags:
+        - Business
+      summary: returns metadatum
+      description: returns metadatum
+      operationId: getBusinessCustomersCustomerServiceSubscriptionsServiceSubscriptionServiceInstancesServiceInstanceMetadataMetadatum
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "200":
+          description: successful operation
+          schema:
+              $ref: "#/definitions/metadatum"
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: global-customer-id
+          in: path
+          description: Global customer id used across ECOMP to uniquely identify customer.
+          required: true
+          type: string
+        - name: service-type
+          in: path
+          description: Value defined by orchestration to identify this service across ECOMP.
+          required: true
+          type: string
+        - name: service-instance-id
+          in: path
+          description: Uniquely identifies this instance of a service
+          required: true
+          type: string
+        - name: metaname
+          in: path
+          required: true
+          type: string
+        - name: subscriber-name
+          in: query
+          description: Subscriber name, an alternate way to retrieve a customer.
+          required: false
+          type: string
+        - name: subscriber-type
+          in: query
+          description: Subscriber type, a way to provide VID with only the INFRA customers.
+          required: false
+          type: string
+        - name: service-instance-name
+          in: query
+          description: This field will store a name assigned to the service-instance.
+          required: false
+          type: string
+        - name: environment-context
+          in: query
+          description: This field will store the environment context assigned to the service-instance.
+          required: false
+          type: string
+        - name: workload-context
+          in: query
+          description: This field will store the workload context assigned to the service-instance.
+          required: false
+          type: string
+        - name: model-invariant-id
+          in: query
+          description: the ASDC model id for this resource or service model.
+          required: false
+          type: string
+        - name: model-version-id
+          in: query
+          description: the ASDC model version for this resource or service model.
+          required: false
+          type: string
+        - name: widget-model-id
+          in: query
+          description: the ASDC data dictionary widget model. This maps directly to the A&AI widget.
+          required: false
+          type: string
+        - name: widget-model-version
+          in: query
+          description: the ASDC data dictionary version of the widget model.This maps directly to the A&AI version of the widget.
+          required: false
+          type: string
+        - name: service-instance-location-id
+          in: query
+          description: An identifier that customers assign to the location where this service is being used.
+          required: false
+          type: string
+        - name: orchestration-status
+          in: query
+          description: Orchestration status of this service.
+          required: false
+          type: string
+    put:
+      tags:
+        - Business
+      summary: create or update an existing metadatum
+      description: create or update an existing metadatum
+      operationId: createOrUpdateBusinessCustomersCustomerServiceSubscriptionsServiceSubscriptionServiceInstancesServiceInstanceMetadataMetadatum
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: global-customer-id
+          in: path
+          description: Global customer id used across ECOMP to uniquely identify customer.
+          required: true
+          type: string
+        - name: service-type
+          in: path
+          description: Value defined by orchestration to identify this service across ECOMP.
+          required: true
+          type: string
+        - name: service-instance-id
+          in: path
+          description: Uniquely identifies this instance of a service
+          required: true
+          type: string
+        - name: metaname
+          in: path
+          required: true
+          type: string
+        - name: body
+          in: body
+          description: metadatum object that needs to be created or updated
+          required: true
+          schema:
+            $ref: "#/definitions/metadatum"
+    delete:
+      tags:
+        - Business
+      summary: delete an existing metadatum
+      description: delete an existing metadatum
+      operationId: deleteBusinessCustomersCustomerServiceSubscriptionsServiceSubscriptionServiceInstancesServiceInstanceMetadataMetadatum
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: global-customer-id
+          in: path
+          description: Global customer id used across ECOMP to uniquely identify customer.
+          required: true
+          type: string
+        - name: service-type
+          in: path
+          description: Value defined by orchestration to identify this service across ECOMP.
+          required: true
+          type: string
+        - name: service-instance-id
+          in: path
+          description: Uniquely identifies this instance of a service
+          required: true
+          type: string
+        - name: metaname
+          in: path
+          required: true
+          type: string
+        - name: resource-version
+          in: query
+          description: resource-version for concurrency
+          required: true
+          type: string
+  /business/customers/customer/{global-customer-id}/service-subscriptions/service-subscription/{service-type}/service-instances/service-instance/{service-instance-id}/metadata:
+    get:
+      tags:
+        - Business
+      summary: returns metadata
+      description: returns metadata
+      operationId: getBusinessCustomersCustomerServiceSubscriptionsServiceSubscriptionServiceInstancesServiceInstanceMetadata
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "200":
+          description: successful operation
+          schema:
+              $ref: "#/definitions/metadata"
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: global-customer-id
+          in: path
+          description: Global customer id used across ECOMP to uniquely identify customer.
+          required: true
+          type: string
+        - name: service-type
+          in: path
+          description: Value defined by orchestration to identify this service across ECOMP.
+          required: true
+          type: string
+        - name: service-instance-id
+          in: path
+          description: Uniquely identifies this instance of a service
+          required: true
+          type: string
+        - name: subscriber-name
+          in: query
+          description: Subscriber name, an alternate way to retrieve a customer.
+          required: false
+          type: string
+        - name: subscriber-type
+          in: query
+          description: Subscriber type, a way to provide VID with only the INFRA customers.
+          required: false
+          type: string
+        - name: service-instance-name
+          in: query
+          description: This field will store a name assigned to the service-instance.
+          required: false
+          type: string
+        - name: environment-context
+          in: query
+          description: This field will store the environment context assigned to the service-instance.
+          required: false
+          type: string
+        - name: workload-context
+          in: query
+          description: This field will store the workload context assigned to the service-instance.
+          required: false
+          type: string
+        - name: model-invariant-id
+          in: query
+          description: the ASDC model id for this resource or service model.
+          required: false
+          type: string
+        - name: model-version-id
+          in: query
+          description: the ASDC model version for this resource or service model.
+          required: false
+          type: string
+        - name: widget-model-id
+          in: query
+          description: the ASDC data dictionary widget model. This maps directly to the A&AI widget.
+          required: false
+          type: string
+        - name: widget-model-version
+          in: query
+          description: the ASDC data dictionary version of the widget model.This maps directly to the A&AI version of the widget.
+          required: false
+          type: string
+        - name: service-instance-location-id
+          in: query
+          description: An identifier that customers assign to the location where this service is being used.
+          required: false
+          type: string
+        - name: orchestration-status
+          in: query
+          description: Orchestration status of this service.
+          required: false
+          type: string
+  /business/customers/customer/{global-customer-id}/service-subscriptions/service-subscription/{service-type}/service-instances/service-instance/{service-instance-id}/allotted-resources/allotted-resource/{id}/tunnel-xconnects/tunnel-xconnect/{id}/relationship-list/relationship:
+    put:
+      tags:
+        - Business
+      summary: see node definition for valid relationships
+      operationId: createOrUpdateBusinessCustomersCustomerServiceSubscriptionsServiceSubscriptionServiceInstancesServiceInstanceAllottedResourcesAllottedResourceTunnelXconnectsTunnelXconnectRelationshipListRelationship
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: global-customer-id
+          in: path
+          description: Global customer id used across ECOMP to uniquely identify customer.
+          required: true
+          type: string
+        - name: service-type
+          in: path
+          description: Value defined by orchestration to identify this service across ECOMP.
+          required: true
+          type: string
+        - name: service-instance-id
+          in: path
+          description: Uniquely identifies this instance of a service
+          required: true
+          type: string
+        - name: id
+          in: path
+          description: Allotted Resource id UUID assigned to this instance.
+          required: true
+          type: string
+        - name: id
+          in: path
+          description: Allotted Resource id UUID assigned to this instance.
+          required: true
+          type: string
+        - name: body
+          in: body
+          description: relationship object that needs to be created or updated
+          required: true
+          schema:
+            $ref: "#/definitions/relationship"
+    delete:
+      tags:
+        - Business
+      summary: delete an existing relationship
+      description: delete an existing relationship
+      operationId: deleteBusinessCustomersCustomerServiceSubscriptionsServiceSubscriptionServiceInstancesServiceInstanceAllottedResourcesAllottedResourceTunnelXconnectsTunnelXconnectRelationshipListRelationship
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: global-customer-id
+          in: path
+          description: Global customer id used across ECOMP to uniquely identify customer.
+          required: true
+          type: string
+        - name: service-type
+          in: path
+          description: Value defined by orchestration to identify this service across ECOMP.
+          required: true
+          type: string
+        - name: service-instance-id
+          in: path
+          description: Uniquely identifies this instance of a service
+          required: true
+          type: string
+        - name: id
+          in: path
+          description: Allotted Resource id UUID assigned to this instance.
+          required: true
+          type: string
+        - name: id
+          in: path
+          description: Allotted Resource id UUID assigned to this instance.
+          required: true
+          type: string
+  /business/customers/customer/{global-customer-id}/service-subscriptions/service-subscription/{service-type}/service-instances/service-instance/{service-instance-id}/allotted-resources/allotted-resource/{id}/tunnel-xconnects/tunnel-xconnect/{id}:
+    get:
+      tags:
+        - Business
+      summary: returns tunnel-xconnect
+      description: returns tunnel-xconnect
+      operationId: getBusinessCustomersCustomerServiceSubscriptionsServiceSubscriptionServiceInstancesServiceInstanceAllottedResourcesAllottedResourceTunnelXconnectsTunnelXconnect
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "200":
+          description: successful operation
+          schema:
+              $ref: "#/definitions/tunnel-xconnect"
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: global-customer-id
+          in: path
+          description: Global customer id used across ECOMP to uniquely identify customer.
+          required: true
+          type: string
+        - name: service-type
+          in: path
+          description: Value defined by orchestration to identify this service across ECOMP.
+          required: true
+          type: string
+        - name: service-instance-id
+          in: path
+          description: Uniquely identifies this instance of a service
+          required: true
+          type: string
+        - name: id
+          in: path
+          description: Allotted Resource id UUID assigned to this instance.
+          required: true
+          type: string
+        - name: id
+          in: path
+          description: Allotted Resource id UUID assigned to this instance.
+          required: true
+          type: string
+        - name: subscriber-name
+          in: query
+          description: Subscriber name, an alternate way to retrieve a customer.
+          required: false
+          type: string
+        - name: subscriber-type
+          in: query
+          description: Subscriber type, a way to provide VID with only the INFRA customers.
+          required: false
+          type: string
+        - name: service-instance-name
+          in: query
+          description: This field will store a name assigned to the service-instance.
+          required: false
+          type: string
+        - name: environment-context
+          in: query
+          description: This field will store the environment context assigned to the service-instance.
+          required: false
+          type: string
+        - name: workload-context
+          in: query
+          description: This field will store the workload context assigned to the service-instance.
+          required: false
+          type: string
+        - name: model-invariant-id
+          in: query
+          description: the ASDC model id for this resource or service model.
+          required: false
+          type: string
+        - name: model-version-id
+          in: query
+          description: the ASDC model version for this resource or service model.
+          required: false
+          type: string
+        - name: widget-model-id
+          in: query
+          description: the ASDC data dictionary widget model. This maps directly to the A&AI widget.
+          required: false
+          type: string
+        - name: widget-model-version
+          in: query
+          description: the ASDC data dictionary version of the widget model.This maps directly to the A&AI version of the widget.
+          required: false
+          type: string
+        - name: service-instance-location-id
+          in: query
+          description: An identifier that customers assign to the location where this service is being used.
+          required: false
+          type: string
+        - name: orchestration-status
+          in: query
+          description: Orchestration status of this service.
+          required: false
+          type: string
+        - name: model-invariant-id
+          in: query
+          description: the ASDC model id for this resource or service model.
+          required: false
+          type: string
+        - name: model-version-id
+          in: query
+          description: the ASDC model version for this resource or service model.
+          required: false
+          type: string
+        - name: type
+          in: query
+          description: Generic description of the type of allotted resource.
+          required: false
+          type: string
+        - name: role
+          in: query
+          description: role in the network that this resource will be providing.
+          required: false
+          type: string
+    put:
+      tags:
+        - Business
+      summary: create or update an existing tunnel-xconnect
+      description: create or update an existing tunnel-xconnect
+      operationId: createOrUpdateBusinessCustomersCustomerServiceSubscriptionsServiceSubscriptionServiceInstancesServiceInstanceAllottedResourcesAllottedResourceTunnelXconnectsTunnelXconnect
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: global-customer-id
+          in: path
+          description: Global customer id used across ECOMP to uniquely identify customer.
+          required: true
+          type: string
+        - name: service-type
+          in: path
+          description: Value defined by orchestration to identify this service across ECOMP.
+          required: true
+          type: string
+        - name: service-instance-id
+          in: path
+          description: Uniquely identifies this instance of a service
+          required: true
+          type: string
+        - name: id
+          in: path
+          description: Allotted Resource id UUID assigned to this instance.
+          required: true
+          type: string
+        - name: id
+          in: path
+          description: Allotted Resource id UUID assigned to this instance.
+          required: true
+          type: string
+        - name: body
+          in: body
+          description: tunnel-xconnect object that needs to be created or updated
+          required: true
+          schema:
+            $ref: "#/definitions/tunnel-xconnect"
+    delete:
+      tags:
+        - Business
+      summary: delete an existing tunnel-xconnect
+      description: delete an existing tunnel-xconnect
+      operationId: deleteBusinessCustomersCustomerServiceSubscriptionsServiceSubscriptionServiceInstancesServiceInstanceAllottedResourcesAllottedResourceTunnelXconnectsTunnelXconnect
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: global-customer-id
+          in: path
+          description: Global customer id used across ECOMP to uniquely identify customer.
+          required: true
+          type: string
+        - name: service-type
+          in: path
+          description: Value defined by orchestration to identify this service across ECOMP.
+          required: true
+          type: string
+        - name: service-instance-id
+          in: path
+          description: Uniquely identifies this instance of a service
+          required: true
+          type: string
+        - name: id
+          in: path
+          description: Allotted Resource id UUID assigned to this instance.
+          required: true
+          type: string
+        - name: id
+          in: path
+          description: Allotted Resource id UUID assigned to this instance.
+          required: true
+          type: string
+        - name: resource-version
+          in: query
+          description: resource-version for concurrency
+          required: true
+          type: string
+  /business/customers/customer/{global-customer-id}/service-subscriptions/service-subscription/{service-type}/service-instances/service-instance/{service-instance-id}/allotted-resources/allotted-resource/{id}/tunnel-xconnects:
+    get:
+      tags:
+        - Business
+      summary: returns tunnel-xconnects
+      description: returns tunnel-xconnects
+      operationId: getBusinessCustomersCustomerServiceSubscriptionsServiceSubscriptionServiceInstancesServiceInstanceAllottedResourcesAllottedResourceTunnelXconnects
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "200":
+          description: successful operation
+          schema:
+              $ref: "#/definitions/tunnel-xconnects"
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: global-customer-id
+          in: path
+          description: Global customer id used across ECOMP to uniquely identify customer.
+          required: true
+          type: string
+        - name: service-type
+          in: path
+          description: Value defined by orchestration to identify this service across ECOMP.
+          required: true
+          type: string
+        - name: service-instance-id
+          in: path
+          description: Uniquely identifies this instance of a service
+          required: true
+          type: string
+        - name: id
+          in: path
+          description: Allotted Resource id UUID assigned to this instance.
+          required: true
+          type: string
+        - name: subscriber-name
+          in: query
+          description: Subscriber name, an alternate way to retrieve a customer.
+          required: false
+          type: string
+        - name: subscriber-type
+          in: query
+          description: Subscriber type, a way to provide VID with only the INFRA customers.
+          required: false
+          type: string
+        - name: service-instance-name
+          in: query
+          description: This field will store a name assigned to the service-instance.
+          required: false
+          type: string
+        - name: environment-context
+          in: query
+          description: This field will store the environment context assigned to the service-instance.
+          required: false
+          type: string
+        - name: workload-context
+          in: query
+          description: This field will store the workload context assigned to the service-instance.
+          required: false
+          type: string
+        - name: model-invariant-id
+          in: query
+          description: the ASDC model id for this resource or service model.
+          required: false
+          type: string
+        - name: model-version-id
+          in: query
+          description: the ASDC model version for this resource or service model.
+          required: false
+          type: string
+        - name: widget-model-id
+          in: query
+          description: the ASDC data dictionary widget model. This maps directly to the A&AI widget.
+          required: false
+          type: string
+        - name: widget-model-version
+          in: query
+          description: the ASDC data dictionary version of the widget model.This maps directly to the A&AI version of the widget.
+          required: false
+          type: string
+        - name: service-instance-location-id
+          in: query
+          description: An identifier that customers assign to the location where this service is being used.
+          required: false
+          type: string
+        - name: orchestration-status
+          in: query
+          description: Orchestration status of this service.
+          required: false
+          type: string
+        - name: model-invariant-id
+          in: query
+          description: the ASDC model id for this resource or service model.
+          required: false
+          type: string
+        - name: model-version-id
+          in: query
+          description: the ASDC model version for this resource or service model.
+          required: false
+          type: string
+        - name: type
+          in: query
+          description: Generic description of the type of allotted resource.
+          required: false
+          type: string
+        - name: role
+          in: query
+          description: role in the network that this resource will be providing.
+          required: false
+          type: string
+  /business/customers/customer/{global-customer-id}/service-subscriptions/service-subscription/{service-type}/service-instances/service-instance/{service-instance-id}/allotted-resources/allotted-resource/{id}/relationship-list/relationship:
+    put:
+      tags:
+        - Business
+      summary: see node definition for valid relationships
+      operationId: createOrUpdateBusinessCustomersCustomerServiceSubscriptionsServiceSubscriptionServiceInstancesServiceInstanceAllottedResourcesAllottedResourceRelationshipListRelationship
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: global-customer-id
+          in: path
+          description: Global customer id used across ECOMP to uniquely identify customer.
+          required: true
+          type: string
+        - name: service-type
+          in: path
+          description: Value defined by orchestration to identify this service across ECOMP.
+          required: true
+          type: string
+        - name: service-instance-id
+          in: path
+          description: Uniquely identifies this instance of a service
+          required: true
+          type: string
+        - name: id
+          in: path
+          description: Allotted Resource id UUID assigned to this instance.
+          required: true
+          type: string
+        - name: body
+          in: body
+          description: relationship object that needs to be created or updated
+          required: true
+          schema:
+            $ref: "#/definitions/relationship"
+    delete:
+      tags:
+        - Business
+      summary: delete an existing relationship
+      description: delete an existing relationship
+      operationId: deleteBusinessCustomersCustomerServiceSubscriptionsServiceSubscriptionServiceInstancesServiceInstanceAllottedResourcesAllottedResourceRelationshipListRelationship
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: global-customer-id
+          in: path
+          description: Global customer id used across ECOMP to uniquely identify customer.
+          required: true
+          type: string
+        - name: service-type
+          in: path
+          description: Value defined by orchestration to identify this service across ECOMP.
+          required: true
+          type: string
+        - name: service-instance-id
+          in: path
+          description: Uniquely identifies this instance of a service
+          required: true
+          type: string
+        - name: id
+          in: path
+          description: Allotted Resource id UUID assigned to this instance.
+          required: true
+          type: string
+  /business/customers/customer/{global-customer-id}/service-subscriptions/service-subscription/{service-type}/service-instances/service-instance/{service-instance-id}/allotted-resources/allotted-resource/{id}:
+    get:
+      tags:
+        - Business
+      summary: returns allotted-resource
+      description: returns allotted-resource
+      operationId: getBusinessCustomersCustomerServiceSubscriptionsServiceSubscriptionServiceInstancesServiceInstanceAllottedResourcesAllottedResource
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "200":
+          description: successful operation
+          schema:
+              $ref: "#/definitions/allotted-resource"
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: global-customer-id
+          in: path
+          description: Global customer id used across ECOMP to uniquely identify customer.
+          required: true
+          type: string
+        - name: service-type
+          in: path
+          description: Value defined by orchestration to identify this service across ECOMP.
+          required: true
+          type: string
+        - name: service-instance-id
+          in: path
+          description: Uniquely identifies this instance of a service
+          required: true
+          type: string
+        - name: id
+          in: path
+          description: Allotted Resource id UUID assigned to this instance.
+          required: true
+          type: string
+        - name: subscriber-name
+          in: query
+          description: Subscriber name, an alternate way to retrieve a customer.
+          required: false
+          type: string
+        - name: subscriber-type
+          in: query
+          description: Subscriber type, a way to provide VID with only the INFRA customers.
+          required: false
+          type: string
+        - name: service-instance-name
+          in: query
+          description: This field will store a name assigned to the service-instance.
+          required: false
+          type: string
+        - name: environment-context
+          in: query
+          description: This field will store the environment context assigned to the service-instance.
+          required: false
+          type: string
+        - name: workload-context
+          in: query
+          description: This field will store the workload context assigned to the service-instance.
+          required: false
+          type: string
+        - name: model-invariant-id
+          in: query
+          description: the ASDC model id for this resource or service model.
+          required: false
+          type: string
+        - name: model-version-id
+          in: query
+          description: the ASDC model version for this resource or service model.
+          required: false
+          type: string
+        - name: widget-model-id
+          in: query
+          description: the ASDC data dictionary widget model. This maps directly to the A&AI widget.
+          required: false
+          type: string
+        - name: widget-model-version
+          in: query
+          description: the ASDC data dictionary version of the widget model.This maps directly to the A&AI version of the widget.
+          required: false
+          type: string
+        - name: service-instance-location-id
+          in: query
+          description: An identifier that customers assign to the location where this service is being used.
+          required: false
+          type: string
+        - name: orchestration-status
+          in: query
+          description: Orchestration status of this service.
+          required: false
+          type: string
+        - name: model-invariant-id
+          in: query
+          description: the ASDC model id for this resource or service model.
+          required: false
+          type: string
+        - name: model-version-id
+          in: query
+          description: the ASDC model version for this resource or service model.
+          required: false
+          type: string
+        - name: type
+          in: query
+          description: Generic description of the type of allotted resource.
+          required: false
+          type: string
+        - name: role
+          in: query
+          description: role in the network that this resource will be providing.
+          required: false
+          type: string
+    put:
+      tags:
+        - Business
+      summary: create or update an existing allotted-resource
+      description: create or update an existing allotted-resource
+      operationId: createOrUpdateBusinessCustomersCustomerServiceSubscriptionsServiceSubscriptionServiceInstancesServiceInstanceAllottedResourcesAllottedResource
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: global-customer-id
+          in: path
+          description: Global customer id used across ECOMP to uniquely identify customer.
+          required: true
+          type: string
+        - name: service-type
+          in: path
+          description: Value defined by orchestration to identify this service across ECOMP.
+          required: true
+          type: string
+        - name: service-instance-id
+          in: path
+          description: Uniquely identifies this instance of a service
+          required: true
+          type: string
+        - name: id
+          in: path
+          description: Allotted Resource id UUID assigned to this instance.
+          required: true
+          type: string
+        - name: body
+          in: body
+          description: allotted-resource object that needs to be created or updated
+          required: true
+          schema:
+            $ref: "#/definitions/allotted-resource"
+    delete:
+      tags:
+        - Business
+      summary: delete an existing allotted-resource
+      description: delete an existing allotted-resource
+      operationId: deleteBusinessCustomersCustomerServiceSubscriptionsServiceSubscriptionServiceInstancesServiceInstanceAllottedResourcesAllottedResource
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: global-customer-id
+          in: path
+          description: Global customer id used across ECOMP to uniquely identify customer.
+          required: true
+          type: string
+        - name: service-type
+          in: path
+          description: Value defined by orchestration to identify this service across ECOMP.
+          required: true
+          type: string
+        - name: service-instance-id
+          in: path
+          description: Uniquely identifies this instance of a service
+          required: true
+          type: string
+        - name: id
+          in: path
+          description: Allotted Resource id UUID assigned to this instance.
+          required: true
+          type: string
+        - name: resource-version
+          in: query
+          description: resource-version for concurrency
+          required: true
+          type: string
+  /business/customers/customer/{global-customer-id}/service-subscriptions/service-subscription/{service-type}/service-instances/service-instance/{service-instance-id}/allotted-resources:
+    get:
+      tags:
+        - Business
+      summary: returns allotted-resources
+      description: returns allotted-resources
+      operationId: getBusinessCustomersCustomerServiceSubscriptionsServiceSubscriptionServiceInstancesServiceInstanceAllottedResources
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "200":
+          description: successful operation
+          schema:
+              $ref: "#/definitions/allotted-resources"
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: global-customer-id
+          in: path
+          description: Global customer id used across ECOMP to uniquely identify customer.
+          required: true
+          type: string
+        - name: service-type
+          in: path
+          description: Value defined by orchestration to identify this service across ECOMP.
+          required: true
+          type: string
+        - name: service-instance-id
+          in: path
+          description: Uniquely identifies this instance of a service
+          required: true
+          type: string
+        - name: subscriber-name
+          in: query
+          description: Subscriber name, an alternate way to retrieve a customer.
+          required: false
+          type: string
+        - name: subscriber-type
+          in: query
+          description: Subscriber type, a way to provide VID with only the INFRA customers.
+          required: false
+          type: string
+        - name: service-instance-name
+          in: query
+          description: This field will store a name assigned to the service-instance.
+          required: false
+          type: string
+        - name: environment-context
+          in: query
+          description: This field will store the environment context assigned to the service-instance.
+          required: false
+          type: string
+        - name: workload-context
+          in: query
+          description: This field will store the workload context assigned to the service-instance.
+          required: false
+          type: string
+        - name: model-invariant-id
+          in: query
+          description: the ASDC model id for this resource or service model.
+          required: false
+          type: string
+        - name: model-version-id
+          in: query
+          description: the ASDC model version for this resource or service model.
+          required: false
+          type: string
+        - name: widget-model-id
+          in: query
+          description: the ASDC data dictionary widget model. This maps directly to the A&AI widget.
+          required: false
+          type: string
+        - name: widget-model-version
+          in: query
+          description: the ASDC data dictionary version of the widget model.This maps directly to the A&AI version of the widget.
+          required: false
+          type: string
+        - name: service-instance-location-id
+          in: query
+          description: An identifier that customers assign to the location where this service is being used.
+          required: false
+          type: string
+        - name: orchestration-status
+          in: query
+          description: Orchestration status of this service.
+          required: false
+          type: string
+  /business/customers/customer/{global-customer-id}/service-subscriptions/service-subscription/{service-type}/service-instances/service-instance/{service-instance-id}:
+    get:
+      tags:
+        - Business
+      summary: returns service-instance
+      description: returns service-instance
+      operationId: getBusinessCustomersCustomerServiceSubscriptionsServiceSubscriptionServiceInstancesServiceInstance
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "200":
+          description: successful operation
+          schema:
+              $ref: "#/definitions/service-instance"
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: global-customer-id
+          in: path
+          description: Global customer id used across ECOMP to uniquely identify customer.
+          required: true
+          type: string
+        - name: service-type
+          in: path
+          description: Value defined by orchestration to identify this service across ECOMP.
+          required: true
+          type: string
+        - name: service-instance-id
+          in: path
+          description: Uniquely identifies this instance of a service
+          required: true
+          type: string
+        - name: subscriber-name
+          in: query
+          description: Subscriber name, an alternate way to retrieve a customer.
+          required: false
+          type: string
+        - name: subscriber-type
+          in: query
+          description: Subscriber type, a way to provide VID with only the INFRA customers.
+          required: false
+          type: string
+        - name: service-instance-name
+          in: query
+          description: This field will store a name assigned to the service-instance.
+          required: false
+          type: string
+        - name: environment-context
+          in: query
+          description: This field will store the environment context assigned to the service-instance.
+          required: false
+          type: string
+        - name: workload-context
+          in: query
+          description: This field will store the workload context assigned to the service-instance.
+          required: false
+          type: string
+        - name: model-invariant-id
+          in: query
+          description: the ASDC model id for this resource or service model.
+          required: false
+          type: string
+        - name: model-version-id
+          in: query
+          description: the ASDC model version for this resource or service model.
+          required: false
+          type: string
+        - name: widget-model-id
+          in: query
+          description: the ASDC data dictionary widget model. This maps directly to the A&AI widget.
+          required: false
+          type: string
+        - name: widget-model-version
+          in: query
+          description: the ASDC data dictionary version of the widget model.This maps directly to the A&AI version of the widget.
+          required: false
+          type: string
+        - name: service-instance-location-id
+          in: query
+          description: An identifier that customers assign to the location where this service is being used.
+          required: false
+          type: string
+        - name: orchestration-status
+          in: query
+          description: Orchestration status of this service.
+          required: false
+          type: string
+    put:
+      tags:
+        - Business
+      summary: create or update an existing service-instance
+      description: create or update an existing service-instance
+      operationId: createOrUpdateBusinessCustomersCustomerServiceSubscriptionsServiceSubscriptionServiceInstancesServiceInstance
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: global-customer-id
+          in: path
+          description: Global customer id used across ECOMP to uniquely identify customer.
+          required: true
+          type: string
+        - name: service-type
+          in: path
+          description: Value defined by orchestration to identify this service across ECOMP.
+          required: true
+          type: string
+        - name: service-instance-id
+          in: path
+          description: Uniquely identifies this instance of a service
+          required: true
+          type: string
+        - name: body
+          in: body
+          description: service-instance object that needs to be created or updated
+          required: true
+          schema:
+            $ref: "#/definitions/service-instance"
+    delete:
+      tags:
+        - Business
+      summary: delete an existing service-instance
+      description: delete an existing service-instance
+      operationId: deleteBusinessCustomersCustomerServiceSubscriptionsServiceSubscriptionServiceInstancesServiceInstance
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: global-customer-id
+          in: path
+          description: Global customer id used across ECOMP to uniquely identify customer.
+          required: true
+          type: string
+        - name: service-type
+          in: path
+          description: Value defined by orchestration to identify this service across ECOMP.
+          required: true
+          type: string
+        - name: service-instance-id
+          in: path
+          description: Uniquely identifies this instance of a service
+          required: true
+          type: string
+        - name: resource-version
+          in: query
+          description: resource-version for concurrency
+          required: true
+          type: string
+  /business/customers/customer/{global-customer-id}/service-subscriptions/service-subscription/{service-type}/service-instances:
+    get:
+      tags:
+        - Business
+      summary: returns service-instances
+      description: returns service-instances
+      operationId: getBusinessCustomersCustomerServiceSubscriptionsServiceSubscriptionServiceInstances
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "200":
+          description: successful operation
+          schema:
+              $ref: "#/definitions/service-instances"
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: global-customer-id
+          in: path
+          description: Global customer id used across ECOMP to uniquely identify customer.
+          required: true
+          type: string
+        - name: service-type
+          in: path
+          description: Value defined by orchestration to identify this service across ECOMP.
+          required: true
+          type: string
+        - name: subscriber-name
+          in: query
+          description: Subscriber name, an alternate way to retrieve a customer.
+          required: false
+          type: string
+        - name: subscriber-type
+          in: query
+          description: Subscriber type, a way to provide VID with only the INFRA customers.
+          required: false
+          type: string
+  /business/customers/customer/{global-customer-id}/service-subscriptions/service-subscription/{service-type}/relationship-list/relationship:
+    put:
+      tags:
+        - Business
+      summary: see node definition for valid relationships
+      operationId: createOrUpdateBusinessCustomersCustomerServiceSubscriptionsServiceSubscriptionRelationshipListRelationship
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: global-customer-id
+          in: path
+          description: Global customer id used across ECOMP to uniquely identify customer.
+          required: true
+          type: string
+        - name: service-type
+          in: path
+          description: Value defined by orchestration to identify this service across ECOMP.
+          required: true
+          type: string
+        - name: body
+          in: body
+          description: relationship object that needs to be created or updated
+          required: true
+          schema:
+            $ref: "#/definitions/relationship"
+    delete:
+      tags:
+        - Business
+      summary: delete an existing relationship
+      description: delete an existing relationship
+      operationId: deleteBusinessCustomersCustomerServiceSubscriptionsServiceSubscriptionRelationshipListRelationship
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: global-customer-id
+          in: path
+          description: Global customer id used across ECOMP to uniquely identify customer.
+          required: true
+          type: string
+        - name: service-type
+          in: path
+          description: Value defined by orchestration to identify this service across ECOMP.
+          required: true
+          type: string
+  /business/customers/customer/{global-customer-id}/service-subscriptions/service-subscription/{service-type}:
+    get:
+      tags:
+        - Business
+      summary: returns service-subscription
+      description: returns service-subscription
+      operationId: getBusinessCustomersCustomerServiceSubscriptionsServiceSubscription
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "200":
+          description: successful operation
+          schema:
+              $ref: "#/definitions/service-subscription"
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: global-customer-id
+          in: path
+          description: Global customer id used across ECOMP to uniquely identify customer.
+          required: true
+          type: string
+        - name: service-type
+          in: path
+          description: Value defined by orchestration to identify this service across ECOMP.
+          required: true
+          type: string
+        - name: subscriber-name
+          in: query
+          description: Subscriber name, an alternate way to retrieve a customer.
+          required: false
+          type: string
+        - name: subscriber-type
+          in: query
+          description: Subscriber type, a way to provide VID with only the INFRA customers.
+          required: false
+          type: string
+    put:
+      tags:
+        - Business
+      summary: create or update an existing service-subscription
+      description: create or update an existing service-subscription
+      operationId: createOrUpdateBusinessCustomersCustomerServiceSubscriptionsServiceSubscription
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: global-customer-id
+          in: path
+          description: Global customer id used across ECOMP to uniquely identify customer.
+          required: true
+          type: string
+        - name: service-type
+          in: path
+          description: Value defined by orchestration to identify this service across ECOMP.
+          required: true
+          type: string
+        - name: body
+          in: body
+          description: service-subscription object that needs to be created or updated
+          required: true
+          schema:
+            $ref: "#/definitions/service-subscription"
+    delete:
+      tags:
+        - Business
+      summary: delete an existing service-subscription
+      description: delete an existing service-subscription
+      operationId: deleteBusinessCustomersCustomerServiceSubscriptionsServiceSubscription
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: global-customer-id
+          in: path
+          description: Global customer id used across ECOMP to uniquely identify customer.
+          required: true
+          type: string
+        - name: service-type
+          in: path
+          description: Value defined by orchestration to identify this service across ECOMP.
+          required: true
+          type: string
+        - name: resource-version
+          in: query
+          description: resource-version for concurrency
+          required: true
+          type: string
+  /business/customers/customer/{global-customer-id}/service-subscriptions:
+    get:
+      tags:
+        - Business
+      summary: returns service-subscriptions
+      description: returns service-subscriptions
+      operationId: getBusinessCustomersCustomerServiceSubscriptions
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "200":
+          description: successful operation
+          schema:
+              $ref: "#/definitions/service-subscriptions"
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: global-customer-id
+          in: path
+          description: Global customer id used across ECOMP to uniquely identify customer.
+          required: true
+          type: string
+        - name: subscriber-name
+          in: query
+          description: Subscriber name, an alternate way to retrieve a customer.
+          required: false
+          type: string
+        - name: subscriber-type
+          in: query
+          description: Subscriber type, a way to provide VID with only the INFRA customers.
+          required: false
+          type: string
+  /business/customers/customer/{global-customer-id}/relationship-list/relationship:
+    put:
+      tags:
+        - Business
+      summary: see node definition for valid relationships
+      operationId: createOrUpdateBusinessCustomersCustomerRelationshipListRelationship
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: global-customer-id
+          in: path
+          description: Global customer id used across ECOMP to uniquely identify customer.
+          required: true
+          type: string
+        - name: body
+          in: body
+          description: relationship object that needs to be created or updated
+          required: true
+          schema:
+            $ref: "#/definitions/relationship"
+    delete:
+      tags:
+        - Business
+      summary: delete an existing relationship
+      description: delete an existing relationship
+      operationId: deleteBusinessCustomersCustomerRelationshipListRelationship
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: global-customer-id
+          in: path
+          description: Global customer id used across ECOMP to uniquely identify customer.
+          required: true
+          type: string
+  /business/customers/customer/{global-customer-id}:
+    get:
+      tags:
+        - Business
+      summary: returns customer
+      description: returns customer
+      operationId: getBusinessCustomersCustomer
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "200":
+          description: successful operation
+          schema:
+              $ref: "#/definitions/customer"
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: global-customer-id
+          in: path
+          description: Global customer id used across ECOMP to uniquely identify customer.
+          required: true
+          type: string
+        - name: subscriber-name
+          in: query
+          description: Subscriber name, an alternate way to retrieve a customer.
+          required: false
+          type: string
+        - name: subscriber-type
+          in: query
+          description: Subscriber type, a way to provide VID with only the INFRA customers.
+          required: false
+          type: string
+    put:
+      tags:
+        - Business
+      summary: create or update an existing customer
+      description: create or update an existing customer
+      operationId: createOrUpdateBusinessCustomersCustomer
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: global-customer-id
+          in: path
+          description: Global customer id used across ECOMP to uniquely identify customer.
+          required: true
+          type: string
+        - name: body
+          in: body
+          description: customer object that needs to be created or updated
+          required: true
+          schema:
+            $ref: "#/definitions/customer"
+    delete:
+      tags:
+        - Business
+      summary: delete an existing customer
+      description: delete an existing customer
+      operationId: deleteBusinessCustomersCustomer
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: global-customer-id
+          in: path
+          description: Global customer id used across ECOMP to uniquely identify customer.
+          required: true
+          type: string
+        - name: resource-version
+          in: query
+          description: resource-version for concurrency
+          required: true
+          type: string
+  /business/customers:
+    get:
+      tags:
+        - Business
+      summary: returns customers
+      description: returns customers
+      operationId: getBusinessCustomers
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "200":
+          description: successful operation
+          schema:
+              $ref: "#/definitions/customers"
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+  /business/lines-of-business/line-of-business/{line-of-business-name}/relationship-list/relationship:
+    put:
+      tags:
+        - Business
+      summary: see node definition for valid relationships
+      operationId: createOrUpdateBusinessLinesOfBusinessLineOfBusinessRelationshipListRelationship
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: line-of-business-name
+          in: path
+          description: Name of the line-of-business (product)
+          required: true
+          type: string
+        - name: body
+          in: body
+          description: relationship object that needs to be created or updated
+          required: true
+          schema:
+            $ref: "#/definitions/relationship"
+    delete:
+      tags:
+        - Business
+      summary: delete an existing relationship
+      description: delete an existing relationship
+      operationId: deleteBusinessLinesOfBusinessLineOfBusinessRelationshipListRelationship
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: line-of-business-name
+          in: path
+          description: Name of the line-of-business (product)
+          required: true
+          type: string
+  /business/lines-of-business/line-of-business/{line-of-business-name}:
+    get:
+      tags:
+        - Business
+      summary: returns line-of-business
+      description: returns line-of-business
+      operationId: getBusinessLinesOfBusinessLineOfBusiness
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "200":
+          description: successful operation
+          schema:
+              $ref: "#/definitions/line-of-business"
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: line-of-business-name
+          in: path
+          description: Name of the line-of-business (product)
+          required: true
+          type: string
+    put:
+      tags:
+        - Business
+      summary: create or update an existing line-of-business
+      description: create or update an existing line-of-business
+      operationId: createOrUpdateBusinessLinesOfBusinessLineOfBusiness
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: line-of-business-name
+          in: path
+          description: Name of the line-of-business (product)
+          required: true
+          type: string
+        - name: body
+          in: body
+          description: line-of-business object that needs to be created or updated
+          required: true
+          schema:
+            $ref: "#/definitions/line-of-business"
+    delete:
+      tags:
+        - Business
+      summary: delete an existing line-of-business
+      description: delete an existing line-of-business
+      operationId: deleteBusinessLinesOfBusinessLineOfBusiness
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: line-of-business-name
+          in: path
+          description: Name of the line-of-business (product)
+          required: true
+          type: string
+        - name: resource-version
+          in: query
+          description: resource-version for concurrency
+          required: true
+          type: string
+  /business/lines-of-business:
+    get:
+      tags:
+        - Business
+      summary: returns lines-of-business
+      description: returns lines-of-business
+      operationId: getBusinessLinesOfBusiness
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "200":
+          description: successful operation
+          schema:
+              $ref: "#/definitions/lines-of-business"
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+  /business/owning-entities/owning-entity/{owning-entity-id}/relationship-list/relationship:
+    put:
+      tags:
+        - Business
+      summary: see node definition for valid relationships
+      operationId: createOrUpdateBusinessOwningEntitiesOwningEntityRelationshipListRelationship
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: owning-entity-id
+          in: path
+          description: UUID of an owning entity
+          required: true
+          type: string
+        - name: body
+          in: body
+          description: relationship object that needs to be created or updated
+          required: true
+          schema:
+            $ref: "#/definitions/relationship"
+    delete:
+      tags:
+        - Business
+      summary: delete an existing relationship
+      description: delete an existing relationship
+      operationId: deleteBusinessOwningEntitiesOwningEntityRelationshipListRelationship
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: owning-entity-id
+          in: path
+          description: UUID of an owning entity
+          required: true
+          type: string
+  /business/owning-entities/owning-entity/{owning-entity-id}:
+    get:
+      tags:
+        - Business
+      summary: returns owning-entity
+      description: returns owning-entity
+      operationId: getBusinessOwningEntitiesOwningEntity
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "200":
+          description: successful operation
+          schema:
+              $ref: "#/definitions/owning-entity"
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: owning-entity-id
+          in: path
+          description: UUID of an owning entity
+          required: true
+          type: string
+    put:
+      tags:
+        - Business
+      summary: create or update an existing owning-entity
+      description: create or update an existing owning-entity
+      operationId: createOrUpdateBusinessOwningEntitiesOwningEntity
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: owning-entity-id
+          in: path
+          description: UUID of an owning entity
+          required: true
+          type: string
+        - name: body
+          in: body
+          description: owning-entity object that needs to be created or updated
+          required: true
+          schema:
+            $ref: "#/definitions/owning-entity"
+    delete:
+      tags:
+        - Business
+      summary: delete an existing owning-entity
+      description: delete an existing owning-entity
+      operationId: deleteBusinessOwningEntitiesOwningEntity
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: owning-entity-id
+          in: path
+          description: UUID of an owning entity
+          required: true
+          type: string
+        - name: resource-version
+          in: query
+          description: resource-version for concurrency
+          required: true
+          type: string
+  /business/owning-entities:
+    get:
+      tags:
+        - Business
+      summary: returns owning-entities
+      description: returns owning-entities
+      operationId: getBusinessOwningEntities
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "200":
+          description: successful operation
+          schema:
+              $ref: "#/definitions/owning-entities"
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+  /business/platforms/platform/{platform-name}/relationship-list/relationship:
+    put:
+      tags:
+        - Business
+      summary: see node definition for valid relationships
+      operationId: createOrUpdateBusinessPlatformsPlatformRelationshipListRelationship
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: platform-name
+          in: path
+          description: Name of the platform
+          required: true
+          type: string
+        - name: body
+          in: body
+          description: relationship object that needs to be created or updated
+          required: true
+          schema:
+            $ref: "#/definitions/relationship"
+    delete:
+      tags:
+        - Business
+      summary: delete an existing relationship
+      description: delete an existing relationship
+      operationId: deleteBusinessPlatformsPlatformRelationshipListRelationship
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: platform-name
+          in: path
+          description: Name of the platform
+          required: true
+          type: string
+  /business/platforms/platform/{platform-name}:
+    get:
+      tags:
+        - Business
+      summary: returns platform
+      description: returns platform
+      operationId: getBusinessPlatformsPlatform
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "200":
+          description: successful operation
+          schema:
+              $ref: "#/definitions/platform"
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: platform-name
+          in: path
+          description: Name of the platform
+          required: true
+          type: string
+    put:
+      tags:
+        - Business
+      summary: create or update an existing platform
+      description: create or update an existing platform
+      operationId: createOrUpdateBusinessPlatformsPlatform
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: platform-name
+          in: path
+          description: Name of the platform
+          required: true
+          type: string
+        - name: body
+          in: body
+          description: platform object that needs to be created or updated
+          required: true
+          schema:
+            $ref: "#/definitions/platform"
+    delete:
+      tags:
+        - Business
+      summary: delete an existing platform
+      description: delete an existing platform
+      operationId: deleteBusinessPlatformsPlatform
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: platform-name
+          in: path
+          description: Name of the platform
+          required: true
+          type: string
+        - name: resource-version
+          in: query
+          description: resource-version for concurrency
+          required: true
+          type: string
+  /business/platforms:
+    get:
+      tags:
+        - Business
+      summary: returns platforms
+      description: returns platforms
+      operationId: getBusinessPlatforms
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "200":
+          description: successful operation
+          schema:
+              $ref: "#/definitions/platforms"
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+  /business/projects/project/{project-name}/relationship-list/relationship:
+    put:
+      tags:
+        - Business
+      summary: see node definition for valid relationships
+      operationId: createOrUpdateBusinessProjectsProjectRelationshipListRelationship
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: project-name
+          in: path
+          description: Name of the project deploying a service
+          required: true
+          type: string
+        - name: body
+          in: body
+          description: relationship object that needs to be created or updated
+          required: true
+          schema:
+            $ref: "#/definitions/relationship"
+    delete:
+      tags:
+        - Business
+      summary: delete an existing relationship
+      description: delete an existing relationship
+      operationId: deleteBusinessProjectsProjectRelationshipListRelationship
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: project-name
+          in: path
+          description: Name of the project deploying a service
+          required: true
+          type: string
+  /business/projects/project/{project-name}:
+    get:
+      tags:
+        - Business
+      summary: returns project
+      description: returns project
+      operationId: getBusinessProjectsProject
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "200":
+          description: successful operation
+          schema:
+              $ref: "#/definitions/project"
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: project-name
+          in: path
+          description: Name of the project deploying a service
+          required: true
+          type: string
+    put:
+      tags:
+        - Business
+      summary: create or update an existing project
+      description: create or update an existing project
+      operationId: createOrUpdateBusinessProjectsProject
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: project-name
+          in: path
+          description: Name of the project deploying a service
+          required: true
+          type: string
+        - name: body
+          in: body
+          description: project object that needs to be created or updated
+          required: true
+          schema:
+            $ref: "#/definitions/project"
+    delete:
+      tags:
+        - Business
+      summary: delete an existing project
+      description: delete an existing project
+      operationId: deleteBusinessProjectsProject
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: project-name
+          in: path
+          description: Name of the project deploying a service
+          required: true
+          type: string
+        - name: resource-version
+          in: query
+          description: resource-version for concurrency
+          required: true
+          type: string
+  /business/projects:
+    get:
+      tags:
+        - Business
+      summary: returns projects
+      description: returns projects
+      operationId: getBusinessProjects
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "200":
+          description: successful operation
+          schema:
+              $ref: "#/definitions/projects"
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+  /service-design-and-creation/vnf-images/vnf-image/{vnf-image-uuid}/relationship-list/relationship:
+    put:
+      tags:
+        - ServiceDesignAndCreation
+      summary: see node definition for valid relationships
+      operationId: createOrUpdateServiceDesignAndCreationVnfImagesVnfImageRelationshipListRelationship
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: vnf-image-uuid
+          in: path
+          description: Unique ID of this asset
+          required: true
+          type: string
+        - name: body
+          in: body
+          description: relationship object that needs to be created or updated
+          required: true
+          schema:
+            $ref: "#/definitions/relationship"
+    delete:
+      tags:
+        - ServiceDesignAndCreation
+      summary: delete an existing relationship
+      description: delete an existing relationship
+      operationId: deleteServiceDesignAndCreationVnfImagesVnfImageRelationshipListRelationship
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: vnf-image-uuid
+          in: path
+          description: Unique ID of this asset
+          required: true
+          type: string
+  /service-design-and-creation/vnf-images/vnf-image/{vnf-image-uuid}:
+    get:
+      tags:
+        - ServiceDesignAndCreation
+      summary: returns vnf-image
+      description: returns vnf-image
+      operationId: getServiceDesignAndCreationVnfImagesVnfImage
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "200":
+          description: successful operation
+          schema:
+              $ref: "#/definitions/vnf-image"
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: vnf-image-uuid
+          in: path
+          description: Unique ID of this asset
+          required: true
+          type: string
+        - name: application
+          in: query
+          description: The application that the image instantiates.
+          required: false
+          type: string
+        - name: application-vendor
+          in: query
+          description: The vendor of the application.
+          required: false
+          type: string
+        - name: application-version
+          in: query
+          description: The version of the application.
+          required: false
+          type: string
+    put:
+      tags:
+        - ServiceDesignAndCreation
+      summary: create or update an existing vnf-image
+      description: create or update an existing vnf-image
+      operationId: createOrUpdateServiceDesignAndCreationVnfImagesVnfImage
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: vnf-image-uuid
+          in: path
+          description: Unique ID of this asset
+          required: true
+          type: string
+        - name: body
+          in: body
+          description: vnf-image object that needs to be created or updated
+          required: true
+          schema:
+            $ref: "#/definitions/vnf-image"
+    delete:
+      tags:
+        - ServiceDesignAndCreation
+      summary: delete an existing vnf-image
+      description: delete an existing vnf-image
+      operationId: deleteServiceDesignAndCreationVnfImagesVnfImage
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: vnf-image-uuid
+          in: path
+          description: Unique ID of this asset
+          required: true
+          type: string
+        - name: resource-version
+          in: query
+          description: resource-version for concurrency
+          required: true
+          type: string
+  /service-design-and-creation/vnf-images:
+    get:
+      tags:
+        - ServiceDesignAndCreation
+      summary: returns vnf-images
+      description: returns vnf-images
+      operationId: getServiceDesignAndCreationVnfImages
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "200":
+          description: successful operation
+          schema:
+              $ref: "#/definitions/vnf-images"
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+  /service-design-and-creation/services/service/{service-id}/relationship-list/relationship:
+    put:
+      tags:
+        - ServiceDesignAndCreation
+      summary: see node definition for valid relationships
+      operationId: createOrUpdateServiceDesignAndCreationServicesServiceRelationshipListRelationship
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: service-id
+          in: path
+          description: This gets defined by others to provide a unique ID for the service, we accept what is sent.
+          required: true
+          type: string
+        - name: body
+          in: body
+          description: relationship object that needs to be created or updated
+          required: true
+          schema:
+            $ref: "#/definitions/relationship"
+    delete:
+      tags:
+        - ServiceDesignAndCreation
+      summary: delete an existing relationship
+      description: delete an existing relationship
+      operationId: deleteServiceDesignAndCreationServicesServiceRelationshipListRelationship
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: service-id
+          in: path
+          description: This gets defined by others to provide a unique ID for the service, we accept what is sent.
+          required: true
+          type: string
+  /service-design-and-creation/services/service/{service-id}:
+    get:
+      tags:
+        - ServiceDesignAndCreation
+      summary: returns service
+      description: returns service
+      operationId: getServiceDesignAndCreationServicesService
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "200":
+          description: successful operation
+          schema:
+              $ref: "#/definitions/service"
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: service-id
+          in: path
+          description: This gets defined by others to provide a unique ID for the service, we accept what is sent.
+          required: true
+          type: string
+        - name: service-description
+          in: query
+          description: Description of the service
+          required: false
+          type: string
+    put:
+      tags:
+        - ServiceDesignAndCreation
+      summary: create or update an existing service
+      description: create or update an existing service
+      operationId: createOrUpdateServiceDesignAndCreationServicesService
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: service-id
+          in: path
+          description: This gets defined by others to provide a unique ID for the service, we accept what is sent.
+          required: true
+          type: string
+        - name: body
+          in: body
+          description: service object that needs to be created or updated
+          required: true
+          schema:
+            $ref: "#/definitions/service"
+    delete:
+      tags:
+        - ServiceDesignAndCreation
+      summary: delete an existing service
+      description: delete an existing service
+      operationId: deleteServiceDesignAndCreationServicesService
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: service-id
+          in: path
+          description: This gets defined by others to provide a unique ID for the service, we accept what is sent.
+          required: true
+          type: string
+        - name: resource-version
+          in: query
+          description: resource-version for concurrency
+          required: true
+          type: string
+  /service-design-and-creation/services:
+    get:
+      tags:
+        - ServiceDesignAndCreation
+      summary: returns services
+      description: returns services
+      operationId: getServiceDesignAndCreationServices
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "200":
+          description: successful operation
+          schema:
+              $ref: "#/definitions/services"
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+  /service-design-and-creation/service-capabilities/service-capability/{service-type}/{vnf-type}/relationship-list/relationship:
+    put:
+      tags:
+        - ServiceDesignAndCreation
+      summary: see node definition for valid relationships
+      operationId: createOrUpdateServiceDesignAndCreationServiceCapabilitiesServiceCapabilityRelationshipListRelationship
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: service-type
+          in: path
+          description: This gets defined by others to provide a unique ID for the service, we accept what is sent.
+          required: true
+          type: string
+        - name: vnf-type
+          in: path
+          description: String capturing type of vnf, that was intended to identify the ASDC resource.  This field has been overloaded in service-specific ways and clients should expect changes to occur in the future to this field as ECOMP matures.
+          required: true
+          type: string
+        - name: body
+          in: body
+          description: relationship object that needs to be created or updated
+          required: true
+          schema:
+            $ref: "#/definitions/relationship"
+    delete:
+      tags:
+        - ServiceDesignAndCreation
+      summary: delete an existing relationship
+      description: delete an existing relationship
+      operationId: deleteServiceDesignAndCreationServiceCapabilitiesServiceCapabilityRelationshipListRelationship
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: service-type
+          in: path
+          description: This gets defined by others to provide a unique ID for the service, we accept what is sent.
+          required: true
+          type: string
+        - name: vnf-type
+          in: path
+          description: String capturing type of vnf, that was intended to identify the ASDC resource.  This field has been overloaded in service-specific ways and clients should expect changes to occur in the future to this field as ECOMP matures.
+          required: true
+          type: string
+  /service-design-and-creation/service-capabilities/service-capability/{service-type}/{vnf-type}:
+    get:
+      tags:
+        - ServiceDesignAndCreation
+      summary: returns service-capability
+      description: returns service-capability
+      operationId: getServiceDesignAndCreationServiceCapabilitiesServiceCapability
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "200":
+          description: successful operation
+          schema:
+              $ref: "#/definitions/service-capability"
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: service-type
+          in: path
+          description: This gets defined by others to provide a unique ID for the service, we accept what is sent.
+          required: true
+          type: string
+        - name: vnf-type
+          in: path
+          description: String capturing type of vnf, that was intended to identify the ASDC resource.  This field has been overloaded in service-specific ways and clients should expect changes to occur in the future to this field as ECOMP matures.
+          required: true
+          type: string
+    put:
+      tags:
+        - ServiceDesignAndCreation
+      summary: create or update an existing service-capability
+      description: create or update an existing service-capability
+      operationId: createOrUpdateServiceDesignAndCreationServiceCapabilitiesServiceCapability
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: service-type
+          in: path
+          description: This gets defined by others to provide a unique ID for the service, we accept what is sent.
+          required: true
+          type: string
+        - name: vnf-type
+          in: path
+          description: String capturing type of vnf, that was intended to identify the ASDC resource.  This field has been overloaded in service-specific ways and clients should expect changes to occur in the future to this field as ECOMP matures.
+          required: true
+          type: string
+        - name: body
+          in: body
+          description: service-capability object that needs to be created or updated
+          required: true
+          schema:
+            $ref: "#/definitions/service-capability"
+    delete:
+      tags:
+        - ServiceDesignAndCreation
+      summary: delete an existing service-capability
+      description: delete an existing service-capability
+      operationId: deleteServiceDesignAndCreationServiceCapabilitiesServiceCapability
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: service-type
+          in: path
+          description: This gets defined by others to provide a unique ID for the service, we accept what is sent.
+          required: true
+          type: string
+        - name: vnf-type
+          in: path
+          description: String capturing type of vnf, that was intended to identify the ASDC resource.  This field has been overloaded in service-specific ways and clients should expect changes to occur in the future to this field as ECOMP matures.
+          required: true
+          type: string
+        - name: resource-version
+          in: query
+          description: resource-version for concurrency
+          required: true
+          type: string
+  /service-design-and-creation/service-capabilities:
+    get:
+      tags:
+        - ServiceDesignAndCreation
+      summary: returns service-capabilities
+      description: returns service-capabilities
+      operationId: getServiceDesignAndCreationServiceCapabilities
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "200":
+          description: successful operation
+          schema:
+              $ref: "#/definitions/service-capabilities"
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+  /service-design-and-creation/models/model/{model-invariant-id}/model-vers/model-ver/{model-version-id}/model-elements/model-element/{model-element-uuid}/model-constraints/model-constraint/{model-constraint-uuid}/constrained-element-sets/constrained-element-set/{constrained-element-set-uuid}/element-choice-sets/element-choice-set/{element-choice-set-uuid}/relationship-list/relationship:
+    put:
+      tags:
+        - ServiceDesignAndCreation
+      summary: see node definition for valid relationships
+      operationId: createOrUpdateServiceDesignAndCreationModelsModelModelVersModelVerModelElementsModelElementModelConstraintsModelConstraintConstrainedElementSetsConstrainedElementSetElementChoiceSetsElementChoiceSetRelationshipListRelationship
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: model-invariant-id
+          in: path
+          description: Unique identifier corresponding to the main definition of a model in ASDC
+          required: true
+          type: string
+        - name: model-version-id
+          in: path
+          description: Unique identifier corresponding to one version of a model in ASDC
+          required: true
+          type: string
+        - name: model-element-uuid
+          in: path
+          required: true
+          type: string
+        - name: model-constraint-uuid
+          in: path
+          required: true
+          type: string
+        - name: constrained-element-set-uuid
+          in: path
+          required: true
+          type: string
+        - name: element-choice-set-uuid
+          in: path
+          required: true
+          type: string
+        - name: body
+          in: body
+          description: relationship object that needs to be created or updated
+          required: true
+          schema:
+            $ref: "#/definitions/relationship"
+    delete:
+      tags:
+        - ServiceDesignAndCreation
+      summary: delete an existing relationship
+      description: delete an existing relationship
+      operationId: deleteServiceDesignAndCreationModelsModelModelVersModelVerModelElementsModelElementModelConstraintsModelConstraintConstrainedElementSetsConstrainedElementSetElementChoiceSetsElementChoiceSetRelationshipListRelationship
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: model-invariant-id
+          in: path
+          description: Unique identifier corresponding to the main definition of a model in ASDC
+          required: true
+          type: string
+        - name: model-version-id
+          in: path
+          description: Unique identifier corresponding to one version of a model in ASDC
+          required: true
+          type: string
+        - name: model-element-uuid
+          in: path
+          required: true
+          type: string
+        - name: model-constraint-uuid
+          in: path
+          required: true
+          type: string
+        - name: constrained-element-set-uuid
+          in: path
+          required: true
+          type: string
+        - name: element-choice-set-uuid
+          in: path
+          required: true
+          type: string
+  /service-design-and-creation/models/model/{model-invariant-id}/model-vers/model-ver/{model-version-id}/model-elements/model-element/{model-element-uuid}/model-constraints/model-constraint/{model-constraint-uuid}/constrained-element-sets/constrained-element-set/{constrained-element-set-uuid}/element-choice-sets/element-choice-set/{element-choice-set-uuid}:
+    get:
+      tags:
+        - ServiceDesignAndCreation
+      summary: returns element-choice-set
+      description: returns element-choice-set
+      operationId: getServiceDesignAndCreationModelsModelModelVersModelVerModelElementsModelElementModelConstraintsModelConstraintConstrainedElementSetsConstrainedElementSetElementChoiceSetsElementChoiceSet
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "200":
+          description: successful operation
+          schema:
+              $ref: "#/definitions/element-choice-set"
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: model-invariant-id
+          in: path
+          description: Unique identifier corresponding to the main definition of a model in ASDC
+          required: true
+          type: string
+        - name: model-version-id
+          in: path
+          description: Unique identifier corresponding to one version of a model in ASDC
+          required: true
+          type: string
+        - name: model-element-uuid
+          in: path
+          required: true
+          type: string
+        - name: model-constraint-uuid
+          in: path
+          required: true
+          type: string
+        - name: constrained-element-set-uuid
+          in: path
+          required: true
+          type: string
+        - name: element-choice-set-uuid
+          in: path
+          required: true
+          type: string
+        - name: model-type
+          in: query
+          description: Type of the model, e.g., service, resource, widget, etc.
+          required: false
+          type: string
+        - name: model-name
+          in: query
+          description: Name of the model, which can change from version to version.
+          required: false
+          type: string
+        - name: model-version
+          in: query
+          description: Version
+          required: false
+          type: string
+    put:
+      tags:
+        - ServiceDesignAndCreation
+      summary: create or update an existing element-choice-set
+      description: create or update an existing element-choice-set
+      operationId: createOrUpdateServiceDesignAndCreationModelsModelModelVersModelVerModelElementsModelElementModelConstraintsModelConstraintConstrainedElementSetsConstrainedElementSetElementChoiceSetsElementChoiceSet
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: model-invariant-id
+          in: path
+          description: Unique identifier corresponding to the main definition of a model in ASDC
+          required: true
+          type: string
+        - name: model-version-id
+          in: path
+          description: Unique identifier corresponding to one version of a model in ASDC
+          required: true
+          type: string
+        - name: model-element-uuid
+          in: path
+          required: true
+          type: string
+        - name: model-constraint-uuid
+          in: path
+          required: true
+          type: string
+        - name: constrained-element-set-uuid
+          in: path
+          required: true
+          type: string
+        - name: element-choice-set-uuid
+          in: path
+          required: true
+          type: string
+        - name: body
+          in: body
+          description: element-choice-set object that needs to be created or updated
+          required: true
+          schema:
+            $ref: "#/definitions/element-choice-set"
+    delete:
+      tags:
+        - ServiceDesignAndCreation
+      summary: delete an existing element-choice-set
+      description: delete an existing element-choice-set
+      operationId: deleteServiceDesignAndCreationModelsModelModelVersModelVerModelElementsModelElementModelConstraintsModelConstraintConstrainedElementSetsConstrainedElementSetElementChoiceSetsElementChoiceSet
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: model-invariant-id
+          in: path
+          description: Unique identifier corresponding to the main definition of a model in ASDC
+          required: true
+          type: string
+        - name: model-version-id
+          in: path
+          description: Unique identifier corresponding to one version of a model in ASDC
+          required: true
+          type: string
+        - name: model-element-uuid
+          in: path
+          required: true
+          type: string
+        - name: model-constraint-uuid
+          in: path
+          required: true
+          type: string
+        - name: constrained-element-set-uuid
+          in: path
+          required: true
+          type: string
+        - name: element-choice-set-uuid
+          in: path
+          required: true
+          type: string
+        - name: resource-version
+          in: query
+          description: resource-version for concurrency
+          required: true
+          type: string
+  /service-design-and-creation/models/model/{model-invariant-id}/model-vers/model-ver/{model-version-id}/model-elements/model-element/{model-element-uuid}/model-constraints/model-constraint/{model-constraint-uuid}/constrained-element-sets/constrained-element-set/{constrained-element-set-uuid}/element-choice-sets:
+    get:
+      tags:
+        - ServiceDesignAndCreation
+      summary: returns element-choice-sets
+      description: returns element-choice-sets
+      operationId: getServiceDesignAndCreationModelsModelModelVersModelVerModelElementsModelElementModelConstraintsModelConstraintConstrainedElementSetsConstrainedElementSetElementChoiceSets
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "200":
+          description: successful operation
+          schema:
+              $ref: "#/definitions/element-choice-sets"
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: model-invariant-id
+          in: path
+          description: Unique identifier corresponding to the main definition of a model in ASDC
+          required: true
+          type: string
+        - name: model-version-id
+          in: path
+          description: Unique identifier corresponding to one version of a model in ASDC
+          required: true
+          type: string
+        - name: model-element-uuid
+          in: path
+          required: true
+          type: string
+        - name: model-constraint-uuid
+          in: path
+          required: true
+          type: string
+        - name: constrained-element-set-uuid
+          in: path
+          required: true
+          type: string
+        - name: model-type
+          in: query
+          description: Type of the model, e.g., service, resource, widget, etc.
+          required: false
+          type: string
+        - name: model-name
+          in: query
+          description: Name of the model, which can change from version to version.
+          required: false
+          type: string
+        - name: model-version
+          in: query
+          description: Version
+          required: false
+          type: string
+  /service-design-and-creation/models/model/{model-invariant-id}/model-vers/model-ver/{model-version-id}/model-elements/model-element/{model-element-uuid}/model-constraints/model-constraint/{model-constraint-uuid}/constrained-element-sets/constrained-element-set/{constrained-element-set-uuid}/relationship-list/relationship:
+    put:
+      tags:
+        - ServiceDesignAndCreation
+      summary: see node definition for valid relationships
+      operationId: createOrUpdateServiceDesignAndCreationModelsModelModelVersModelVerModelElementsModelElementModelConstraintsModelConstraintConstrainedElementSetsConstrainedElementSetRelationshipListRelationship
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: model-invariant-id
+          in: path
+          description: Unique identifier corresponding to the main definition of a model in ASDC
+          required: true
+          type: string
+        - name: model-version-id
+          in: path
+          description: Unique identifier corresponding to one version of a model in ASDC
+          required: true
+          type: string
+        - name: model-element-uuid
+          in: path
+          required: true
+          type: string
+        - name: model-constraint-uuid
+          in: path
+          required: true
+          type: string
+        - name: constrained-element-set-uuid
+          in: path
+          required: true
+          type: string
+        - name: body
+          in: body
+          description: relationship object that needs to be created or updated
+          required: true
+          schema:
+            $ref: "#/definitions/relationship"
+    delete:
+      tags:
+        - ServiceDesignAndCreation
+      summary: delete an existing relationship
+      description: delete an existing relationship
+      operationId: deleteServiceDesignAndCreationModelsModelModelVersModelVerModelElementsModelElementModelConstraintsModelConstraintConstrainedElementSetsConstrainedElementSetRelationshipListRelationship
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: model-invariant-id
+          in: path
+          description: Unique identifier corresponding to the main definition of a model in ASDC
+          required: true
+          type: string
+        - name: model-version-id
+          in: path
+          description: Unique identifier corresponding to one version of a model in ASDC
+          required: true
+          type: string
+        - name: model-element-uuid
+          in: path
+          required: true
+          type: string
+        - name: model-constraint-uuid
+          in: path
+          required: true
+          type: string
+        - name: constrained-element-set-uuid
+          in: path
+          required: true
+          type: string
+  /service-design-and-creation/models/model/{model-invariant-id}/model-vers/model-ver/{model-version-id}/model-elements/model-element/{model-element-uuid}/model-constraints/model-constraint/{model-constraint-uuid}/constrained-element-sets/constrained-element-set/{constrained-element-set-uuid}:
+    get:
+      tags:
+        - ServiceDesignAndCreation
+      summary: returns constrained-element-set
+      description: returns constrained-element-set
+      operationId: getServiceDesignAndCreationModelsModelModelVersModelVerModelElementsModelElementModelConstraintsModelConstraintConstrainedElementSetsConstrainedElementSet
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "200":
+          description: successful operation
+          schema:
+              $ref: "#/definitions/constrained-element-set"
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: model-invariant-id
+          in: path
+          description: Unique identifier corresponding to the main definition of a model in ASDC
+          required: true
+          type: string
+        - name: model-version-id
+          in: path
+          description: Unique identifier corresponding to one version of a model in ASDC
+          required: true
+          type: string
+        - name: model-element-uuid
+          in: path
+          required: true
+          type: string
+        - name: model-constraint-uuid
+          in: path
+          required: true
+          type: string
+        - name: constrained-element-set-uuid
+          in: path
+          required: true
+          type: string
+        - name: model-type
+          in: query
+          description: Type of the model, e.g., service, resource, widget, etc.
+          required: false
+          type: string
+        - name: model-name
+          in: query
+          description: Name of the model, which can change from version to version.
+          required: false
+          type: string
+        - name: model-version
+          in: query
+          description: Version
+          required: false
+          type: string
+    put:
+      tags:
+        - ServiceDesignAndCreation
+      summary: create or update an existing constrained-element-set
+      description: create or update an existing constrained-element-set
+      operationId: createOrUpdateServiceDesignAndCreationModelsModelModelVersModelVerModelElementsModelElementModelConstraintsModelConstraintConstrainedElementSetsConstrainedElementSet
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: model-invariant-id
+          in: path
+          description: Unique identifier corresponding to the main definition of a model in ASDC
+          required: true
+          type: string
+        - name: model-version-id
+          in: path
+          description: Unique identifier corresponding to one version of a model in ASDC
+          required: true
+          type: string
+        - name: model-element-uuid
+          in: path
+          required: true
+          type: string
+        - name: model-constraint-uuid
+          in: path
+          required: true
+          type: string
+        - name: constrained-element-set-uuid
+          in: path
+          required: true
+          type: string
+        - name: body
+          in: body
+          description: constrained-element-set object that needs to be created or updated
+          required: true
+          schema:
+            $ref: "#/definitions/constrained-element-set"
+    delete:
+      tags:
+        - ServiceDesignAndCreation
+      summary: delete an existing constrained-element-set
+      description: delete an existing constrained-element-set
+      operationId: deleteServiceDesignAndCreationModelsModelModelVersModelVerModelElementsModelElementModelConstraintsModelConstraintConstrainedElementSetsConstrainedElementSet
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: model-invariant-id
+          in: path
+          description: Unique identifier corresponding to the main definition of a model in ASDC
+          required: true
+          type: string
+        - name: model-version-id
+          in: path
+          description: Unique identifier corresponding to one version of a model in ASDC
+          required: true
+          type: string
+        - name: model-element-uuid
+          in: path
+          required: true
+          type: string
+        - name: model-constraint-uuid
+          in: path
+          required: true
+          type: string
+        - name: constrained-element-set-uuid
+          in: path
+          required: true
+          type: string
+        - name: resource-version
+          in: query
+          description: resource-version for concurrency
+          required: true
+          type: string
+  /service-design-and-creation/models/model/{model-invariant-id}/model-vers/model-ver/{model-version-id}/model-elements/model-element/{model-element-uuid}/model-constraints/model-constraint/{model-constraint-uuid}/constrained-element-sets:
+    get:
+      tags:
+        - ServiceDesignAndCreation
+      summary: returns constrained-element-sets
+      description: returns constrained-element-sets
+      operationId: getServiceDesignAndCreationModelsModelModelVersModelVerModelElementsModelElementModelConstraintsModelConstraintConstrainedElementSets
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "200":
+          description: successful operation
+          schema:
+              $ref: "#/definitions/constrained-element-sets"
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: model-invariant-id
+          in: path
+          description: Unique identifier corresponding to the main definition of a model in ASDC
+          required: true
+          type: string
+        - name: model-version-id
+          in: path
+          description: Unique identifier corresponding to one version of a model in ASDC
+          required: true
+          type: string
+        - name: model-element-uuid
+          in: path
+          required: true
+          type: string
+        - name: model-constraint-uuid
+          in: path
+          required: true
+          type: string
+        - name: model-type
+          in: query
+          description: Type of the model, e.g., service, resource, widget, etc.
+          required: false
+          type: string
+        - name: model-name
+          in: query
+          description: Name of the model, which can change from version to version.
+          required: false
+          type: string
+        - name: model-version
+          in: query
+          description: Version
+          required: false
+          type: string
+  /service-design-and-creation/models/model/{model-invariant-id}/model-vers/model-ver/{model-version-id}/model-elements/model-element/{model-element-uuid}/model-constraints/model-constraint/{model-constraint-uuid}:
+    get:
+      tags:
+        - ServiceDesignAndCreation
+      summary: returns model-constraint
+      description: returns model-constraint
+      operationId: getServiceDesignAndCreationModelsModelModelVersModelVerModelElementsModelElementModelConstraintsModelConstraint
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "200":
+          description: successful operation
+          schema:
+              $ref: "#/definitions/model-constraint"
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: model-invariant-id
+          in: path
+          description: Unique identifier corresponding to the main definition of a model in ASDC
+          required: true
+          type: string
+        - name: model-version-id
+          in: path
+          description: Unique identifier corresponding to one version of a model in ASDC
+          required: true
+          type: string
+        - name: model-element-uuid
+          in: path
+          required: true
+          type: string
+        - name: model-constraint-uuid
+          in: path
+          required: true
+          type: string
+        - name: model-type
+          in: query
+          description: Type of the model, e.g., service, resource, widget, etc.
+          required: false
+          type: string
+        - name: model-name
+          in: query
+          description: Name of the model, which can change from version to version.
+          required: false
+          type: string
+        - name: model-version
+          in: query
+          description: Version
+          required: false
+          type: string
+    put:
+      tags:
+        - ServiceDesignAndCreation
+      summary: create or update an existing model-constraint
+      description: create or update an existing model-constraint
+      operationId: createOrUpdateServiceDesignAndCreationModelsModelModelVersModelVerModelElementsModelElementModelConstraintsModelConstraint
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: model-invariant-id
+          in: path
+          description: Unique identifier corresponding to the main definition of a model in ASDC
+          required: true
+          type: string
+        - name: model-version-id
+          in: path
+          description: Unique identifier corresponding to one version of a model in ASDC
+          required: true
+          type: string
+        - name: model-element-uuid
+          in: path
+          required: true
+          type: string
+        - name: model-constraint-uuid
+          in: path
+          required: true
+          type: string
+        - name: body
+          in: body
+          description: model-constraint object that needs to be created or updated
+          required: true
+          schema:
+            $ref: "#/definitions/model-constraint"
+    delete:
+      tags:
+        - ServiceDesignAndCreation
+      summary: delete an existing model-constraint
+      description: delete an existing model-constraint
+      operationId: deleteServiceDesignAndCreationModelsModelModelVersModelVerModelElementsModelElementModelConstraintsModelConstraint
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: model-invariant-id
+          in: path
+          description: Unique identifier corresponding to the main definition of a model in ASDC
+          required: true
+          type: string
+        - name: model-version-id
+          in: path
+          description: Unique identifier corresponding to one version of a model in ASDC
+          required: true
+          type: string
+        - name: model-element-uuid
+          in: path
+          required: true
+          type: string
+        - name: model-constraint-uuid
+          in: path
+          required: true
+          type: string
+        - name: resource-version
+          in: query
+          description: resource-version for concurrency
+          required: true
+          type: string
+  /service-design-and-creation/models/model/{model-invariant-id}/model-vers/model-ver/{model-version-id}/model-elements/model-element/{model-element-uuid}/model-constraints:
+    get:
+      tags:
+        - ServiceDesignAndCreation
+      summary: returns model-constraints
+      description: returns model-constraints
+      operationId: getServiceDesignAndCreationModelsModelModelVersModelVerModelElementsModelElementModelConstraints
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "200":
+          description: successful operation
+          schema:
+              $ref: "#/definitions/model-constraints"
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: model-invariant-id
+          in: path
+          description: Unique identifier corresponding to the main definition of a model in ASDC
+          required: true
+          type: string
+        - name: model-version-id
+          in: path
+          description: Unique identifier corresponding to one version of a model in ASDC
+          required: true
+          type: string
+        - name: model-element-uuid
+          in: path
+          required: true
+          type: string
+        - name: model-type
+          in: query
+          description: Type of the model, e.g., service, resource, widget, etc.
+          required: false
+          type: string
+        - name: model-name
+          in: query
+          description: Name of the model, which can change from version to version.
+          required: false
+          type: string
+        - name: model-version
+          in: query
+          description: Version
+          required: false
+          type: string
+  /service-design-and-creation/models/model/{model-invariant-id}/model-vers/model-ver/{model-version-id}/model-elements/model-element/{model-element-uuid}/relationship-list/relationship:
+    put:
+      tags:
+        - ServiceDesignAndCreation
+      summary: see node definition for valid relationships
+      operationId: createOrUpdateServiceDesignAndCreationModelsModelModelVersModelVerModelElementsModelElementRelationshipListRelationship
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: model-invariant-id
+          in: path
+          description: Unique identifier corresponding to the main definition of a model in ASDC
+          required: true
+          type: string
+        - name: model-version-id
+          in: path
+          description: Unique identifier corresponding to one version of a model in ASDC
+          required: true
+          type: string
+        - name: model-element-uuid
+          in: path
+          required: true
+          type: string
+        - name: body
+          in: body
+          description: relationship object that needs to be created or updated
+          required: true
+          schema:
+            $ref: "#/definitions/relationship"
+    delete:
+      tags:
+        - ServiceDesignAndCreation
+      summary: delete an existing relationship
+      description: delete an existing relationship
+      operationId: deleteServiceDesignAndCreationModelsModelModelVersModelVerModelElementsModelElementRelationshipListRelationship
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: model-invariant-id
+          in: path
+          description: Unique identifier corresponding to the main definition of a model in ASDC
+          required: true
+          type: string
+        - name: model-version-id
+          in: path
+          description: Unique identifier corresponding to one version of a model in ASDC
+          required: true
+          type: string
+        - name: model-element-uuid
+          in: path
+          required: true
+          type: string
+  /service-design-and-creation/models/model/{model-invariant-id}/model-vers/model-ver/{model-version-id}/model-elements/model-element/{model-element-uuid}:
+    get:
+      tags:
+        - ServiceDesignAndCreation
+      summary: returns model-element
+      description: returns model-element
+      operationId: getServiceDesignAndCreationModelsModelModelVersModelVerModelElementsModelElement
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "200":
+          description: successful operation
+          schema:
+              $ref: "#/definitions/model-element"
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: model-invariant-id
+          in: path
+          description: Unique identifier corresponding to the main definition of a model in ASDC
+          required: true
+          type: string
+        - name: model-version-id
+          in: path
+          description: Unique identifier corresponding to one version of a model in ASDC
+          required: true
+          type: string
+        - name: model-element-uuid
+          in: path
+          required: true
+          type: string
+        - name: model-type
+          in: query
+          description: Type of the model, e.g., service, resource, widget, etc.
+          required: false
+          type: string
+        - name: model-name
+          in: query
+          description: Name of the model, which can change from version to version.
+          required: false
+          type: string
+        - name: model-version
+          in: query
+          description: Version
+          required: false
+          type: string
+    put:
+      tags:
+        - ServiceDesignAndCreation
+      summary: create or update an existing model-element
+      description: create or update an existing model-element
+      operationId: createOrUpdateServiceDesignAndCreationModelsModelModelVersModelVerModelElementsModelElement
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: model-invariant-id
+          in: path
+          description: Unique identifier corresponding to the main definition of a model in ASDC
+          required: true
+          type: string
+        - name: model-version-id
+          in: path
+          description: Unique identifier corresponding to one version of a model in ASDC
+          required: true
+          type: string
+        - name: model-element-uuid
+          in: path
+          required: true
+          type: string
+        - name: body
+          in: body
+          description: model-element object that needs to be created or updated
+          required: true
+          schema:
+            $ref: "#/definitions/model-element"
+    delete:
+      tags:
+        - ServiceDesignAndCreation
+      summary: delete an existing model-element
+      description: delete an existing model-element
+      operationId: deleteServiceDesignAndCreationModelsModelModelVersModelVerModelElementsModelElement
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: model-invariant-id
+          in: path
+          description: Unique identifier corresponding to the main definition of a model in ASDC
+          required: true
+          type: string
+        - name: model-version-id
+          in: path
+          description: Unique identifier corresponding to one version of a model in ASDC
+          required: true
+          type: string
+        - name: model-element-uuid
+          in: path
+          required: true
+          type: string
+        - name: resource-version
+          in: query
+          description: resource-version for concurrency
+          required: true
+          type: string
+  /service-design-and-creation/models/model/{model-invariant-id}/model-vers/model-ver/{model-version-id}/model-elements:
+    get:
+      tags:
+        - ServiceDesignAndCreation
+      summary: returns model-elements
+      description: returns model-elements
+      operationId: getServiceDesignAndCreationModelsModelModelVersModelVerModelElements
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "200":
+          description: successful operation
+          schema:
+              $ref: "#/definitions/model-elements"
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: model-invariant-id
+          in: path
+          description: Unique identifier corresponding to the main definition of a model in ASDC
+          required: true
+          type: string
+        - name: model-version-id
+          in: path
+          description: Unique identifier corresponding to one version of a model in ASDC
+          required: true
+          type: string
+        - name: model-type
+          in: query
+          description: Type of the model, e.g., service, resource, widget, etc.
+          required: false
+          type: string
+        - name: model-name
+          in: query
+          description: Name of the model, which can change from version to version.
+          required: false
+          type: string
+        - name: model-version
+          in: query
+          description: Version
+          required: false
+          type: string
+  /service-design-and-creation/models/model/{model-invariant-id}/model-vers/model-ver/{model-version-id}/metadata/metadatum/{metaname}:
+    get:
+      tags:
+        - ServiceDesignAndCreation
+      summary: returns metadatum
+      description: returns metadatum
+      operationId: getServiceDesignAndCreationModelsModelModelVersModelVerMetadataMetadatum
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "200":
+          description: successful operation
+          schema:
+              $ref: "#/definitions/metadatum"
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: model-invariant-id
+          in: path
+          description: Unique identifier corresponding to the main definition of a model in ASDC
+          required: true
+          type: string
+        - name: model-version-id
+          in: path
+          description: Unique identifier corresponding to one version of a model in ASDC
+          required: true
+          type: string
+        - name: metaname
+          in: path
+          required: true
+          type: string
+        - name: model-type
+          in: query
+          description: Type of the model, e.g., service, resource, widget, etc.
+          required: false
+          type: string
+        - name: model-name
+          in: query
+          description: Name of the model, which can change from version to version.
+          required: false
+          type: string
+        - name: model-version
+          in: query
+          description: Version
+          required: false
+          type: string
+    put:
+      tags:
+        - ServiceDesignAndCreation
+      summary: create or update an existing metadatum
+      description: create or update an existing metadatum
+      operationId: createOrUpdateServiceDesignAndCreationModelsModelModelVersModelVerMetadataMetadatum
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: model-invariant-id
+          in: path
+          description: Unique identifier corresponding to the main definition of a model in ASDC
+          required: true
+          type: string
+        - name: model-version-id
+          in: path
+          description: Unique identifier corresponding to one version of a model in ASDC
+          required: true
+          type: string
+        - name: metaname
+          in: path
+          required: true
+          type: string
+        - name: body
+          in: body
+          description: metadatum object that needs to be created or updated
+          required: true
+          schema:
+            $ref: "#/definitions/metadatum"
+    delete:
+      tags:
+        - ServiceDesignAndCreation
+      summary: delete an existing metadatum
+      description: delete an existing metadatum
+      operationId: deleteServiceDesignAndCreationModelsModelModelVersModelVerMetadataMetadatum
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: model-invariant-id
+          in: path
+          description: Unique identifier corresponding to the main definition of a model in ASDC
+          required: true
+          type: string
+        - name: model-version-id
+          in: path
+          description: Unique identifier corresponding to one version of a model in ASDC
+          required: true
+          type: string
+        - name: metaname
+          in: path
+          required: true
+          type: string
+        - name: resource-version
+          in: query
+          description: resource-version for concurrency
+          required: true
+          type: string
+  /service-design-and-creation/models/model/{model-invariant-id}/model-vers/model-ver/{model-version-id}/metadata:
+    get:
+      tags:
+        - ServiceDesignAndCreation
+      summary: returns metadata
+      description: returns metadata
+      operationId: getServiceDesignAndCreationModelsModelModelVersModelVerMetadata
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "200":
+          description: successful operation
+          schema:
+              $ref: "#/definitions/metadata"
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: model-invariant-id
+          in: path
+          description: Unique identifier corresponding to the main definition of a model in ASDC
+          required: true
+          type: string
+        - name: model-version-id
+          in: path
+          description: Unique identifier corresponding to one version of a model in ASDC
+          required: true
+          type: string
+        - name: model-type
+          in: query
+          description: Type of the model, e.g., service, resource, widget, etc.
+          required: false
+          type: string
+        - name: model-name
+          in: query
+          description: Name of the model, which can change from version to version.
+          required: false
+          type: string
+        - name: model-version
+          in: query
+          description: Version
+          required: false
+          type: string
+  /service-design-and-creation/models/model/{model-invariant-id}/model-vers/model-ver/{model-version-id}/relationship-list/relationship:
+    put:
+      tags:
+        - ServiceDesignAndCreation
+      summary: see node definition for valid relationships
+      operationId: createOrUpdateServiceDesignAndCreationModelsModelModelVersModelVerRelationshipListRelationship
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: model-invariant-id
+          in: path
+          description: Unique identifier corresponding to the main definition of a model in ASDC
+          required: true
+          type: string
+        - name: model-version-id
+          in: path
+          description: Unique identifier corresponding to one version of a model in ASDC
+          required: true
+          type: string
+        - name: body
+          in: body
+          description: relationship object that needs to be created or updated
+          required: true
+          schema:
+            $ref: "#/definitions/relationship"
+    delete:
+      tags:
+        - ServiceDesignAndCreation
+      summary: delete an existing relationship
+      description: delete an existing relationship
+      operationId: deleteServiceDesignAndCreationModelsModelModelVersModelVerRelationshipListRelationship
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: model-invariant-id
+          in: path
+          description: Unique identifier corresponding to the main definition of a model in ASDC
+          required: true
+          type: string
+        - name: model-version-id
+          in: path
+          description: Unique identifier corresponding to one version of a model in ASDC
+          required: true
+          type: string
+  /service-design-and-creation/models/model/{model-invariant-id}/model-vers/model-ver/{model-version-id}:
+    get:
+      tags:
+        - ServiceDesignAndCreation
+      summary: returns model-ver
+      description: returns model-ver
+      operationId: getServiceDesignAndCreationModelsModelModelVersModelVer
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "200":
+          description: successful operation
+          schema:
+              $ref: "#/definitions/model-ver"
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: model-invariant-id
+          in: path
+          description: Unique identifier corresponding to the main definition of a model in ASDC
+          required: true
+          type: string
+        - name: model-version-id
+          in: path
+          description: Unique identifier corresponding to one version of a model in ASDC
+          required: true
+          type: string
+        - name: model-type
+          in: query
+          description: Type of the model, e.g., service, resource, widget, etc.
+          required: false
+          type: string
+        - name: model-name
+          in: query
+          description: Name of the model, which can change from version to version.
+          required: false
+          type: string
+        - name: model-version
+          in: query
+          description: Version
+          required: false
+          type: string
+    put:
+      tags:
+        - ServiceDesignAndCreation
+      summary: create or update an existing model-ver
+      description: create or update an existing model-ver
+      operationId: createOrUpdateServiceDesignAndCreationModelsModelModelVersModelVer
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: model-invariant-id
+          in: path
+          description: Unique identifier corresponding to the main definition of a model in ASDC
+          required: true
+          type: string
+        - name: model-version-id
+          in: path
+          description: Unique identifier corresponding to one version of a model in ASDC
+          required: true
+          type: string
+        - name: body
+          in: body
+          description: model-ver object that needs to be created or updated
+          required: true
+          schema:
+            $ref: "#/definitions/model-ver"
+    delete:
+      tags:
+        - ServiceDesignAndCreation
+      summary: delete an existing model-ver
+      description: delete an existing model-ver
+      operationId: deleteServiceDesignAndCreationModelsModelModelVersModelVer
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: model-invariant-id
+          in: path
+          description: Unique identifier corresponding to the main definition of a model in ASDC
+          required: true
+          type: string
+        - name: model-version-id
+          in: path
+          description: Unique identifier corresponding to one version of a model in ASDC
+          required: true
+          type: string
+        - name: resource-version
+          in: query
+          description: resource-version for concurrency
+          required: true
+          type: string
+  /service-design-and-creation/models/model/{model-invariant-id}/model-vers:
+    get:
+      tags:
+        - ServiceDesignAndCreation
+      summary: returns model-vers
+      description: returns model-vers
+      operationId: getServiceDesignAndCreationModelsModelModelVers
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "200":
+          description: successful operation
+          schema:
+              $ref: "#/definitions/model-vers"
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: model-invariant-id
+          in: path
+          description: Unique identifier corresponding to the main definition of a model in ASDC
+          required: true
+          type: string
+        - name: model-type
+          in: query
+          description: Type of the model, e.g., service, resource, widget, etc.
+          required: false
+          type: string
+  /service-design-and-creation/models/model/{model-invariant-id}/relationship-list/relationship:
+    put:
+      tags:
+        - ServiceDesignAndCreation
+      summary: see node definition for valid relationships
+      operationId: createOrUpdateServiceDesignAndCreationModelsModelRelationshipListRelationship
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: model-invariant-id
+          in: path
+          description: Unique identifier corresponding to the main definition of a model in ASDC
+          required: true
+          type: string
+        - name: body
+          in: body
+          description: relationship object that needs to be created or updated
+          required: true
+          schema:
+            $ref: "#/definitions/relationship"
+    delete:
+      tags:
+        - ServiceDesignAndCreation
+      summary: delete an existing relationship
+      description: delete an existing relationship
+      operationId: deleteServiceDesignAndCreationModelsModelRelationshipListRelationship
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: model-invariant-id
+          in: path
+          description: Unique identifier corresponding to the main definition of a model in ASDC
+          required: true
+          type: string
+  /service-design-and-creation/models/model/{model-invariant-id}:
+    get:
+      tags:
+        - ServiceDesignAndCreation
+      summary: returns model
+      description: returns model
+      operationId: getServiceDesignAndCreationModelsModel
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "200":
+          description: successful operation
+          schema:
+              $ref: "#/definitions/model"
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: model-invariant-id
+          in: path
+          description: Unique identifier corresponding to the main definition of a model in ASDC
+          required: true
+          type: string
+        - name: model-type
+          in: query
+          description: Type of the model, e.g., service, resource, widget, etc.
+          required: false
+          type: string
+    put:
+      tags:
+        - ServiceDesignAndCreation
+      summary: create or update an existing model
+      description: create or update an existing model
+      operationId: createOrUpdateServiceDesignAndCreationModelsModel
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: model-invariant-id
+          in: path
+          description: Unique identifier corresponding to the main definition of a model in ASDC
+          required: true
+          type: string
+        - name: body
+          in: body
+          description: model object that needs to be created or updated
+          required: true
+          schema:
+            $ref: "#/definitions/model"
+    delete:
+      tags:
+        - ServiceDesignAndCreation
+      summary: delete an existing model
+      description: delete an existing model
+      operationId: deleteServiceDesignAndCreationModelsModel
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: model-invariant-id
+          in: path
+          description: Unique identifier corresponding to the main definition of a model in ASDC
+          required: true
+          type: string
+        - name: resource-version
+          in: query
+          description: resource-version for concurrency
+          required: true
+          type: string
+  /service-design-and-creation/models:
+    get:
+      tags:
+        - ServiceDesignAndCreation
+      summary: returns models
+      description: returns models
+      operationId: getServiceDesignAndCreationModels
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "200":
+          description: successful operation
+          schema:
+              $ref: "#/definitions/models"
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+  /service-design-and-creation/named-queries/named-query/{named-query-uuid}/named-query-elements/named-query-element/{named-query-element-uuid}/related-lookups/related-lookup/{related-lookup-uuid}/relationship-list/relationship:
+    put:
+      tags:
+        - ServiceDesignAndCreation
+      summary: see node definition for valid relationships
+      operationId: createOrUpdateServiceDesignAndCreationNamedQueriesNamedQueryNamedQueryElementsNamedQueryElementRelatedLookupsRelatedLookupRelationshipListRelationship
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: named-query-uuid
+          in: path
+          required: true
+          type: string
+        - name: named-query-element-uuid
+          in: path
+          required: true
+          type: string
+        - name: related-lookup-uuid
+          in: path
+          required: true
+          type: string
+        - name: body
+          in: body
+          description: relationship object that needs to be created or updated
+          required: true
+          schema:
+            $ref: "#/definitions/relationship"
+    delete:
+      tags:
+        - ServiceDesignAndCreation
+      summary: delete an existing relationship
+      description: delete an existing relationship
+      operationId: deleteServiceDesignAndCreationNamedQueriesNamedQueryNamedQueryElementsNamedQueryElementRelatedLookupsRelatedLookupRelationshipListRelationship
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: named-query-uuid
+          in: path
+          required: true
+          type: string
+        - name: named-query-element-uuid
+          in: path
+          required: true
+          type: string
+        - name: related-lookup-uuid
+          in: path
+          required: true
+          type: string
+  /service-design-and-creation/named-queries/named-query/{named-query-uuid}/named-query-elements/named-query-element/{named-query-element-uuid}/related-lookups/related-lookup/{related-lookup-uuid}:
+    get:
+      tags:
+        - ServiceDesignAndCreation
+      summary: returns related-lookup
+      description: returns related-lookup
+      operationId: getServiceDesignAndCreationNamedQueriesNamedQueryNamedQueryElementsNamedQueryElementRelatedLookupsRelatedLookup
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "200":
+          description: successful operation
+          schema:
+              $ref: "#/definitions/related-lookup"
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: named-query-uuid
+          in: path
+          required: true
+          type: string
+        - name: named-query-element-uuid
+          in: path
+          required: true
+          type: string
+        - name: related-lookup-uuid
+          in: path
+          required: true
+          type: string
+        - name: named-query-name
+          in: query
+          required: false
+          type: string
+    put:
+      tags:
+        - ServiceDesignAndCreation
+      summary: create or update an existing related-lookup
+      description: create or update an existing related-lookup
+      operationId: createOrUpdateServiceDesignAndCreationNamedQueriesNamedQueryNamedQueryElementsNamedQueryElementRelatedLookupsRelatedLookup
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: named-query-uuid
+          in: path
+          required: true
+          type: string
+        - name: named-query-element-uuid
+          in: path
+          required: true
+          type: string
+        - name: related-lookup-uuid
+          in: path
+          required: true
+          type: string
+        - name: body
+          in: body
+          description: related-lookup object that needs to be created or updated
+          required: true
+          schema:
+            $ref: "#/definitions/related-lookup"
+    delete:
+      tags:
+        - ServiceDesignAndCreation
+      summary: delete an existing related-lookup
+      description: delete an existing related-lookup
+      operationId: deleteServiceDesignAndCreationNamedQueriesNamedQueryNamedQueryElementsNamedQueryElementRelatedLookupsRelatedLookup
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: named-query-uuid
+          in: path
+          required: true
+          type: string
+        - name: named-query-element-uuid
+          in: path
+          required: true
+          type: string
+        - name: related-lookup-uuid
+          in: path
+          required: true
+          type: string
+        - name: resource-version
+          in: query
+          description: resource-version for concurrency
+          required: true
+          type: string
+  /service-design-and-creation/named-queries/named-query/{named-query-uuid}/named-query-elements/named-query-element/{named-query-element-uuid}/related-lookups:
+    get:
+      tags:
+        - ServiceDesignAndCreation
+      summary: returns related-lookups
+      description: returns related-lookups
+      operationId: getServiceDesignAndCreationNamedQueriesNamedQueryNamedQueryElementsNamedQueryElementRelatedLookups
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "200":
+          description: successful operation
+          schema:
+              $ref: "#/definitions/related-lookups"
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: named-query-uuid
+          in: path
+          required: true
+          type: string
+        - name: named-query-element-uuid
+          in: path
+          required: true
+          type: string
+        - name: named-query-name
+          in: query
+          required: false
+          type: string
+  /service-design-and-creation/named-queries/named-query/{named-query-uuid}/named-query-elements/named-query-element/{named-query-element-uuid}/property-constraints/property-constraint/{property-constraint-uuid}:
+    get:
+      tags:
+        - ServiceDesignAndCreation
+      summary: returns property-constraint
+      description: returns property-constraint
+      operationId: getServiceDesignAndCreationNamedQueriesNamedQueryNamedQueryElementsNamedQueryElementPropertyConstraintsPropertyConstraint
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "200":
+          description: successful operation
+          schema:
+              $ref: "#/definitions/property-constraint"
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: named-query-uuid
+          in: path
+          required: true
+          type: string
+        - name: named-query-element-uuid
+          in: path
+          required: true
+          type: string
+        - name: property-constraint-uuid
+          in: path
+          required: true
+          type: string
+        - name: named-query-name
+          in: query
+          required: false
+          type: string
+    put:
+      tags:
+        - ServiceDesignAndCreation
+      summary: create or update an existing property-constraint
+      description: create or update an existing property-constraint
+      operationId: createOrUpdateServiceDesignAndCreationNamedQueriesNamedQueryNamedQueryElementsNamedQueryElementPropertyConstraintsPropertyConstraint
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: named-query-uuid
+          in: path
+          required: true
+          type: string
+        - name: named-query-element-uuid
+          in: path
+          required: true
+          type: string
+        - name: property-constraint-uuid
+          in: path
+          required: true
+          type: string
+        - name: body
+          in: body
+          description: property-constraint object that needs to be created or updated
+          required: true
+          schema:
+            $ref: "#/definitions/property-constraint"
+    delete:
+      tags:
+        - ServiceDesignAndCreation
+      summary: delete an existing property-constraint
+      description: delete an existing property-constraint
+      operationId: deleteServiceDesignAndCreationNamedQueriesNamedQueryNamedQueryElementsNamedQueryElementPropertyConstraintsPropertyConstraint
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: named-query-uuid
+          in: path
+          required: true
+          type: string
+        - name: named-query-element-uuid
+          in: path
+          required: true
+          type: string
+        - name: property-constraint-uuid
+          in: path
+          required: true
+          type: string
+        - name: resource-version
+          in: query
+          description: resource-version for concurrency
+          required: true
+          type: string
+  /service-design-and-creation/named-queries/named-query/{named-query-uuid}/named-query-elements/named-query-element/{named-query-element-uuid}/property-constraints:
+    get:
+      tags:
+        - ServiceDesignAndCreation
+      summary: returns property-constraints
+      description: returns property-constraints
+      operationId: getServiceDesignAndCreationNamedQueriesNamedQueryNamedQueryElementsNamedQueryElementPropertyConstraints
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "200":
+          description: successful operation
+          schema:
+              $ref: "#/definitions/property-constraints"
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: named-query-uuid
+          in: path
+          required: true
+          type: string
+        - name: named-query-element-uuid
+          in: path
+          required: true
+          type: string
+        - name: named-query-name
+          in: query
+          required: false
+          type: string
+  /service-design-and-creation/named-queries/named-query/{named-query-uuid}/named-query-elements/named-query-element/{named-query-element-uuid}/relationship-list/relationship:
+    put:
+      tags:
+        - ServiceDesignAndCreation
+      summary: see node definition for valid relationships
+      operationId: createOrUpdateServiceDesignAndCreationNamedQueriesNamedQueryNamedQueryElementsNamedQueryElementRelationshipListRelationship
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: named-query-uuid
+          in: path
+          required: true
+          type: string
+        - name: named-query-element-uuid
+          in: path
+          required: true
+          type: string
+        - name: body
+          in: body
+          description: relationship object that needs to be created or updated
+          required: true
+          schema:
+            $ref: "#/definitions/relationship"
+    delete:
+      tags:
+        - ServiceDesignAndCreation
+      summary: delete an existing relationship
+      description: delete an existing relationship
+      operationId: deleteServiceDesignAndCreationNamedQueriesNamedQueryNamedQueryElementsNamedQueryElementRelationshipListRelationship
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: named-query-uuid
+          in: path
+          required: true
+          type: string
+        - name: named-query-element-uuid
+          in: path
+          required: true
+          type: string
+  /service-design-and-creation/named-queries/named-query/{named-query-uuid}/named-query-elements/named-query-element/{named-query-element-uuid}:
+    get:
+      tags:
+        - ServiceDesignAndCreation
+      summary: returns named-query-element
+      description: returns named-query-element
+      operationId: getServiceDesignAndCreationNamedQueriesNamedQueryNamedQueryElementsNamedQueryElement
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "200":
+          description: successful operation
+          schema:
+              $ref: "#/definitions/named-query-element"
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: named-query-uuid
+          in: path
+          required: true
+          type: string
+        - name: named-query-element-uuid
+          in: path
+          required: true
+          type: string
+        - name: named-query-name
+          in: query
+          required: false
+          type: string
+    put:
+      tags:
+        - ServiceDesignAndCreation
+      summary: create or update an existing named-query-element
+      description: create or update an existing named-query-element
+      operationId: createOrUpdateServiceDesignAndCreationNamedQueriesNamedQueryNamedQueryElementsNamedQueryElement
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: named-query-uuid
+          in: path
+          required: true
+          type: string
+        - name: named-query-element-uuid
+          in: path
+          required: true
+          type: string
+        - name: body
+          in: body
+          description: named-query-element object that needs to be created or updated
+          required: true
+          schema:
+            $ref: "#/definitions/named-query-element"
+    delete:
+      tags:
+        - ServiceDesignAndCreation
+      summary: delete an existing named-query-element
+      description: delete an existing named-query-element
+      operationId: deleteServiceDesignAndCreationNamedQueriesNamedQueryNamedQueryElementsNamedQueryElement
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: named-query-uuid
+          in: path
+          required: true
+          type: string
+        - name: named-query-element-uuid
+          in: path
+          required: true
+          type: string
+        - name: resource-version
+          in: query
+          description: resource-version for concurrency
+          required: true
+          type: string
+  /service-design-and-creation/named-queries/named-query/{named-query-uuid}/named-query-elements:
+    get:
+      tags:
+        - ServiceDesignAndCreation
+      summary: returns named-query-elements
+      description: returns named-query-elements
+      operationId: getServiceDesignAndCreationNamedQueriesNamedQueryNamedQueryElements
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "200":
+          description: successful operation
+          schema:
+              $ref: "#/definitions/named-query-elements"
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: named-query-uuid
+          in: path
+          required: true
+          type: string
+        - name: named-query-name
+          in: query
+          required: false
+          type: string
+  /service-design-and-creation/named-queries/named-query/{named-query-uuid}/relationship-list/relationship:
+    put:
+      tags:
+        - ServiceDesignAndCreation
+      summary: see node definition for valid relationships
+      operationId: createOrUpdateServiceDesignAndCreationNamedQueriesNamedQueryRelationshipListRelationship
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: named-query-uuid
+          in: path
+          required: true
+          type: string
+        - name: body
+          in: body
+          description: relationship object that needs to be created or updated
+          required: true
+          schema:
+            $ref: "#/definitions/relationship"
+    delete:
+      tags:
+        - ServiceDesignAndCreation
+      summary: delete an existing relationship
+      description: delete an existing relationship
+      operationId: deleteServiceDesignAndCreationNamedQueriesNamedQueryRelationshipListRelationship
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: named-query-uuid
+          in: path
+          required: true
+          type: string
+  /service-design-and-creation/named-queries/named-query/{named-query-uuid}:
+    get:
+      tags:
+        - ServiceDesignAndCreation
+      summary: returns named-query
+      description: returns named-query
+      operationId: getServiceDesignAndCreationNamedQueriesNamedQuery
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "200":
+          description: successful operation
+          schema:
+              $ref: "#/definitions/named-query"
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: named-query-uuid
+          in: path
+          required: true
+          type: string
+        - name: named-query-name
+          in: query
+          required: false
+          type: string
+    put:
+      tags:
+        - ServiceDesignAndCreation
+      summary: create or update an existing named-query
+      description: create or update an existing named-query
+      operationId: createOrUpdateServiceDesignAndCreationNamedQueriesNamedQuery
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: named-query-uuid
+          in: path
+          required: true
+          type: string
+        - name: body
+          in: body
+          description: named-query object that needs to be created or updated
+          required: true
+          schema:
+            $ref: "#/definitions/named-query"
+    delete:
+      tags:
+        - ServiceDesignAndCreation
+      summary: delete an existing named-query
+      description: delete an existing named-query
+      operationId: deleteServiceDesignAndCreationNamedQueriesNamedQuery
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: named-query-uuid
+          in: path
+          required: true
+          type: string
+        - name: resource-version
+          in: query
+          description: resource-version for concurrency
+          required: true
+          type: string
+  /service-design-and-creation/named-queries:
+    get:
+      tags:
+        - ServiceDesignAndCreation
+      summary: returns named-queries
+      description: returns named-queries
+      operationId: getServiceDesignAndCreationNamedQueries
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "200":
+          description: successful operation
+          schema:
+              $ref: "#/definitions/named-queries"
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+  /network/logical-links/logical-link/{link-name}/relationship-list/relationship:
+    put:
+      tags:
+        - Network
+      summary: see node definition for valid relationships
+      operationId: createOrUpdateNetworkLogicalLinksLogicalLinkRelationshipListRelationship
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: link-name
+          in: path
+          description: e.g., evc-name, or vnf-nameA_interface-nameA_vnf-nameZ_interface-nameZ
+          required: true
+          type: string
+        - name: body
+          in: body
+          description: relationship object that needs to be created or updated
+          required: true
+          schema:
+            $ref: "#/definitions/relationship"
+    delete:
+      tags:
+        - Network
+      summary: delete an existing relationship
+      description: delete an existing relationship
+      operationId: deleteNetworkLogicalLinksLogicalLinkRelationshipListRelationship
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: link-name
+          in: path
+          description: e.g., evc-name, or vnf-nameA_interface-nameA_vnf-nameZ_interface-nameZ
+          required: true
+          type: string
+  /network/logical-links/logical-link/{link-name}:
+    get:
+      tags:
+        - Network
+      summary: returns logical-link
+      description: returns logical-link
+      operationId: getNetworkLogicalLinksLogicalLink
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "200":
+          description: successful operation
+          schema:
+              $ref: "#/definitions/logical-link"
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: link-name
+          in: path
+          description: e.g., evc-name, or vnf-nameA_interface-nameA_vnf-nameZ_interface-nameZ
+          required: true
+          type: string
+        - name: model-invariant-id
+          in: query
+          description: the ASDC model id for this resource or service model.
+          required: false
+          type: string
+        - name: model-version-id
+          in: query
+          description: the ASDC model version for this resource or service model.
+          required: false
+          type: string
+        - name: widget-model-id
+          in: query
+          description: the ASDC data dictionary widget model. This maps directly to the A&AI widget.
+          required: false
+          type: string
+        - name: widget-model-version
+          in: query
+          description: the ASDC data dictionary version of the widget model.This maps directly to the A&AI version of the widget.
+          required: false
+          type: string
+        - name: prov-status
+          in: query
+          description: Trigger for operational monitoring of this VNF by BAU Service Assurance systems.
+          required: false
+          type: string
+        - name: link-id
+          in: query
+          description: UUID of the logical-link, SDNC generates this.
+          required: false
+          type: string
+        - name: circuit-id
+          in: query
+          description: Circuit id
+          required: false
+          type: string
+        - name: purpose
+          in: query
+          description: Reason for this entity, role it is playing
+          required: false
+          type: string
+    put:
+      tags:
+        - Network
+      summary: create or update an existing logical-link
+      description: create or update an existing logical-link
+      operationId: createOrUpdateNetworkLogicalLinksLogicalLink
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: link-name
+          in: path
+          description: e.g., evc-name, or vnf-nameA_interface-nameA_vnf-nameZ_interface-nameZ
+          required: true
+          type: string
+        - name: body
+          in: body
+          description: logical-link object that needs to be created or updated
+          required: true
+          schema:
+            $ref: "#/definitions/logical-link"
+    delete:
+      tags:
+        - Network
+      summary: delete an existing logical-link
+      description: delete an existing logical-link
+      operationId: deleteNetworkLogicalLinksLogicalLink
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: link-name
+          in: path
+          description: e.g., evc-name, or vnf-nameA_interface-nameA_vnf-nameZ_interface-nameZ
+          required: true
+          type: string
+        - name: resource-version
+          in: query
+          description: resource-version for concurrency
+          required: true
+          type: string
+  /network/logical-links:
+    get:
+      tags:
+        - Network
+      summary: returns logical-links
+      description: returns logical-links
+      operationId: getNetworkLogicalLinks
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "200":
+          description: successful operation
+          schema:
+              $ref: "#/definitions/logical-links"
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+  /network/site-pair-sets/site-pair-set/{site-pair-set-id}/routing-instances/routing-instance/{routing-instance-id}/site-pairs/site-pair/{site-pair-id}/classes-of-service/class-of-service/{cos}/relationship-list/relationship:
+    put:
+      tags:
+        - Network
+      summary: see node definition for valid relationships
+      operationId: createOrUpdateNetworkSitePairSetsSitePairSetRoutingInstancesRoutingInstanceSitePairsSitePairClassesOfServiceClassOfServiceRelationshipListRelationship
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: site-pair-set-id
+          in: path
+          description: Unique id of site pair set.
+          required: true
+          type: string
+        - name: routing-instance-id
+          in: path
+          description: Unique id of routing instance
+          required: true
+          type: string
+        - name: site-pair-id
+          in: path
+          description: unique identifier of probe
+          required: true
+          type: string
+        - name: cos
+          in: path
+          description: unique identifier of probe
+          required: true
+          type: string
+        - name: body
+          in: body
+          description: relationship object that needs to be created or updated
+          required: true
+          schema:
+            $ref: "#/definitions/relationship"
+    delete:
+      tags:
+        - Network
+      summary: delete an existing relationship
+      description: delete an existing relationship
+      operationId: deleteNetworkSitePairSetsSitePairSetRoutingInstancesRoutingInstanceSitePairsSitePairClassesOfServiceClassOfServiceRelationshipListRelationship
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: site-pair-set-id
+          in: path
+          description: Unique id of site pair set.
+          required: true
+          type: string
+        - name: routing-instance-id
+          in: path
+          description: Unique id of routing instance
+          required: true
+          type: string
+        - name: site-pair-id
+          in: path
+          description: unique identifier of probe
+          required: true
+          type: string
+        - name: cos
+          in: path
+          description: unique identifier of probe
+          required: true
+          type: string
+  /network/site-pair-sets/site-pair-set/{site-pair-set-id}/routing-instances/routing-instance/{routing-instance-id}/site-pairs/site-pair/{site-pair-id}/classes-of-service/class-of-service/{cos}:
+    get:
+      tags:
+        - Network
+      summary: returns class-of-service
+      description: returns class-of-service
+      operationId: getNetworkSitePairSetsSitePairSetRoutingInstancesRoutingInstanceSitePairsSitePairClassesOfServiceClassOfService
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "200":
+          description: successful operation
+          schema:
+              $ref: "#/definitions/class-of-service"
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: site-pair-set-id
+          in: path
+          description: Unique id of site pair set.
+          required: true
+          type: string
+        - name: routing-instance-id
+          in: path
+          description: Unique id of routing instance
+          required: true
+          type: string
+        - name: site-pair-id
+          in: path
+          description: unique identifier of probe
+          required: true
+          type: string
+        - name: cos
+          in: path
+          description: unique identifier of probe
+          required: true
+          type: string
+    put:
+      tags:
+        - Network
+      summary: create or update an existing class-of-service
+      description: create or update an existing class-of-service
+      operationId: createOrUpdateNetworkSitePairSetsSitePairSetRoutingInstancesRoutingInstanceSitePairsSitePairClassesOfServiceClassOfService
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: site-pair-set-id
+          in: path
+          description: Unique id of site pair set.
+          required: true
+          type: string
+        - name: routing-instance-id
+          in: path
+          description: Unique id of routing instance
+          required: true
+          type: string
+        - name: site-pair-id
+          in: path
+          description: unique identifier of probe
+          required: true
+          type: string
+        - name: cos
+          in: path
+          description: unique identifier of probe
+          required: true
+          type: string
+        - name: body
+          in: body
+          description: class-of-service object that needs to be created or updated
+          required: true
+          schema:
+            $ref: "#/definitions/class-of-service"
+    delete:
+      tags:
+        - Network
+      summary: delete an existing class-of-service
+      description: delete an existing class-of-service
+      operationId: deleteNetworkSitePairSetsSitePairSetRoutingInstancesRoutingInstanceSitePairsSitePairClassesOfServiceClassOfService
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: site-pair-set-id
+          in: path
+          description: Unique id of site pair set.
+          required: true
+          type: string
+        - name: routing-instance-id
+          in: path
+          description: Unique id of routing instance
+          required: true
+          type: string
+        - name: site-pair-id
+          in: path
+          description: unique identifier of probe
+          required: true
+          type: string
+        - name: cos
+          in: path
+          description: unique identifier of probe
+          required: true
+          type: string
+        - name: resource-version
+          in: query
+          description: resource-version for concurrency
+          required: true
+          type: string
+  /network/site-pair-sets/site-pair-set/{site-pair-set-id}/routing-instances/routing-instance/{routing-instance-id}/site-pairs/site-pair/{site-pair-id}/classes-of-service:
+    get:
+      tags:
+        - Network
+      summary: returns classes-of-service
+      description: returns classes-of-service
+      operationId: getNetworkSitePairSetsSitePairSetRoutingInstancesRoutingInstanceSitePairsSitePairClassesOfService
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "200":
+          description: successful operation
+          schema:
+              $ref: "#/definitions/classes-of-service"
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: site-pair-set-id
+          in: path
+          description: Unique id of site pair set.
+          required: true
+          type: string
+        - name: routing-instance-id
+          in: path
+          description: Unique id of routing instance
+          required: true
+          type: string
+        - name: site-pair-id
+          in: path
+          description: unique identifier of probe
+          required: true
+          type: string
+  /network/site-pair-sets/site-pair-set/{site-pair-set-id}/routing-instances/routing-instance/{routing-instance-id}/site-pairs/site-pair/{site-pair-id}/relationship-list/relationship:
+    put:
+      tags:
+        - Network
+      summary: see node definition for valid relationships
+      operationId: createOrUpdateNetworkSitePairSetsSitePairSetRoutingInstancesRoutingInstanceSitePairsSitePairRelationshipListRelationship
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: site-pair-set-id
+          in: path
+          description: Unique id of site pair set.
+          required: true
+          type: string
+        - name: routing-instance-id
+          in: path
+          description: Unique id of routing instance
+          required: true
+          type: string
+        - name: site-pair-id
+          in: path
+          description: unique identifier of probe
+          required: true
+          type: string
+        - name: body
+          in: body
+          description: relationship object that needs to be created or updated
+          required: true
+          schema:
+            $ref: "#/definitions/relationship"
+    delete:
+      tags:
+        - Network
+      summary: delete an existing relationship
+      description: delete an existing relationship
+      operationId: deleteNetworkSitePairSetsSitePairSetRoutingInstancesRoutingInstanceSitePairsSitePairRelationshipListRelationship
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: site-pair-set-id
+          in: path
+          description: Unique id of site pair set.
+          required: true
+          type: string
+        - name: routing-instance-id
+          in: path
+          description: Unique id of routing instance
+          required: true
+          type: string
+        - name: site-pair-id
+          in: path
+          description: unique identifier of probe
+          required: true
+          type: string
+  /network/site-pair-sets/site-pair-set/{site-pair-set-id}/routing-instances/routing-instance/{routing-instance-id}/site-pairs/site-pair/{site-pair-id}:
+    get:
+      tags:
+        - Network
+      summary: returns site-pair
+      description: returns site-pair
+      operationId: getNetworkSitePairSetsSitePairSetRoutingInstancesRoutingInstanceSitePairsSitePair
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "200":
+          description: successful operation
+          schema:
+              $ref: "#/definitions/site-pair"
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: site-pair-set-id
+          in: path
+          description: Unique id of site pair set.
+          required: true
+          type: string
+        - name: routing-instance-id
+          in: path
+          description: Unique id of routing instance
+          required: true
+          type: string
+        - name: site-pair-id
+          in: path
+          description: unique identifier of probe
+          required: true
+          type: string
+    put:
+      tags:
+        - Network
+      summary: create or update an existing site-pair
+      description: create or update an existing site-pair
+      operationId: createOrUpdateNetworkSitePairSetsSitePairSetRoutingInstancesRoutingInstanceSitePairsSitePair
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: site-pair-set-id
+          in: path
+          description: Unique id of site pair set.
+          required: true
+          type: string
+        - name: routing-instance-id
+          in: path
+          description: Unique id of routing instance
+          required: true
+          type: string
+        - name: site-pair-id
+          in: path
+          description: unique identifier of probe
+          required: true
+          type: string
+        - name: body
+          in: body
+          description: site-pair object that needs to be created or updated
+          required: true
+          schema:
+            $ref: "#/definitions/site-pair"
+    delete:
+      tags:
+        - Network
+      summary: delete an existing site-pair
+      description: delete an existing site-pair
+      operationId: deleteNetworkSitePairSetsSitePairSetRoutingInstancesRoutingInstanceSitePairsSitePair
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: site-pair-set-id
+          in: path
+          description: Unique id of site pair set.
+          required: true
+          type: string
+        - name: routing-instance-id
+          in: path
+          description: Unique id of routing instance
+          required: true
+          type: string
+        - name: site-pair-id
+          in: path
+          description: unique identifier of probe
+          required: true
+          type: string
+        - name: resource-version
+          in: query
+          description: resource-version for concurrency
+          required: true
+          type: string
+  /network/site-pair-sets/site-pair-set/{site-pair-set-id}/routing-instances/routing-instance/{routing-instance-id}/site-pairs:
+    get:
+      tags:
+        - Network
+      summary: returns site-pairs
+      description: returns site-pairs
+      operationId: getNetworkSitePairSetsSitePairSetRoutingInstancesRoutingInstanceSitePairs
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "200":
+          description: successful operation
+          schema:
+              $ref: "#/definitions/site-pairs"
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: site-pair-set-id
+          in: path
+          description: Unique id of site pair set.
+          required: true
+          type: string
+        - name: routing-instance-id
+          in: path
+          description: Unique id of routing instance
+          required: true
+          type: string
+  /network/site-pair-sets/site-pair-set/{site-pair-set-id}/routing-instances/routing-instance/{routing-instance-id}/relationship-list/relationship:
+    put:
+      tags:
+        - Network
+      summary: see node definition for valid relationships
+      operationId: createOrUpdateNetworkSitePairSetsSitePairSetRoutingInstancesRoutingInstanceRelationshipListRelationship
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: site-pair-set-id
+          in: path
+          description: Unique id of site pair set.
+          required: true
+          type: string
+        - name: routing-instance-id
+          in: path
+          description: Unique id of routing instance
+          required: true
+          type: string
+        - name: body
+          in: body
+          description: relationship object that needs to be created or updated
+          required: true
+          schema:
+            $ref: "#/definitions/relationship"
+    delete:
+      tags:
+        - Network
+      summary: delete an existing relationship
+      description: delete an existing relationship
+      operationId: deleteNetworkSitePairSetsSitePairSetRoutingInstancesRoutingInstanceRelationshipListRelationship
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: site-pair-set-id
+          in: path
+          description: Unique id of site pair set.
+          required: true
+          type: string
+        - name: routing-instance-id
+          in: path
+          description: Unique id of routing instance
+          required: true
+          type: string
+  /network/site-pair-sets/site-pair-set/{site-pair-set-id}/routing-instances/routing-instance/{routing-instance-id}:
+    get:
+      tags:
+        - Network
+      summary: returns routing-instance
+      description: returns routing-instance
+      operationId: getNetworkSitePairSetsSitePairSetRoutingInstancesRoutingInstance
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "200":
+          description: successful operation
+          schema:
+              $ref: "#/definitions/routing-instance"
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: site-pair-set-id
+          in: path
+          description: Unique id of site pair set.
+          required: true
+          type: string
+        - name: routing-instance-id
+          in: path
+          description: Unique id of routing instance
+          required: true
+          type: string
+    put:
+      tags:
+        - Network
+      summary: create or update an existing routing-instance
+      description: create or update an existing routing-instance
+      operationId: createOrUpdateNetworkSitePairSetsSitePairSetRoutingInstancesRoutingInstance
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: site-pair-set-id
+          in: path
+          description: Unique id of site pair set.
+          required: true
+          type: string
+        - name: routing-instance-id
+          in: path
+          description: Unique id of routing instance
+          required: true
+          type: string
+        - name: body
+          in: body
+          description: routing-instance object that needs to be created or updated
+          required: true
+          schema:
+            $ref: "#/definitions/routing-instance"
+    delete:
+      tags:
+        - Network
+      summary: delete an existing routing-instance
+      description: delete an existing routing-instance
+      operationId: deleteNetworkSitePairSetsSitePairSetRoutingInstancesRoutingInstance
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: site-pair-set-id
+          in: path
+          description: Unique id of site pair set.
+          required: true
+          type: string
+        - name: routing-instance-id
+          in: path
+          description: Unique id of routing instance
+          required: true
+          type: string
+        - name: resource-version
+          in: query
+          description: resource-version for concurrency
+          required: true
+          type: string
+  /network/site-pair-sets/site-pair-set/{site-pair-set-id}/routing-instances:
+    get:
+      tags:
+        - Network
+      summary: returns routing-instances
+      description: returns routing-instances
+      operationId: getNetworkSitePairSetsSitePairSetRoutingInstances
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "200":
+          description: successful operation
+          schema:
+              $ref: "#/definitions/routing-instances"
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: site-pair-set-id
+          in: path
+          description: Unique id of site pair set.
+          required: true
+          type: string
+  /network/site-pair-sets/site-pair-set/{site-pair-set-id}/relationship-list/relationship:
+    put:
+      tags:
+        - Network
+      summary: see node definition for valid relationships
+      operationId: createOrUpdateNetworkSitePairSetsSitePairSetRelationshipListRelationship
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: site-pair-set-id
+          in: path
+          description: Unique id of site pair set.
+          required: true
+          type: string
+        - name: body
+          in: body
+          description: relationship object that needs to be created or updated
+          required: true
+          schema:
+            $ref: "#/definitions/relationship"
+    delete:
+      tags:
+        - Network
+      summary: delete an existing relationship
+      description: delete an existing relationship
+      operationId: deleteNetworkSitePairSetsSitePairSetRelationshipListRelationship
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: site-pair-set-id
+          in: path
+          description: Unique id of site pair set.
+          required: true
+          type: string
+  /network/site-pair-sets/site-pair-set/{site-pair-set-id}:
+    get:
+      tags:
+        - Network
+      summary: returns site-pair-set
+      description: returns site-pair-set
+      operationId: getNetworkSitePairSetsSitePairSet
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "200":
+          description: successful operation
+          schema:
+              $ref: "#/definitions/site-pair-set"
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: site-pair-set-id
+          in: path
+          description: Unique id of site pair set.
+          required: true
+          type: string
+    put:
+      tags:
+        - Network
+      summary: create or update an existing site-pair-set
+      description: create or update an existing site-pair-set
+      operationId: createOrUpdateNetworkSitePairSetsSitePairSet
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: site-pair-set-id
+          in: path
+          description: Unique id of site pair set.
+          required: true
+          type: string
+        - name: body
+          in: body
+          description: site-pair-set object that needs to be created or updated
+          required: true
+          schema:
+            $ref: "#/definitions/site-pair-set"
+    delete:
+      tags:
+        - Network
+      summary: delete an existing site-pair-set
+      description: delete an existing site-pair-set
+      operationId: deleteNetworkSitePairSetsSitePairSet
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: site-pair-set-id
+          in: path
+          description: Unique id of site pair set.
+          required: true
+          type: string
+        - name: resource-version
+          in: query
+          description: resource-version for concurrency
+          required: true
+          type: string
+  /network/site-pair-sets:
+    get:
+      tags:
+        - Network
+      summary: returns site-pair-sets
+      description: returns site-pair-sets
+      operationId: getNetworkSitePairSets
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "200":
+          description: successful operation
+          schema:
+              $ref: "#/definitions/site-pair-sets"
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+  /network/vpn-bindings/vpn-binding/{vpn-id}/route-targets/route-target/{global-route-target}/{route-target-role}/relationship-list/relationship:
+    put:
+      tags:
+        - Network
+      summary: see node definition for valid relationships
+      operationId: createOrUpdateNetworkVpnBindingsVpnBindingRouteTargetsRouteTargetRelationshipListRelationship
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: vpn-id
+          in: path
+          description: VPN ID, globally unique within A&AI
+          required: true
+          type: string
+        - name: global-route-target
+          in: path
+          description: Number used to identify an RT, globally unique in the network
+          required: true
+          type: string
+        - name: route-target-role
+          in: path
+          description: Role assigned to this route target
+          required: true
+          type: string
+        - name: body
+          in: body
+          description: relationship object that needs to be created or updated
+          required: true
+          schema:
+            $ref: "#/definitions/relationship"
+    delete:
+      tags:
+        - Network
+      summary: delete an existing relationship
+      description: delete an existing relationship
+      operationId: deleteNetworkVpnBindingsVpnBindingRouteTargetsRouteTargetRelationshipListRelationship
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: vpn-id
+          in: path
+          description: VPN ID, globally unique within A&AI
+          required: true
+          type: string
+        - name: global-route-target
+          in: path
+          description: Number used to identify an RT, globally unique in the network
+          required: true
+          type: string
+        - name: route-target-role
+          in: path
+          description: Role assigned to this route target
+          required: true
+          type: string
+  /network/vpn-bindings/vpn-binding/{vpn-id}/route-targets/route-target/{global-route-target}/{route-target-role}:
+    get:
+      tags:
+        - Network
+      summary: returns route-target
+      description: returns route-target
+      operationId: getNetworkVpnBindingsVpnBindingRouteTargetsRouteTarget
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "200":
+          description: successful operation
+          schema:
+              $ref: "#/definitions/route-target"
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: vpn-id
+          in: path
+          description: VPN ID, globally unique within A&AI
+          required: true
+          type: string
+        - name: global-route-target
+          in: path
+          description: Number used to identify an RT, globally unique in the network
+          required: true
+          type: string
+        - name: route-target-role
+          in: path
+          description: Role assigned to this route target
+          required: true
+          type: string
+        - name: vpn-name
+          in: query
+          description: VPN Name
+          required: false
+          type: string
+        - name: vpn-type
+          in: query
+          description: Type of the vpn, should be taken from enumerated/valid values
+          required: false
+          type: string
+    put:
+      tags:
+        - Network
+      summary: create or update an existing route-target
+      description: create or update an existing route-target
+      operationId: createOrUpdateNetworkVpnBindingsVpnBindingRouteTargetsRouteTarget
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: vpn-id
+          in: path
+          description: VPN ID, globally unique within A&AI
+          required: true
+          type: string
+        - name: global-route-target
+          in: path
+          description: Number used to identify an RT, globally unique in the network
+          required: true
+          type: string
+        - name: route-target-role
+          in: path
+          description: Role assigned to this route target
+          required: true
+          type: string
+        - name: body
+          in: body
+          description: route-target object that needs to be created or updated
+          required: true
+          schema:
+            $ref: "#/definitions/route-target"
+    delete:
+      tags:
+        - Network
+      summary: delete an existing route-target
+      description: delete an existing route-target
+      operationId: deleteNetworkVpnBindingsVpnBindingRouteTargetsRouteTarget
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: vpn-id
+          in: path
+          description: VPN ID, globally unique within A&AI
+          required: true
+          type: string
+        - name: global-route-target
+          in: path
+          description: Number used to identify an RT, globally unique in the network
+          required: true
+          type: string
+        - name: route-target-role
+          in: path
+          description: Role assigned to this route target
+          required: true
+          type: string
+        - name: resource-version
+          in: query
+          description: resource-version for concurrency
+          required: true
+          type: string
+  /network/vpn-bindings/vpn-binding/{vpn-id}/route-targets:
+    get:
+      tags:
+        - Network
+      summary: returns route-targets
+      description: returns route-targets
+      operationId: getNetworkVpnBindingsVpnBindingRouteTargets
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "200":
+          description: successful operation
+          schema:
+              $ref: "#/definitions/route-targets"
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: vpn-id
+          in: path
+          description: VPN ID, globally unique within A&AI
+          required: true
+          type: string
+        - name: vpn-name
+          in: query
+          description: VPN Name
+          required: false
+          type: string
+        - name: vpn-type
+          in: query
+          description: Type of the vpn, should be taken from enumerated/valid values
+          required: false
+          type: string
+  /network/vpn-bindings/vpn-binding/{vpn-id}/relationship-list/relationship:
+    put:
+      tags:
+        - Network
+      summary: see node definition for valid relationships
+      operationId: createOrUpdateNetworkVpnBindingsVpnBindingRelationshipListRelationship
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: vpn-id
+          in: path
+          description: VPN ID, globally unique within A&AI
+          required: true
+          type: string
+        - name: body
+          in: body
+          description: relationship object that needs to be created or updated
+          required: true
+          schema:
+            $ref: "#/definitions/relationship"
+    delete:
+      tags:
+        - Network
+      summary: delete an existing relationship
+      description: delete an existing relationship
+      operationId: deleteNetworkVpnBindingsVpnBindingRelationshipListRelationship
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: vpn-id
+          in: path
+          description: VPN ID, globally unique within A&AI
+          required: true
+          type: string
+  /network/vpn-bindings/vpn-binding/{vpn-id}:
+    get:
+      tags:
+        - Network
+      summary: returns vpn-binding
+      description: returns vpn-binding
+      operationId: getNetworkVpnBindingsVpnBinding
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "200":
+          description: successful operation
+          schema:
+              $ref: "#/definitions/vpn-binding"
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: vpn-id
+          in: path
+          description: VPN ID, globally unique within A&AI
+          required: true
+          type: string
+        - name: vpn-name
+          in: query
+          description: VPN Name
+          required: false
+          type: string
+        - name: vpn-type
+          in: query
+          description: Type of the vpn, should be taken from enumerated/valid values
+          required: false
+          type: string
+    put:
+      tags:
+        - Network
+      summary: create or update an existing vpn-binding
+      description: create or update an existing vpn-binding
+      operationId: createOrUpdateNetworkVpnBindingsVpnBinding
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: vpn-id
+          in: path
+          description: VPN ID, globally unique within A&AI
+          required: true
+          type: string
+        - name: body
+          in: body
+          description: vpn-binding object that needs to be created or updated
+          required: true
+          schema:
+            $ref: "#/definitions/vpn-binding"
+    delete:
+      tags:
+        - Network
+      summary: delete an existing vpn-binding
+      description: delete an existing vpn-binding
+      operationId: deleteNetworkVpnBindingsVpnBinding
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: vpn-id
+          in: path
+          description: VPN ID, globally unique within A&AI
+          required: true
+          type: string
+        - name: resource-version
+          in: query
+          description: resource-version for concurrency
+          required: true
+          type: string
+  /network/vpn-bindings:
+    get:
+      tags:
+        - Network
+      summary: returns vpn-bindings
+      description: returns vpn-bindings
+      operationId: getNetworkVpnBindings
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "200":
+          description: successful operation
+          schema:
+              $ref: "#/definitions/vpn-bindings"
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+  /network/vpls-pes/vpls-pe/{equipment-name}/relationship-list/relationship:
+    put:
+      tags:
+        - Network
+      summary: see node definition for valid relationships
+      operationId: createOrUpdateNetworkVplsPesVplsPeRelationshipListRelationship
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: equipment-name
+          in: path
+          required: true
+          type: string
+        - name: body
+          in: body
+          description: relationship object that needs to be created or updated
+          required: true
+          schema:
+            $ref: "#/definitions/relationship"
+    delete:
+      tags:
+        - Network
+      summary: delete an existing relationship
+      description: delete an existing relationship
+      operationId: deleteNetworkVplsPesVplsPeRelationshipListRelationship
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: equipment-name
+          in: path
+          required: true
+          type: string
+  /network/vpls-pes/vpls-pe/{equipment-name}/p-interfaces/p-interface/{interface-name}/relationship-list/relationship:
+    put:
+      tags:
+        - Network
+      summary: see node definition for valid relationships
+      operationId: createOrUpdateNetworkVplsPesVplsPePInterfacesPInterfaceRelationshipListRelationship
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: equipment-name
+          in: path
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name that identifies the physical interface
+          required: true
+          type: string
+        - name: body
+          in: body
+          description: relationship object that needs to be created or updated
+          required: true
+          schema:
+            $ref: "#/definitions/relationship"
+    delete:
+      tags:
+        - Network
+      summary: delete an existing relationship
+      description: delete an existing relationship
+      operationId: deleteNetworkVplsPesVplsPePInterfacesPInterfaceRelationshipListRelationship
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: equipment-name
+          in: path
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name that identifies the physical interface
+          required: true
+          type: string
+  /network/vpls-pes/vpls-pe/{equipment-name}/p-interfaces/p-interface/{interface-name}/sriov-pfs/sriov-pf/{pf-pci-id}/relationship-list/relationship:
+    put:
+      tags:
+        - Network
+      summary: see node definition for valid relationships
+      operationId: createOrUpdateNetworkVplsPesVplsPePInterfacesPInterfaceSriovPfsSriovPfRelationshipListRelationship
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: equipment-name
+          in: path
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name that identifies the physical interface
+          required: true
+          type: string
+        - name: pf-pci-id
+          in: path
+          description: Identifier for the sriov-pf
+          required: true
+          type: string
+        - name: body
+          in: body
+          description: relationship object that needs to be created or updated
+          required: true
+          schema:
+            $ref: "#/definitions/relationship"
+    delete:
+      tags:
+        - Network
+      summary: delete an existing relationship
+      description: delete an existing relationship
+      operationId: deleteNetworkVplsPesVplsPePInterfacesPInterfaceSriovPfsSriovPfRelationshipListRelationship
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: equipment-name
+          in: path
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name that identifies the physical interface
+          required: true
+          type: string
+        - name: pf-pci-id
+          in: path
+          description: Identifier for the sriov-pf
+          required: true
+          type: string
+  /network/vpls-pes/vpls-pe/{equipment-name}/p-interfaces/p-interface/{interface-name}/sriov-pfs/sriov-pf/{pf-pci-id}:
+    get:
+      tags:
+        - Network
+      summary: returns sriov-pf
+      description: returns sriov-pf
+      operationId: getNetworkVplsPesVplsPePInterfacesPInterfaceSriovPfsSriovPf
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "200":
+          description: successful operation
+          schema:
+              $ref: "#/definitions/sriov-pf"
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: equipment-name
+          in: path
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name that identifies the physical interface
+          required: true
+          type: string
+        - name: pf-pci-id
+          in: path
+          description: Identifier for the sriov-pf
+          required: true
+          type: string
+        - name: prov-status
+          in: query
+          description: Trigger for operational monitoring of this VNF by BAU Service Assurance systems.
+          required: false
+          type: string
+        - name: prov-status
+          in: query
+          description: Trigger for operational monitoring of this resource by Service Assurance systems.
+          required: false
+          type: string
+    put:
+      tags:
+        - Network
+      summary: create or update an existing sriov-pf
+      description: create or update an existing sriov-pf
+      operationId: createOrUpdateNetworkVplsPesVplsPePInterfacesPInterfaceSriovPfsSriovPf
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: equipment-name
+          in: path
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name that identifies the physical interface
+          required: true
+          type: string
+        - name: pf-pci-id
+          in: path
+          description: Identifier for the sriov-pf
+          required: true
+          type: string
+        - name: body
+          in: body
+          description: sriov-pf object that needs to be created or updated
+          required: true
+          schema:
+            $ref: "#/definitions/sriov-pf"
+    delete:
+      tags:
+        - Network
+      summary: delete an existing sriov-pf
+      description: delete an existing sriov-pf
+      operationId: deleteNetworkVplsPesVplsPePInterfacesPInterfaceSriovPfsSriovPf
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: equipment-name
+          in: path
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name that identifies the physical interface
+          required: true
+          type: string
+        - name: pf-pci-id
+          in: path
+          description: Identifier for the sriov-pf
+          required: true
+          type: string
+        - name: resource-version
+          in: query
+          description: resource-version for concurrency
+          required: true
+          type: string
+  /network/vpls-pes/vpls-pe/{equipment-name}/p-interfaces/p-interface/{interface-name}/sriov-pfs:
+    get:
+      tags:
+        - Network
+      summary: returns sriov-pfs
+      description: returns sriov-pfs
+      operationId: getNetworkVplsPesVplsPePInterfacesPInterfaceSriovPfs
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "200":
+          description: successful operation
+          schema:
+              $ref: "#/definitions/sriov-pfs"
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: equipment-name
+          in: path
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name that identifies the physical interface
+          required: true
+          type: string
+        - name: prov-status
+          in: query
+          description: Trigger for operational monitoring of this VNF by BAU Service Assurance systems.
+          required: false
+          type: string
+        - name: prov-status
+          in: query
+          description: Trigger for operational monitoring of this resource by Service Assurance systems.
+          required: false
+          type: string
+  /network/vpls-pes/vpls-pe/{equipment-name}/p-interfaces/p-interface/{interface-name}/l-interfaces/l-interface/{interface-name}/vlans/vlan/{vlan-interface}/relationship-list/relationship:
+    put:
+      tags:
+        - Network
+      summary: see node definition for valid relationships
+      operationId: createOrUpdateNetworkVplsPesVplsPePInterfacesPInterfaceLInterfacesLInterfaceVlansVlanRelationshipListRelationship
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: equipment-name
+          in: path
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name that identifies the physical interface
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name given to the interface
+          required: true
+          type: string
+        - name: vlan-interface
+          in: path
+          description: String that identifies the interface
+          required: true
+          type: string
+        - name: body
+          in: body
+          description: relationship object that needs to be created or updated
+          required: true
+          schema:
+            $ref: "#/definitions/relationship"
+    delete:
+      tags:
+        - Network
+      summary: delete an existing relationship
+      description: delete an existing relationship
+      operationId: deleteNetworkVplsPesVplsPePInterfacesPInterfaceLInterfacesLInterfaceVlansVlanRelationshipListRelationship
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: equipment-name
+          in: path
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name that identifies the physical interface
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name given to the interface
+          required: true
+          type: string
+        - name: vlan-interface
+          in: path
+          description: String that identifies the interface
+          required: true
+          type: string
+  /network/vpls-pes/vpls-pe/{equipment-name}/p-interfaces/p-interface/{interface-name}/l-interfaces/l-interface/{interface-name}/vlans/vlan/{vlan-interface}/l3-interface-ipv4-address-list/{l3-interface-ipv4-address}/relationship-list/relationship:
+    put:
+      tags:
+        - Network
+      summary: see node definition for valid relationships
+      operationId: createOrUpdateNetworkVplsPesVplsPePInterfacesPInterfaceLInterfacesLInterfaceVlansVlanL3InterfaceIpv4AddressListRelationshipListRelationship
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: equipment-name
+          in: path
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name that identifies the physical interface
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name given to the interface
+          required: true
+          type: string
+        - name: vlan-interface
+          in: path
+          description: String that identifies the interface
+          required: true
+          type: string
+        - name: l3-interface-ipv4-address
+          in: path
+          description: IP address
+          required: true
+          type: string
+        - name: body
+          in: body
+          description: relationship object that needs to be created or updated
+          required: true
+          schema:
+            $ref: "#/definitions/relationship"
+    delete:
+      tags:
+        - Network
+      summary: delete an existing relationship
+      description: delete an existing relationship
+      operationId: deleteNetworkVplsPesVplsPePInterfacesPInterfaceLInterfacesLInterfaceVlansVlanL3InterfaceIpv4AddressListRelationshipListRelationship
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: equipment-name
+          in: path
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name that identifies the physical interface
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name given to the interface
+          required: true
+          type: string
+        - name: vlan-interface
+          in: path
+          description: String that identifies the interface
+          required: true
+          type: string
+        - name: l3-interface-ipv4-address
+          in: path
+          description: IP address
+          required: true
+          type: string
+  /network/vpls-pes/vpls-pe/{equipment-name}/p-interfaces/p-interface/{interface-name}/l-interfaces/l-interface/{interface-name}/vlans/vlan/{vlan-interface}/l3-interface-ipv4-address-list/{l3-interface-ipv4-address}:
+    get:
+      tags:
+        - Network
+      summary: returns l3-interface-ipv4-address-list
+      description: returns l3-interface-ipv4-address-list
+      operationId: getNetworkVplsPesVplsPePInterfacesPInterfaceLInterfacesLInterfaceVlansVlanL3InterfaceIpv4AddressList
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "200":
+          description: successful operation
+          schema:
+              $ref: "#/definitions/l3-interface-ipv4-address-list"
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: equipment-name
+          in: path
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name that identifies the physical interface
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name given to the interface
+          required: true
+          type: string
+        - name: vlan-interface
+          in: path
+          description: String that identifies the interface
+          required: true
+          type: string
+        - name: l3-interface-ipv4-address
+          in: path
+          description: IP address
+          required: true
+          type: string
+        - name: prov-status
+          in: query
+          description: Trigger for operational monitoring of this VNF by BAU Service Assurance systems.
+          required: false
+          type: string
+        - name: prov-status
+          in: query
+          description: Trigger for operational monitoring of this resource by Service Assurance systems.
+          required: false
+          type: string
+        - name: interface-id
+          in: query
+          description: ID of interface
+          required: false
+          type: string
+        - name: macaddr
+          in: query
+          description: MAC address for the interface
+          required: false
+          type: string
+        - name: network-name
+          in: query
+          description: Name of the network
+          required: false
+          type: string
+        - name: vlan-id-inner
+          in: query
+          description: Inner VLAN tag
+          required: false
+          type: integer
+          format: int64
+        - name: vpn-key
+          in: query
+          description: This indicates the customers VPN ID associated with this vlan
+          required: false
+          type: string
+        - name: vlan-id-inner
+          in: query
+          description: Inner VLAN tag
+          required: false
+          type: integer
+          format: int64
+        - name: neutron-network-id
+          in: query
+          description: Neutron network id of the interface that address belongs to
+          required: false
+          type: string
+        - name: neutron-subnet-id
+          in: query
+          description: Neutron id of subnet that address belongs to
+          required: false
+          type: string
+    put:
+      tags:
+        - Network
+      summary: create or update an existing l3-interface-ipv4-address-list
+      description: create or update an existing l3-interface-ipv4-address-list
+      operationId: createOrUpdateNetworkVplsPesVplsPePInterfacesPInterfaceLInterfacesLInterfaceVlansVlanL3InterfaceIpv4AddressList
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: equipment-name
+          in: path
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name that identifies the physical interface
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name given to the interface
+          required: true
+          type: string
+        - name: vlan-interface
+          in: path
+          description: String that identifies the interface
+          required: true
+          type: string
+        - name: l3-interface-ipv4-address
+          in: path
+          description: IP address
+          required: true
+          type: string
+        - name: body
+          in: body
+          description: l3-interface-ipv4-address-list object that needs to be created or updated
+          required: true
+          schema:
+            $ref: "#/definitions/l3-interface-ipv4-address-list"
+    delete:
+      tags:
+        - Network
+      summary: delete an existing l3-interface-ipv4-address-list
+      description: delete an existing l3-interface-ipv4-address-list
+      operationId: deleteNetworkVplsPesVplsPePInterfacesPInterfaceLInterfacesLInterfaceVlansVlanL3InterfaceIpv4AddressList
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: equipment-name
+          in: path
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name that identifies the physical interface
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name given to the interface
+          required: true
+          type: string
+        - name: vlan-interface
+          in: path
+          description: String that identifies the interface
+          required: true
+          type: string
+        - name: l3-interface-ipv4-address
+          in: path
+          description: IP address
+          required: true
+          type: string
+        - name: resource-version
+          in: query
+          description: resource-version for concurrency
+          required: true
+          type: string
+  /network/vpls-pes/vpls-pe/{equipment-name}/p-interfaces/p-interface/{interface-name}/l-interfaces/l-interface/{interface-name}/vlans/vlan/{vlan-interface}/l3-interface-ipv6-address-list/{l3-interface-ipv6-address}/relationship-list/relationship:
+    put:
+      tags:
+        - Network
+      summary: see node definition for valid relationships
+      operationId: createOrUpdateNetworkVplsPesVplsPePInterfacesPInterfaceLInterfacesLInterfaceVlansVlanL3InterfaceIpv6AddressListRelationshipListRelationship
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: equipment-name
+          in: path
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name that identifies the physical interface
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name given to the interface
+          required: true
+          type: string
+        - name: vlan-interface
+          in: path
+          description: String that identifies the interface
+          required: true
+          type: string
+        - name: l3-interface-ipv6-address
+          in: path
+          description: IP address
+          required: true
+          type: string
+        - name: body
+          in: body
+          description: relationship object that needs to be created or updated
+          required: true
+          schema:
+            $ref: "#/definitions/relationship"
+    delete:
+      tags:
+        - Network
+      summary: delete an existing relationship
+      description: delete an existing relationship
+      operationId: deleteNetworkVplsPesVplsPePInterfacesPInterfaceLInterfacesLInterfaceVlansVlanL3InterfaceIpv6AddressListRelationshipListRelationship
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: equipment-name
+          in: path
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name that identifies the physical interface
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name given to the interface
+          required: true
+          type: string
+        - name: vlan-interface
+          in: path
+          description: String that identifies the interface
+          required: true
+          type: string
+        - name: l3-interface-ipv6-address
+          in: path
+          description: IP address
+          required: true
+          type: string
+  /network/vpls-pes/vpls-pe/{equipment-name}/p-interfaces/p-interface/{interface-name}/l-interfaces/l-interface/{interface-name}/vlans/vlan/{vlan-interface}/l3-interface-ipv6-address-list/{l3-interface-ipv6-address}:
+    get:
+      tags:
+        - Network
+      summary: returns l3-interface-ipv6-address-list
+      description: returns l3-interface-ipv6-address-list
+      operationId: getNetworkVplsPesVplsPePInterfacesPInterfaceLInterfacesLInterfaceVlansVlanL3InterfaceIpv6AddressList
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "200":
+          description: successful operation
+          schema:
+              $ref: "#/definitions/l3-interface-ipv6-address-list"
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: equipment-name
+          in: path
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name that identifies the physical interface
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name given to the interface
+          required: true
+          type: string
+        - name: vlan-interface
+          in: path
+          description: String that identifies the interface
+          required: true
+          type: string
+        - name: l3-interface-ipv6-address
+          in: path
+          description: IP address
+          required: true
+          type: string
+        - name: prov-status
+          in: query
+          description: Trigger for operational monitoring of this VNF by BAU Service Assurance systems.
+          required: false
+          type: string
+        - name: prov-status
+          in: query
+          description: Trigger for operational monitoring of this resource by Service Assurance systems.
+          required: false
+          type: string
+        - name: interface-id
+          in: query
+          description: ID of interface
+          required: false
+          type: string
+        - name: macaddr
+          in: query
+          description: MAC address for the interface
+          required: false
+          type: string
+        - name: network-name
+          in: query
+          description: Name of the network
+          required: false
+          type: string
+        - name: vlan-id-inner
+          in: query
+          description: Inner VLAN tag
+          required: false
+          type: integer
+          format: int64
+        - name: vpn-key
+          in: query
+          description: This indicates the customers VPN ID associated with this vlan
+          required: false
+          type: string
+        - name: vlan-id-inner
+          in: query
+          description: Inner VLAN tag
+          required: false
+          type: integer
+          format: int64
+        - name: neutron-network-id
+          in: query
+          description: Neutron network id of the interface that address belongs to
+          required: false
+          type: string
+        - name: neutron-subnet-id
+          in: query
+          description: Neutron id of subnet that address belongs to
+          required: false
+          type: string
+    put:
+      tags:
+        - Network
+      summary: create or update an existing l3-interface-ipv6-address-list
+      description: create or update an existing l3-interface-ipv6-address-list
+      operationId: createOrUpdateNetworkVplsPesVplsPePInterfacesPInterfaceLInterfacesLInterfaceVlansVlanL3InterfaceIpv6AddressList
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: equipment-name
+          in: path
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name that identifies the physical interface
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name given to the interface
+          required: true
+          type: string
+        - name: vlan-interface
+          in: path
+          description: String that identifies the interface
+          required: true
+          type: string
+        - name: l3-interface-ipv6-address
+          in: path
+          description: IP address
+          required: true
+          type: string
+        - name: body
+          in: body
+          description: l3-interface-ipv6-address-list object that needs to be created or updated
+          required: true
+          schema:
+            $ref: "#/definitions/l3-interface-ipv6-address-list"
+    delete:
+      tags:
+        - Network
+      summary: delete an existing l3-interface-ipv6-address-list
+      description: delete an existing l3-interface-ipv6-address-list
+      operationId: deleteNetworkVplsPesVplsPePInterfacesPInterfaceLInterfacesLInterfaceVlansVlanL3InterfaceIpv6AddressList
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: equipment-name
+          in: path
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name that identifies the physical interface
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name given to the interface
+          required: true
+          type: string
+        - name: vlan-interface
+          in: path
+          description: String that identifies the interface
+          required: true
+          type: string
+        - name: l3-interface-ipv6-address
+          in: path
+          description: IP address
+          required: true
+          type: string
+        - name: resource-version
+          in: query
+          description: resource-version for concurrency
+          required: true
+          type: string
+  /network/vpls-pes/vpls-pe/{equipment-name}/p-interfaces/p-interface/{interface-name}/l-interfaces/l-interface/{interface-name}/vlans/vlan/{vlan-interface}:
+    get:
+      tags:
+        - Network
+      summary: returns vlan
+      description: returns vlan
+      operationId: getNetworkVplsPesVplsPePInterfacesPInterfaceLInterfacesLInterfaceVlansVlan
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "200":
+          description: successful operation
+          schema:
+              $ref: "#/definitions/vlan"
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: equipment-name
+          in: path
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name that identifies the physical interface
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name given to the interface
+          required: true
+          type: string
+        - name: vlan-interface
+          in: path
+          description: String that identifies the interface
+          required: true
+          type: string
+        - name: prov-status
+          in: query
+          description: Trigger for operational monitoring of this VNF by BAU Service Assurance systems.
+          required: false
+          type: string
+        - name: prov-status
+          in: query
+          description: Trigger for operational monitoring of this resource by Service Assurance systems.
+          required: false
+          type: string
+        - name: interface-id
+          in: query
+          description: ID of interface
+          required: false
+          type: string
+        - name: macaddr
+          in: query
+          description: MAC address for the interface
+          required: false
+          type: string
+        - name: network-name
+          in: query
+          description: Name of the network
+          required: false
+          type: string
+        - name: vlan-id-inner
+          in: query
+          description: Inner VLAN tag
+          required: false
+          type: integer
+          format: int64
+        - name: vpn-key
+          in: query
+          description: This indicates the customers VPN ID associated with this vlan
+          required: false
+          type: string
+    put:
+      tags:
+        - Network
+      summary: create or update an existing vlan
+      description: create or update an existing vlan
+      operationId: createOrUpdateNetworkVplsPesVplsPePInterfacesPInterfaceLInterfacesLInterfaceVlansVlan
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: equipment-name
+          in: path
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name that identifies the physical interface
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name given to the interface
+          required: true
+          type: string
+        - name: vlan-interface
+          in: path
+          description: String that identifies the interface
+          required: true
+          type: string
+        - name: body
+          in: body
+          description: vlan object that needs to be created or updated
+          required: true
+          schema:
+            $ref: "#/definitions/vlan"
+    delete:
+      tags:
+        - Network
+      summary: delete an existing vlan
+      description: delete an existing vlan
+      operationId: deleteNetworkVplsPesVplsPePInterfacesPInterfaceLInterfacesLInterfaceVlansVlan
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: equipment-name
+          in: path
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name that identifies the physical interface
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name given to the interface
+          required: true
+          type: string
+        - name: vlan-interface
+          in: path
+          description: String that identifies the interface
+          required: true
+          type: string
+        - name: resource-version
+          in: query
+          description: resource-version for concurrency
+          required: true
+          type: string
+  /network/vpls-pes/vpls-pe/{equipment-name}/p-interfaces/p-interface/{interface-name}/l-interfaces/l-interface/{interface-name}/vlans:
+    get:
+      tags:
+        - Network
+      summary: returns vlans
+      description: returns vlans
+      operationId: getNetworkVplsPesVplsPePInterfacesPInterfaceLInterfacesLInterfaceVlans
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "200":
+          description: successful operation
+          schema:
+              $ref: "#/definitions/vlans"
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: equipment-name
+          in: path
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name that identifies the physical interface
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name given to the interface
+          required: true
+          type: string
+        - name: prov-status
+          in: query
+          description: Trigger for operational monitoring of this VNF by BAU Service Assurance systems.
+          required: false
+          type: string
+        - name: prov-status
+          in: query
+          description: Trigger for operational monitoring of this resource by Service Assurance systems.
+          required: false
+          type: string
+        - name: interface-id
+          in: query
+          description: ID of interface
+          required: false
+          type: string
+        - name: macaddr
+          in: query
+          description: MAC address for the interface
+          required: false
+          type: string
+        - name: network-name
+          in: query
+          description: Name of the network
+          required: false
+          type: string
+  /network/vpls-pes/vpls-pe/{equipment-name}/p-interfaces/p-interface/{interface-name}/l-interfaces/l-interface/{interface-name}/sriov-vfs/sriov-vf/{pci-id}/relationship-list/relationship:
+    put:
+      tags:
+        - Network
+      summary: see node definition for valid relationships
+      operationId: createOrUpdateNetworkVplsPesVplsPePInterfacesPInterfaceLInterfacesLInterfaceSriovVfsSriovVfRelationshipListRelationship
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: equipment-name
+          in: path
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name that identifies the physical interface
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name given to the interface
+          required: true
+          type: string
+        - name: pci-id
+          in: path
+          description: PCI ID used to identify the sriov-vf
+          required: true
+          type: string
+        - name: body
+          in: body
+          description: relationship object that needs to be created or updated
+          required: true
+          schema:
+            $ref: "#/definitions/relationship"
+    delete:
+      tags:
+        - Network
+      summary: delete an existing relationship
+      description: delete an existing relationship
+      operationId: deleteNetworkVplsPesVplsPePInterfacesPInterfaceLInterfacesLInterfaceSriovVfsSriovVfRelationshipListRelationship
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: equipment-name
+          in: path
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name that identifies the physical interface
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name given to the interface
+          required: true
+          type: string
+        - name: pci-id
+          in: path
+          description: PCI ID used to identify the sriov-vf
+          required: true
+          type: string
+  /network/vpls-pes/vpls-pe/{equipment-name}/p-interfaces/p-interface/{interface-name}/l-interfaces/l-interface/{interface-name}/sriov-vfs/sriov-vf/{pci-id}:
+    get:
+      tags:
+        - Network
+      summary: returns sriov-vf
+      description: returns sriov-vf
+      operationId: getNetworkVplsPesVplsPePInterfacesPInterfaceLInterfacesLInterfaceSriovVfsSriovVf
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "200":
+          description: successful operation
+          schema:
+              $ref: "#/definitions/sriov-vf"
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: equipment-name
+          in: path
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name that identifies the physical interface
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name given to the interface
+          required: true
+          type: string
+        - name: pci-id
+          in: path
+          description: PCI ID used to identify the sriov-vf
+          required: true
+          type: string
+        - name: prov-status
+          in: query
+          description: Trigger for operational monitoring of this VNF by BAU Service Assurance systems.
+          required: false
+          type: string
+        - name: prov-status
+          in: query
+          description: Trigger for operational monitoring of this resource by Service Assurance systems.
+          required: false
+          type: string
+        - name: interface-id
+          in: query
+          description: ID of interface
+          required: false
+          type: string
+        - name: macaddr
+          in: query
+          description: MAC address for the interface
+          required: false
+          type: string
+        - name: network-name
+          in: query
+          description: Name of the network
+          required: false
+          type: string
+        - name: vf-vlan-filter
+          in: query
+          description: This metadata provides option to specify list of VLAN filters applied on VF to pass the traffic to VM.
+          required: false
+          type: string
+        - name: vf-mac-filter
+          in: query
+          description: When MAC filters are specified, VF-agent service configures VFs to do MAC level filtering before the traffic is passed to VM.
+          required: false
+          type: string
+        - name: vf-vlan-strip
+          in: query
+          description: When this field is set to true, VF will configured to strip the outer TAG before the traffic is passed to VM.
+          required: false
+          type: boolean
+        - name: neutron-network-id
+          in: query
+          description: Neutron network id of the interface
+          required: false
+          type: string
+    put:
+      tags:
+        - Network
+      summary: create or update an existing sriov-vf
+      description: create or update an existing sriov-vf
+      operationId: createOrUpdateNetworkVplsPesVplsPePInterfacesPInterfaceLInterfacesLInterfaceSriovVfsSriovVf
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: equipment-name
+          in: path
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name that identifies the physical interface
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name given to the interface
+          required: true
+          type: string
+        - name: pci-id
+          in: path
+          description: PCI ID used to identify the sriov-vf
+          required: true
+          type: string
+        - name: body
+          in: body
+          description: sriov-vf object that needs to be created or updated
+          required: true
+          schema:
+            $ref: "#/definitions/sriov-vf"
+    delete:
+      tags:
+        - Network
+      summary: delete an existing sriov-vf
+      description: delete an existing sriov-vf
+      operationId: deleteNetworkVplsPesVplsPePInterfacesPInterfaceLInterfacesLInterfaceSriovVfsSriovVf
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: equipment-name
+          in: path
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name that identifies the physical interface
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name given to the interface
+          required: true
+          type: string
+        - name: pci-id
+          in: path
+          description: PCI ID used to identify the sriov-vf
+          required: true
+          type: string
+        - name: resource-version
+          in: query
+          description: resource-version for concurrency
+          required: true
+          type: string
+  /network/vpls-pes/vpls-pe/{equipment-name}/p-interfaces/p-interface/{interface-name}/l-interfaces/l-interface/{interface-name}/sriov-vfs:
+    get:
+      tags:
+        - Network
+      summary: returns sriov-vfs
+      description: returns sriov-vfs
+      operationId: getNetworkVplsPesVplsPePInterfacesPInterfaceLInterfacesLInterfaceSriovVfs
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "200":
+          description: successful operation
+          schema:
+              $ref: "#/definitions/sriov-vfs"
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: equipment-name
+          in: path
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name that identifies the physical interface
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name given to the interface
+          required: true
+          type: string
+        - name: prov-status
+          in: query
+          description: Trigger for operational monitoring of this VNF by BAU Service Assurance systems.
+          required: false
+          type: string
+        - name: prov-status
+          in: query
+          description: Trigger for operational monitoring of this resource by Service Assurance systems.
+          required: false
+          type: string
+        - name: interface-id
+          in: query
+          description: ID of interface
+          required: false
+          type: string
+        - name: macaddr
+          in: query
+          description: MAC address for the interface
+          required: false
+          type: string
+        - name: network-name
+          in: query
+          description: Name of the network
+          required: false
+          type: string
+  /network/vpls-pes/vpls-pe/{equipment-name}/p-interfaces/p-interface/{interface-name}/l-interfaces/l-interface/{interface-name}/relationship-list/relationship:
+    put:
+      tags:
+        - Network
+      summary: see node definition for valid relationships
+      operationId: createOrUpdateNetworkVplsPesVplsPePInterfacesPInterfaceLInterfacesLInterfaceRelationshipListRelationship
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: equipment-name
+          in: path
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name that identifies the physical interface
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name given to the interface
+          required: true
+          type: string
+        - name: body
+          in: body
+          description: relationship object that needs to be created or updated
+          required: true
+          schema:
+            $ref: "#/definitions/relationship"
+    delete:
+      tags:
+        - Network
+      summary: delete an existing relationship
+      description: delete an existing relationship
+      operationId: deleteNetworkVplsPesVplsPePInterfacesPInterfaceLInterfacesLInterfaceRelationshipListRelationship
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: equipment-name
+          in: path
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name that identifies the physical interface
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name given to the interface
+          required: true
+          type: string
+  /network/vpls-pes/vpls-pe/{equipment-name}/p-interfaces/p-interface/{interface-name}/l-interfaces/l-interface/{interface-name}/l3-interface-ipv4-address-list/{l3-interface-ipv4-address}/relationship-list/relationship:
+    put:
+      tags:
+        - Network
+      summary: see node definition for valid relationships
+      operationId: createOrUpdateNetworkVplsPesVplsPePInterfacesPInterfaceLInterfacesLInterfaceL3InterfaceIpv4AddressListRelationshipListRelationship
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: equipment-name
+          in: path
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name that identifies the physical interface
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name given to the interface
+          required: true
+          type: string
+        - name: l3-interface-ipv4-address
+          in: path
+          description: IP address
+          required: true
+          type: string
+        - name: body
+          in: body
+          description: relationship object that needs to be created or updated
+          required: true
+          schema:
+            $ref: "#/definitions/relationship"
+    delete:
+      tags:
+        - Network
+      summary: delete an existing relationship
+      description: delete an existing relationship
+      operationId: deleteNetworkVplsPesVplsPePInterfacesPInterfaceLInterfacesLInterfaceL3InterfaceIpv4AddressListRelationshipListRelationship
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: equipment-name
+          in: path
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name that identifies the physical interface
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name given to the interface
+          required: true
+          type: string
+        - name: l3-interface-ipv4-address
+          in: path
+          description: IP address
+          required: true
+          type: string
+  /network/vpls-pes/vpls-pe/{equipment-name}/p-interfaces/p-interface/{interface-name}/l-interfaces/l-interface/{interface-name}/l3-interface-ipv4-address-list/{l3-interface-ipv4-address}:
+    get:
+      tags:
+        - Network
+      summary: returns l3-interface-ipv4-address-list
+      description: returns l3-interface-ipv4-address-list
+      operationId: getNetworkVplsPesVplsPePInterfacesPInterfaceLInterfacesLInterfaceL3InterfaceIpv4AddressList
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "200":
+          description: successful operation
+          schema:
+              $ref: "#/definitions/l3-interface-ipv4-address-list"
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: equipment-name
+          in: path
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name that identifies the physical interface
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name given to the interface
+          required: true
+          type: string
+        - name: l3-interface-ipv4-address
+          in: path
+          description: IP address
+          required: true
+          type: string
+        - name: prov-status
+          in: query
+          description: Trigger for operational monitoring of this VNF by BAU Service Assurance systems.
+          required: false
+          type: string
+        - name: prov-status
+          in: query
+          description: Trigger for operational monitoring of this resource by Service Assurance systems.
+          required: false
+          type: string
+        - name: interface-id
+          in: query
+          description: ID of interface
+          required: false
+          type: string
+        - name: macaddr
+          in: query
+          description: MAC address for the interface
+          required: false
+          type: string
+        - name: network-name
+          in: query
+          description: Name of the network
+          required: false
+          type: string
+        - name: vlan-id-inner
+          in: query
+          description: Inner VLAN tag
+          required: false
+          type: integer
+          format: int64
+        - name: neutron-network-id
+          in: query
+          description: Neutron network id of the interface that address belongs to
+          required: false
+          type: string
+        - name: neutron-subnet-id
+          in: query
+          description: Neutron id of subnet that address belongs to
+          required: false
+          type: string
+    put:
+      tags:
+        - Network
+      summary: create or update an existing l3-interface-ipv4-address-list
+      description: create or update an existing l3-interface-ipv4-address-list
+      operationId: createOrUpdateNetworkVplsPesVplsPePInterfacesPInterfaceLInterfacesLInterfaceL3InterfaceIpv4AddressList
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: equipment-name
+          in: path
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name that identifies the physical interface
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name given to the interface
+          required: true
+          type: string
+        - name: l3-interface-ipv4-address
+          in: path
+          description: IP address
+          required: true
+          type: string
+        - name: body
+          in: body
+          description: l3-interface-ipv4-address-list object that needs to be created or updated
+          required: true
+          schema:
+            $ref: "#/definitions/l3-interface-ipv4-address-list"
+    delete:
+      tags:
+        - Network
+      summary: delete an existing l3-interface-ipv4-address-list
+      description: delete an existing l3-interface-ipv4-address-list
+      operationId: deleteNetworkVplsPesVplsPePInterfacesPInterfaceLInterfacesLInterfaceL3InterfaceIpv4AddressList
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: equipment-name
+          in: path
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name that identifies the physical interface
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name given to the interface
+          required: true
+          type: string
+        - name: l3-interface-ipv4-address
+          in: path
+          description: IP address
+          required: true
+          type: string
+        - name: resource-version
+          in: query
+          description: resource-version for concurrency
+          required: true
+          type: string
+  /network/vpls-pes/vpls-pe/{equipment-name}/p-interfaces/p-interface/{interface-name}/l-interfaces/l-interface/{interface-name}/l3-interface-ipv6-address-list/{l3-interface-ipv6-address}/relationship-list/relationship:
+    put:
+      tags:
+        - Network
+      summary: see node definition for valid relationships
+      operationId: createOrUpdateNetworkVplsPesVplsPePInterfacesPInterfaceLInterfacesLInterfaceL3InterfaceIpv6AddressListRelationshipListRelationship
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: equipment-name
+          in: path
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name that identifies the physical interface
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name given to the interface
+          required: true
+          type: string
+        - name: l3-interface-ipv6-address
+          in: path
+          description: IP address
+          required: true
+          type: string
+        - name: body
+          in: body
+          description: relationship object that needs to be created or updated
+          required: true
+          schema:
+            $ref: "#/definitions/relationship"
+    delete:
+      tags:
+        - Network
+      summary: delete an existing relationship
+      description: delete an existing relationship
+      operationId: deleteNetworkVplsPesVplsPePInterfacesPInterfaceLInterfacesLInterfaceL3InterfaceIpv6AddressListRelationshipListRelationship
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: equipment-name
+          in: path
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name that identifies the physical interface
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name given to the interface
+          required: true
+          type: string
+        - name: l3-interface-ipv6-address
+          in: path
+          description: IP address
+          required: true
+          type: string
+  /network/vpls-pes/vpls-pe/{equipment-name}/p-interfaces/p-interface/{interface-name}/l-interfaces/l-interface/{interface-name}/l3-interface-ipv6-address-list/{l3-interface-ipv6-address}:
+    get:
+      tags:
+        - Network
+      summary: returns l3-interface-ipv6-address-list
+      description: returns l3-interface-ipv6-address-list
+      operationId: getNetworkVplsPesVplsPePInterfacesPInterfaceLInterfacesLInterfaceL3InterfaceIpv6AddressList
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "200":
+          description: successful operation
+          schema:
+              $ref: "#/definitions/l3-interface-ipv6-address-list"
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: equipment-name
+          in: path
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name that identifies the physical interface
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name given to the interface
+          required: true
+          type: string
+        - name: l3-interface-ipv6-address
+          in: path
+          description: IP address
+          required: true
+          type: string
+        - name: prov-status
+          in: query
+          description: Trigger for operational monitoring of this VNF by BAU Service Assurance systems.
+          required: false
+          type: string
+        - name: prov-status
+          in: query
+          description: Trigger for operational monitoring of this resource by Service Assurance systems.
+          required: false
+          type: string
+        - name: interface-id
+          in: query
+          description: ID of interface
+          required: false
+          type: string
+        - name: macaddr
+          in: query
+          description: MAC address for the interface
+          required: false
+          type: string
+        - name: network-name
+          in: query
+          description: Name of the network
+          required: false
+          type: string
+        - name: vlan-id-inner
+          in: query
+          description: Inner VLAN tag
+          required: false
+          type: integer
+          format: int64
+        - name: neutron-network-id
+          in: query
+          description: Neutron network id of the interface that address belongs to
+          required: false
+          type: string
+        - name: neutron-subnet-id
+          in: query
+          description: Neutron id of subnet that address belongs to
+          required: false
+          type: string
+    put:
+      tags:
+        - Network
+      summary: create or update an existing l3-interface-ipv6-address-list
+      description: create or update an existing l3-interface-ipv6-address-list
+      operationId: createOrUpdateNetworkVplsPesVplsPePInterfacesPInterfaceLInterfacesLInterfaceL3InterfaceIpv6AddressList
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: equipment-name
+          in: path
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name that identifies the physical interface
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name given to the interface
+          required: true
+          type: string
+        - name: l3-interface-ipv6-address
+          in: path
+          description: IP address
+          required: true
+          type: string
+        - name: body
+          in: body
+          description: l3-interface-ipv6-address-list object that needs to be created or updated
+          required: true
+          schema:
+            $ref: "#/definitions/l3-interface-ipv6-address-list"
+    delete:
+      tags:
+        - Network
+      summary: delete an existing l3-interface-ipv6-address-list
+      description: delete an existing l3-interface-ipv6-address-list
+      operationId: deleteNetworkVplsPesVplsPePInterfacesPInterfaceLInterfacesLInterfaceL3InterfaceIpv6AddressList
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: equipment-name
+          in: path
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name that identifies the physical interface
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name given to the interface
+          required: true
+          type: string
+        - name: l3-interface-ipv6-address
+          in: path
+          description: IP address
+          required: true
+          type: string
+        - name: resource-version
+          in: query
+          description: resource-version for concurrency
+          required: true
+          type: string
+  /network/vpls-pes/vpls-pe/{equipment-name}/p-interfaces/p-interface/{interface-name}/l-interfaces/l-interface/{interface-name}:
+    get:
+      tags:
+        - Network
+      summary: returns l-interface
+      description: returns l-interface
+      operationId: getNetworkVplsPesVplsPePInterfacesPInterfaceLInterfacesLInterface
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "200":
+          description: successful operation
+          schema:
+              $ref: "#/definitions/l-interface"
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: equipment-name
+          in: path
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name that identifies the physical interface
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name given to the interface
+          required: true
+          type: string
+        - name: prov-status
+          in: query
+          description: Trigger for operational monitoring of this VNF by BAU Service Assurance systems.
+          required: false
+          type: string
+        - name: prov-status
+          in: query
+          description: Trigger for operational monitoring of this resource by Service Assurance systems.
+          required: false
+          type: string
+        - name: interface-id
+          in: query
+          description: ID of interface
+          required: false
+          type: string
+        - name: macaddr
+          in: query
+          description: MAC address for the interface
+          required: false
+          type: string
+        - name: network-name
+          in: query
+          description: Name of the network
+          required: false
+          type: string
+    put:
+      tags:
+        - Network
+      summary: create or update an existing l-interface
+      description: create or update an existing l-interface
+      operationId: createOrUpdateNetworkVplsPesVplsPePInterfacesPInterfaceLInterfacesLInterface
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: equipment-name
+          in: path
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name that identifies the physical interface
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name given to the interface
+          required: true
+          type: string
+        - name: body
+          in: body
+          description: l-interface object that needs to be created or updated
+          required: true
+          schema:
+            $ref: "#/definitions/l-interface"
+    delete:
+      tags:
+        - Network
+      summary: delete an existing l-interface
+      description: delete an existing l-interface
+      operationId: deleteNetworkVplsPesVplsPePInterfacesPInterfaceLInterfacesLInterface
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: equipment-name
+          in: path
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name that identifies the physical interface
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name given to the interface
+          required: true
+          type: string
+        - name: resource-version
+          in: query
+          description: resource-version for concurrency
+          required: true
+          type: string
+  /network/vpls-pes/vpls-pe/{equipment-name}/p-interfaces/p-interface/{interface-name}/l-interfaces:
+    get:
+      tags:
+        - Network
+      summary: returns l-interfaces
+      description: returns l-interfaces
+      operationId: getNetworkVplsPesVplsPePInterfacesPInterfaceLInterfaces
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "200":
+          description: successful operation
+          schema:
+              $ref: "#/definitions/l-interfaces"
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: equipment-name
+          in: path
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name that identifies the physical interface
+          required: true
+          type: string
+        - name: prov-status
+          in: query
+          description: Trigger for operational monitoring of this VNF by BAU Service Assurance systems.
+          required: false
+          type: string
+        - name: prov-status
+          in: query
+          description: Trigger for operational monitoring of this resource by Service Assurance systems.
+          required: false
+          type: string
+  /network/vpls-pes/vpls-pe/{equipment-name}/p-interfaces/p-interface/{interface-name}:
+    get:
+      tags:
+        - Network
+      summary: returns p-interface
+      description: returns p-interface
+      operationId: getNetworkVplsPesVplsPePInterfacesPInterface
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "200":
+          description: successful operation
+          schema:
+              $ref: "#/definitions/p-interface"
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: equipment-name
+          in: path
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name that identifies the physical interface
+          required: true
+          type: string
+        - name: prov-status
+          in: query
+          description: Trigger for operational monitoring of this VNF by BAU Service Assurance systems.
+          required: false
+          type: string
+        - name: prov-status
+          in: query
+          description: Trigger for operational monitoring of this resource by Service Assurance systems.
+          required: false
+          type: string
+    put:
+      tags:
+        - Network
+      summary: create or update an existing p-interface
+      description: create or update an existing p-interface
+      operationId: createOrUpdateNetworkVplsPesVplsPePInterfacesPInterface
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: equipment-name
+          in: path
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name that identifies the physical interface
+          required: true
+          type: string
+        - name: body
+          in: body
+          description: p-interface object that needs to be created or updated
+          required: true
+          schema:
+            $ref: "#/definitions/p-interface"
+    delete:
+      tags:
+        - Network
+      summary: delete an existing p-interface
+      description: delete an existing p-interface
+      operationId: deleteNetworkVplsPesVplsPePInterfacesPInterface
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: equipment-name
+          in: path
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name that identifies the physical interface
+          required: true
+          type: string
+        - name: resource-version
+          in: query
+          description: resource-version for concurrency
+          required: true
+          type: string
+  /network/vpls-pes/vpls-pe/{equipment-name}/p-interfaces:
+    get:
+      tags:
+        - Network
+      summary: returns p-interfaces
+      description: returns p-interfaces
+      operationId: getNetworkVplsPesVplsPePInterfaces
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "200":
+          description: successful operation
+          schema:
+              $ref: "#/definitions/p-interfaces"
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: equipment-name
+          in: path
+          required: true
+          type: string
+        - name: prov-status
+          in: query
+          description: Trigger for operational monitoring of this VNF by BAU Service Assurance systems.
+          required: false
+          type: string
+  /network/vpls-pes/vpls-pe/{equipment-name}/lag-interfaces/lag-interface/{interface-name}/relationship-list/relationship:
+    put:
+      tags:
+        - Network
+      summary: see node definition for valid relationships
+      operationId: createOrUpdateNetworkVplsPesVplsPeLagInterfacesLagInterfaceRelationshipListRelationship
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: equipment-name
+          in: path
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name that identifies the link aggregate interface
+          required: true
+          type: string
+        - name: body
+          in: body
+          description: relationship object that needs to be created or updated
+          required: true
+          schema:
+            $ref: "#/definitions/relationship"
+    delete:
+      tags:
+        - Network
+      summary: delete an existing relationship
+      description: delete an existing relationship
+      operationId: deleteNetworkVplsPesVplsPeLagInterfacesLagInterfaceRelationshipListRelationship
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: equipment-name
+          in: path
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name that identifies the link aggregate interface
+          required: true
+          type: string
+  /network/vpls-pes/vpls-pe/{equipment-name}/lag-interfaces/lag-interface/{interface-name}/l-interfaces/l-interface/{interface-name}/vlans/vlan/{vlan-interface}/relationship-list/relationship:
+    put:
+      tags:
+        - Network
+      summary: see node definition for valid relationships
+      operationId: createOrUpdateNetworkVplsPesVplsPeLagInterfacesLagInterfaceLInterfacesLInterfaceVlansVlanRelationshipListRelationship
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: equipment-name
+          in: path
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name that identifies the link aggregate interface
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name given to the interface
+          required: true
+          type: string
+        - name: vlan-interface
+          in: path
+          description: String that identifies the interface
+          required: true
+          type: string
+        - name: body
+          in: body
+          description: relationship object that needs to be created or updated
+          required: true
+          schema:
+            $ref: "#/definitions/relationship"
+    delete:
+      tags:
+        - Network
+      summary: delete an existing relationship
+      description: delete an existing relationship
+      operationId: deleteNetworkVplsPesVplsPeLagInterfacesLagInterfaceLInterfacesLInterfaceVlansVlanRelationshipListRelationship
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: equipment-name
+          in: path
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name that identifies the link aggregate interface
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name given to the interface
+          required: true
+          type: string
+        - name: vlan-interface
+          in: path
+          description: String that identifies the interface
+          required: true
+          type: string
+  /network/vpls-pes/vpls-pe/{equipment-name}/lag-interfaces/lag-interface/{interface-name}/l-interfaces/l-interface/{interface-name}/vlans/vlan/{vlan-interface}/l3-interface-ipv4-address-list/{l3-interface-ipv4-address}/relationship-list/relationship:
+    put:
+      tags:
+        - Network
+      summary: see node definition for valid relationships
+      operationId: createOrUpdateNetworkVplsPesVplsPeLagInterfacesLagInterfaceLInterfacesLInterfaceVlansVlanL3InterfaceIpv4AddressListRelationshipListRelationship
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: equipment-name
+          in: path
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name that identifies the link aggregate interface
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name given to the interface
+          required: true
+          type: string
+        - name: vlan-interface
+          in: path
+          description: String that identifies the interface
+          required: true
+          type: string
+        - name: l3-interface-ipv4-address
+          in: path
+          description: IP address
+          required: true
+          type: string
+        - name: body
+          in: body
+          description: relationship object that needs to be created or updated
+          required: true
+          schema:
+            $ref: "#/definitions/relationship"
+    delete:
+      tags:
+        - Network
+      summary: delete an existing relationship
+      description: delete an existing relationship
+      operationId: deleteNetworkVplsPesVplsPeLagInterfacesLagInterfaceLInterfacesLInterfaceVlansVlanL3InterfaceIpv4AddressListRelationshipListRelationship
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: equipment-name
+          in: path
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name that identifies the link aggregate interface
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name given to the interface
+          required: true
+          type: string
+        - name: vlan-interface
+          in: path
+          description: String that identifies the interface
+          required: true
+          type: string
+        - name: l3-interface-ipv4-address
+          in: path
+          description: IP address
+          required: true
+          type: string
+  /network/vpls-pes/vpls-pe/{equipment-name}/lag-interfaces/lag-interface/{interface-name}/l-interfaces/l-interface/{interface-name}/vlans/vlan/{vlan-interface}/l3-interface-ipv4-address-list/{l3-interface-ipv4-address}:
+    get:
+      tags:
+        - Network
+      summary: returns l3-interface-ipv4-address-list
+      description: returns l3-interface-ipv4-address-list
+      operationId: getNetworkVplsPesVplsPeLagInterfacesLagInterfaceLInterfacesLInterfaceVlansVlanL3InterfaceIpv4AddressList
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "200":
+          description: successful operation
+          schema:
+              $ref: "#/definitions/l3-interface-ipv4-address-list"
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: equipment-name
+          in: path
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name that identifies the link aggregate interface
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name given to the interface
+          required: true
+          type: string
+        - name: vlan-interface
+          in: path
+          description: String that identifies the interface
+          required: true
+          type: string
+        - name: l3-interface-ipv4-address
+          in: path
+          description: IP address
+          required: true
+          type: string
+        - name: prov-status
+          in: query
+          description: Trigger for operational monitoring of this VNF by BAU Service Assurance systems.
+          required: false
+          type: string
+        - name: interface-id
+          in: query
+          description: ID of interface
+          required: false
+          type: string
+        - name: interface-role
+          in: query
+          description: Role assigned to this Interface, should use values as defined in ECOMP Yang models.
+          required: false
+          type: string
+        - name: interface-id
+          in: query
+          description: ID of interface
+          required: false
+          type: string
+        - name: macaddr
+          in: query
+          description: MAC address for the interface
+          required: false
+          type: string
+        - name: network-name
+          in: query
+          description: Name of the network
+          required: false
+          type: string
+        - name: vlan-id-inner
+          in: query
+          description: Inner VLAN tag
+          required: false
+          type: integer
+          format: int64
+        - name: vpn-key
+          in: query
+          description: This indicates the customers VPN ID associated with this vlan
+          required: false
+          type: string
+        - name: vlan-id-inner
+          in: query
+          description: Inner VLAN tag
+          required: false
+          type: integer
+          format: int64
+        - name: neutron-network-id
+          in: query
+          description: Neutron network id of the interface that address belongs to
+          required: false
+          type: string
+        - name: neutron-subnet-id
+          in: query
+          description: Neutron id of subnet that address belongs to
+          required: false
+          type: string
+    put:
+      tags:
+        - Network
+      summary: create or update an existing l3-interface-ipv4-address-list
+      description: create or update an existing l3-interface-ipv4-address-list
+      operationId: createOrUpdateNetworkVplsPesVplsPeLagInterfacesLagInterfaceLInterfacesLInterfaceVlansVlanL3InterfaceIpv4AddressList
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: equipment-name
+          in: path
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name that identifies the link aggregate interface
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name given to the interface
+          required: true
+          type: string
+        - name: vlan-interface
+          in: path
+          description: String that identifies the interface
+          required: true
+          type: string
+        - name: l3-interface-ipv4-address
+          in: path
+          description: IP address
+          required: true
+          type: string
+        - name: body
+          in: body
+          description: l3-interface-ipv4-address-list object that needs to be created or updated
+          required: true
+          schema:
+            $ref: "#/definitions/l3-interface-ipv4-address-list"
+    delete:
+      tags:
+        - Network
+      summary: delete an existing l3-interface-ipv4-address-list
+      description: delete an existing l3-interface-ipv4-address-list
+      operationId: deleteNetworkVplsPesVplsPeLagInterfacesLagInterfaceLInterfacesLInterfaceVlansVlanL3InterfaceIpv4AddressList
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: equipment-name
+          in: path
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name that identifies the link aggregate interface
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name given to the interface
+          required: true
+          type: string
+        - name: vlan-interface
+          in: path
+          description: String that identifies the interface
+          required: true
+          type: string
+        - name: l3-interface-ipv4-address
+          in: path
+          description: IP address
+          required: true
+          type: string
+        - name: resource-version
+          in: query
+          description: resource-version for concurrency
+          required: true
+          type: string
+  /network/vpls-pes/vpls-pe/{equipment-name}/lag-interfaces/lag-interface/{interface-name}/l-interfaces/l-interface/{interface-name}/vlans/vlan/{vlan-interface}/l3-interface-ipv6-address-list/{l3-interface-ipv6-address}/relationship-list/relationship:
+    put:
+      tags:
+        - Network
+      summary: see node definition for valid relationships
+      operationId: createOrUpdateNetworkVplsPesVplsPeLagInterfacesLagInterfaceLInterfacesLInterfaceVlansVlanL3InterfaceIpv6AddressListRelationshipListRelationship
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: equipment-name
+          in: path
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name that identifies the link aggregate interface
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name given to the interface
+          required: true
+          type: string
+        - name: vlan-interface
+          in: path
+          description: String that identifies the interface
+          required: true
+          type: string
+        - name: l3-interface-ipv6-address
+          in: path
+          description: IP address
+          required: true
+          type: string
+        - name: body
+          in: body
+          description: relationship object that needs to be created or updated
+          required: true
+          schema:
+            $ref: "#/definitions/relationship"
+    delete:
+      tags:
+        - Network
+      summary: delete an existing relationship
+      description: delete an existing relationship
+      operationId: deleteNetworkVplsPesVplsPeLagInterfacesLagInterfaceLInterfacesLInterfaceVlansVlanL3InterfaceIpv6AddressListRelationshipListRelationship
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: equipment-name
+          in: path
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name that identifies the link aggregate interface
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name given to the interface
+          required: true
+          type: string
+        - name: vlan-interface
+          in: path
+          description: String that identifies the interface
+          required: true
+          type: string
+        - name: l3-interface-ipv6-address
+          in: path
+          description: IP address
+          required: true
+          type: string
+  /network/vpls-pes/vpls-pe/{equipment-name}/lag-interfaces/lag-interface/{interface-name}/l-interfaces/l-interface/{interface-name}/vlans/vlan/{vlan-interface}/l3-interface-ipv6-address-list/{l3-interface-ipv6-address}:
+    get:
+      tags:
+        - Network
+      summary: returns l3-interface-ipv6-address-list
+      description: returns l3-interface-ipv6-address-list
+      operationId: getNetworkVplsPesVplsPeLagInterfacesLagInterfaceLInterfacesLInterfaceVlansVlanL3InterfaceIpv6AddressList
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "200":
+          description: successful operation
+          schema:
+              $ref: "#/definitions/l3-interface-ipv6-address-list"
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: equipment-name
+          in: path
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name that identifies the link aggregate interface
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name given to the interface
+          required: true
+          type: string
+        - name: vlan-interface
+          in: path
+          description: String that identifies the interface
+          required: true
+          type: string
+        - name: l3-interface-ipv6-address
+          in: path
+          description: IP address
+          required: true
+          type: string
+        - name: prov-status
+          in: query
+          description: Trigger for operational monitoring of this VNF by BAU Service Assurance systems.
+          required: false
+          type: string
+        - name: interface-id
+          in: query
+          description: ID of interface
+          required: false
+          type: string
+        - name: interface-role
+          in: query
+          description: Role assigned to this Interface, should use values as defined in ECOMP Yang models.
+          required: false
+          type: string
+        - name: interface-id
+          in: query
+          description: ID of interface
+          required: false
+          type: string
+        - name: macaddr
+          in: query
+          description: MAC address for the interface
+          required: false
+          type: string
+        - name: network-name
+          in: query
+          description: Name of the network
+          required: false
+          type: string
+        - name: vlan-id-inner
+          in: query
+          description: Inner VLAN tag
+          required: false
+          type: integer
+          format: int64
+        - name: vpn-key
+          in: query
+          description: This indicates the customers VPN ID associated with this vlan
+          required: false
+          type: string
+        - name: vlan-id-inner
+          in: query
+          description: Inner VLAN tag
+          required: false
+          type: integer
+          format: int64
+        - name: neutron-network-id
+          in: query
+          description: Neutron network id of the interface that address belongs to
+          required: false
+          type: string
+        - name: neutron-subnet-id
+          in: query
+          description: Neutron id of subnet that address belongs to
+          required: false
+          type: string
+    put:
+      tags:
+        - Network
+      summary: create or update an existing l3-interface-ipv6-address-list
+      description: create or update an existing l3-interface-ipv6-address-list
+      operationId: createOrUpdateNetworkVplsPesVplsPeLagInterfacesLagInterfaceLInterfacesLInterfaceVlansVlanL3InterfaceIpv6AddressList
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: equipment-name
+          in: path
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name that identifies the link aggregate interface
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name given to the interface
+          required: true
+          type: string
+        - name: vlan-interface
+          in: path
+          description: String that identifies the interface
+          required: true
+          type: string
+        - name: l3-interface-ipv6-address
+          in: path
+          description: IP address
+          required: true
+          type: string
+        - name: body
+          in: body
+          description: l3-interface-ipv6-address-list object that needs to be created or updated
+          required: true
+          schema:
+            $ref: "#/definitions/l3-interface-ipv6-address-list"
+    delete:
+      tags:
+        - Network
+      summary: delete an existing l3-interface-ipv6-address-list
+      description: delete an existing l3-interface-ipv6-address-list
+      operationId: deleteNetworkVplsPesVplsPeLagInterfacesLagInterfaceLInterfacesLInterfaceVlansVlanL3InterfaceIpv6AddressList
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: equipment-name
+          in: path
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name that identifies the link aggregate interface
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name given to the interface
+          required: true
+          type: string
+        - name: vlan-interface
+          in: path
+          description: String that identifies the interface
+          required: true
+          type: string
+        - name: l3-interface-ipv6-address
+          in: path
+          description: IP address
+          required: true
+          type: string
+        - name: resource-version
+          in: query
+          description: resource-version for concurrency
+          required: true
+          type: string
+  /network/vpls-pes/vpls-pe/{equipment-name}/lag-interfaces/lag-interface/{interface-name}/l-interfaces/l-interface/{interface-name}/vlans/vlan/{vlan-interface}:
+    get:
+      tags:
+        - Network
+      summary: returns vlan
+      description: returns vlan
+      operationId: getNetworkVplsPesVplsPeLagInterfacesLagInterfaceLInterfacesLInterfaceVlansVlan
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "200":
+          description: successful operation
+          schema:
+              $ref: "#/definitions/vlan"
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: equipment-name
+          in: path
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name that identifies the link aggregate interface
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name given to the interface
+          required: true
+          type: string
+        - name: vlan-interface
+          in: path
+          description: String that identifies the interface
+          required: true
+          type: string
+        - name: prov-status
+          in: query
+          description: Trigger for operational monitoring of this VNF by BAU Service Assurance systems.
+          required: false
+          type: string
+        - name: interface-id
+          in: query
+          description: ID of interface
+          required: false
+          type: string
+        - name: interface-role
+          in: query
+          description: Role assigned to this Interface, should use values as defined in ECOMP Yang models.
+          required: false
+          type: string
+        - name: interface-id
+          in: query
+          description: ID of interface
+          required: false
+          type: string
+        - name: macaddr
+          in: query
+          description: MAC address for the interface
+          required: false
+          type: string
+        - name: network-name
+          in: query
+          description: Name of the network
+          required: false
+          type: string
+        - name: vlan-id-inner
+          in: query
+          description: Inner VLAN tag
+          required: false
+          type: integer
+          format: int64
+        - name: vpn-key
+          in: query
+          description: This indicates the customers VPN ID associated with this vlan
+          required: false
+          type: string
+    put:
+      tags:
+        - Network
+      summary: create or update an existing vlan
+      description: create or update an existing vlan
+      operationId: createOrUpdateNetworkVplsPesVplsPeLagInterfacesLagInterfaceLInterfacesLInterfaceVlansVlan
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: equipment-name
+          in: path
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name that identifies the link aggregate interface
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name given to the interface
+          required: true
+          type: string
+        - name: vlan-interface
+          in: path
+          description: String that identifies the interface
+          required: true
+          type: string
+        - name: body
+          in: body
+          description: vlan object that needs to be created or updated
+          required: true
+          schema:
+            $ref: "#/definitions/vlan"
+    delete:
+      tags:
+        - Network
+      summary: delete an existing vlan
+      description: delete an existing vlan
+      operationId: deleteNetworkVplsPesVplsPeLagInterfacesLagInterfaceLInterfacesLInterfaceVlansVlan
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: equipment-name
+          in: path
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name that identifies the link aggregate interface
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name given to the interface
+          required: true
+          type: string
+        - name: vlan-interface
+          in: path
+          description: String that identifies the interface
+          required: true
+          type: string
+        - name: resource-version
+          in: query
+          description: resource-version for concurrency
+          required: true
+          type: string
+  /network/vpls-pes/vpls-pe/{equipment-name}/lag-interfaces/lag-interface/{interface-name}/l-interfaces/l-interface/{interface-name}/vlans:
+    get:
+      tags:
+        - Network
+      summary: returns vlans
+      description: returns vlans
+      operationId: getNetworkVplsPesVplsPeLagInterfacesLagInterfaceLInterfacesLInterfaceVlans
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "200":
+          description: successful operation
+          schema:
+              $ref: "#/definitions/vlans"
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: equipment-name
+          in: path
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name that identifies the link aggregate interface
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name given to the interface
+          required: true
+          type: string
+        - name: prov-status
+          in: query
+          description: Trigger for operational monitoring of this VNF by BAU Service Assurance systems.
+          required: false
+          type: string
+        - name: interface-id
+          in: query
+          description: ID of interface
+          required: false
+          type: string
+        - name: interface-role
+          in: query
+          description: Role assigned to this Interface, should use values as defined in ECOMP Yang models.
+          required: false
+          type: string
+        - name: interface-id
+          in: query
+          description: ID of interface
+          required: false
+          type: string
+        - name: macaddr
+          in: query
+          description: MAC address for the interface
+          required: false
+          type: string
+        - name: network-name
+          in: query
+          description: Name of the network
+          required: false
+          type: string
+  /network/vpls-pes/vpls-pe/{equipment-name}/lag-interfaces/lag-interface/{interface-name}/l-interfaces/l-interface/{interface-name}/sriov-vfs/sriov-vf/{pci-id}/relationship-list/relationship:
+    put:
+      tags:
+        - Network
+      summary: see node definition for valid relationships
+      operationId: createOrUpdateNetworkVplsPesVplsPeLagInterfacesLagInterfaceLInterfacesLInterfaceSriovVfsSriovVfRelationshipListRelationship
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: equipment-name
+          in: path
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name that identifies the link aggregate interface
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name given to the interface
+          required: true
+          type: string
+        - name: pci-id
+          in: path
+          description: PCI ID used to identify the sriov-vf
+          required: true
+          type: string
+        - name: body
+          in: body
+          description: relationship object that needs to be created or updated
+          required: true
+          schema:
+            $ref: "#/definitions/relationship"
+    delete:
+      tags:
+        - Network
+      summary: delete an existing relationship
+      description: delete an existing relationship
+      operationId: deleteNetworkVplsPesVplsPeLagInterfacesLagInterfaceLInterfacesLInterfaceSriovVfsSriovVfRelationshipListRelationship
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: equipment-name
+          in: path
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name that identifies the link aggregate interface
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name given to the interface
+          required: true
+          type: string
+        - name: pci-id
+          in: path
+          description: PCI ID used to identify the sriov-vf
+          required: true
+          type: string
+  /network/vpls-pes/vpls-pe/{equipment-name}/lag-interfaces/lag-interface/{interface-name}/l-interfaces/l-interface/{interface-name}/sriov-vfs/sriov-vf/{pci-id}:
+    get:
+      tags:
+        - Network
+      summary: returns sriov-vf
+      description: returns sriov-vf
+      operationId: getNetworkVplsPesVplsPeLagInterfacesLagInterfaceLInterfacesLInterfaceSriovVfsSriovVf
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "200":
+          description: successful operation
+          schema:
+              $ref: "#/definitions/sriov-vf"
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: equipment-name
+          in: path
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name that identifies the link aggregate interface
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name given to the interface
+          required: true
+          type: string
+        - name: pci-id
+          in: path
+          description: PCI ID used to identify the sriov-vf
+          required: true
+          type: string
+        - name: prov-status
+          in: query
+          description: Trigger for operational monitoring of this VNF by BAU Service Assurance systems.
+          required: false
+          type: string
+        - name: interface-id
+          in: query
+          description: ID of interface
+          required: false
+          type: string
+        - name: interface-role
+          in: query
+          description: Role assigned to this Interface, should use values as defined in ECOMP Yang models.
+          required: false
+          type: string
+        - name: interface-id
+          in: query
+          description: ID of interface
+          required: false
+          type: string
+        - name: macaddr
+          in: query
+          description: MAC address for the interface
+          required: false
+          type: string
+        - name: network-name
+          in: query
+          description: Name of the network
+          required: false
+          type: string
+        - name: vf-vlan-filter
+          in: query
+          description: This metadata provides option to specify list of VLAN filters applied on VF to pass the traffic to VM.
+          required: false
+          type: string
+        - name: vf-mac-filter
+          in: query
+          description: When MAC filters are specified, VF-agent service configures VFs to do MAC level filtering before the traffic is passed to VM.
+          required: false
+          type: string
+        - name: vf-vlan-strip
+          in: query
+          description: When this field is set to true, VF will configured to strip the outer TAG before the traffic is passed to VM.
+          required: false
+          type: boolean
+        - name: neutron-network-id
+          in: query
+          description: Neutron network id of the interface
+          required: false
+          type: string
+    put:
+      tags:
+        - Network
+      summary: create or update an existing sriov-vf
+      description: create or update an existing sriov-vf
+      operationId: createOrUpdateNetworkVplsPesVplsPeLagInterfacesLagInterfaceLInterfacesLInterfaceSriovVfsSriovVf
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: equipment-name
+          in: path
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name that identifies the link aggregate interface
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name given to the interface
+          required: true
+          type: string
+        - name: pci-id
+          in: path
+          description: PCI ID used to identify the sriov-vf
+          required: true
+          type: string
+        - name: body
+          in: body
+          description: sriov-vf object that needs to be created or updated
+          required: true
+          schema:
+            $ref: "#/definitions/sriov-vf"
+    delete:
+      tags:
+        - Network
+      summary: delete an existing sriov-vf
+      description: delete an existing sriov-vf
+      operationId: deleteNetworkVplsPesVplsPeLagInterfacesLagInterfaceLInterfacesLInterfaceSriovVfsSriovVf
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: equipment-name
+          in: path
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name that identifies the link aggregate interface
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name given to the interface
+          required: true
+          type: string
+        - name: pci-id
+          in: path
+          description: PCI ID used to identify the sriov-vf
+          required: true
+          type: string
+        - name: resource-version
+          in: query
+          description: resource-version for concurrency
+          required: true
+          type: string
+  /network/vpls-pes/vpls-pe/{equipment-name}/lag-interfaces/lag-interface/{interface-name}/l-interfaces/l-interface/{interface-name}/sriov-vfs:
+    get:
+      tags:
+        - Network
+      summary: returns sriov-vfs
+      description: returns sriov-vfs
+      operationId: getNetworkVplsPesVplsPeLagInterfacesLagInterfaceLInterfacesLInterfaceSriovVfs
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "200":
+          description: successful operation
+          schema:
+              $ref: "#/definitions/sriov-vfs"
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: equipment-name
+          in: path
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name that identifies the link aggregate interface
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name given to the interface
+          required: true
+          type: string
+        - name: prov-status
+          in: query
+          description: Trigger for operational monitoring of this VNF by BAU Service Assurance systems.
+          required: false
+          type: string
+        - name: interface-id
+          in: query
+          description: ID of interface
+          required: false
+          type: string
+        - name: interface-role
+          in: query
+          description: Role assigned to this Interface, should use values as defined in ECOMP Yang models.
+          required: false
+          type: string
+        - name: interface-id
+          in: query
+          description: ID of interface
+          required: false
+          type: string
+        - name: macaddr
+          in: query
+          description: MAC address for the interface
+          required: false
+          type: string
+        - name: network-name
+          in: query
+          description: Name of the network
+          required: false
+          type: string
+  /network/vpls-pes/vpls-pe/{equipment-name}/lag-interfaces/lag-interface/{interface-name}/l-interfaces/l-interface/{interface-name}/relationship-list/relationship:
+    put:
+      tags:
+        - Network
+      summary: see node definition for valid relationships
+      operationId: createOrUpdateNetworkVplsPesVplsPeLagInterfacesLagInterfaceLInterfacesLInterfaceRelationshipListRelationship
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: equipment-name
+          in: path
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name that identifies the link aggregate interface
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name given to the interface
+          required: true
+          type: string
+        - name: body
+          in: body
+          description: relationship object that needs to be created or updated
+          required: true
+          schema:
+            $ref: "#/definitions/relationship"
+    delete:
+      tags:
+        - Network
+      summary: delete an existing relationship
+      description: delete an existing relationship
+      operationId: deleteNetworkVplsPesVplsPeLagInterfacesLagInterfaceLInterfacesLInterfaceRelationshipListRelationship
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: equipment-name
+          in: path
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name that identifies the link aggregate interface
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name given to the interface
+          required: true
+          type: string
+  /network/vpls-pes/vpls-pe/{equipment-name}/lag-interfaces/lag-interface/{interface-name}/l-interfaces/l-interface/{interface-name}/l3-interface-ipv4-address-list/{l3-interface-ipv4-address}/relationship-list/relationship:
+    put:
+      tags:
+        - Network
+      summary: see node definition for valid relationships
+      operationId: createOrUpdateNetworkVplsPesVplsPeLagInterfacesLagInterfaceLInterfacesLInterfaceL3InterfaceIpv4AddressListRelationshipListRelationship
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: equipment-name
+          in: path
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name that identifies the link aggregate interface
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name given to the interface
+          required: true
+          type: string
+        - name: l3-interface-ipv4-address
+          in: path
+          description: IP address
+          required: true
+          type: string
+        - name: body
+          in: body
+          description: relationship object that needs to be created or updated
+          required: true
+          schema:
+            $ref: "#/definitions/relationship"
+    delete:
+      tags:
+        - Network
+      summary: delete an existing relationship
+      description: delete an existing relationship
+      operationId: deleteNetworkVplsPesVplsPeLagInterfacesLagInterfaceLInterfacesLInterfaceL3InterfaceIpv4AddressListRelationshipListRelationship
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: equipment-name
+          in: path
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name that identifies the link aggregate interface
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name given to the interface
+          required: true
+          type: string
+        - name: l3-interface-ipv4-address
+          in: path
+          description: IP address
+          required: true
+          type: string
+  /network/vpls-pes/vpls-pe/{equipment-name}/lag-interfaces/lag-interface/{interface-name}/l-interfaces/l-interface/{interface-name}/l3-interface-ipv4-address-list/{l3-interface-ipv4-address}:
+    get:
+      tags:
+        - Network
+      summary: returns l3-interface-ipv4-address-list
+      description: returns l3-interface-ipv4-address-list
+      operationId: getNetworkVplsPesVplsPeLagInterfacesLagInterfaceLInterfacesLInterfaceL3InterfaceIpv4AddressList
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "200":
+          description: successful operation
+          schema:
+              $ref: "#/definitions/l3-interface-ipv4-address-list"
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: equipment-name
+          in: path
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name that identifies the link aggregate interface
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name given to the interface
+          required: true
+          type: string
+        - name: l3-interface-ipv4-address
+          in: path
+          description: IP address
+          required: true
+          type: string
+        - name: prov-status
+          in: query
+          description: Trigger for operational monitoring of this VNF by BAU Service Assurance systems.
+          required: false
+          type: string
+        - name: interface-id
+          in: query
+          description: ID of interface
+          required: false
+          type: string
+        - name: interface-role
+          in: query
+          description: Role assigned to this Interface, should use values as defined in ECOMP Yang models.
+          required: false
+          type: string
+        - name: interface-id
+          in: query
+          description: ID of interface
+          required: false
+          type: string
+        - name: macaddr
+          in: query
+          description: MAC address for the interface
+          required: false
+          type: string
+        - name: network-name
+          in: query
+          description: Name of the network
+          required: false
+          type: string
+        - name: vlan-id-inner
+          in: query
+          description: Inner VLAN tag
+          required: false
+          type: integer
+          format: int64
+        - name: neutron-network-id
+          in: query
+          description: Neutron network id of the interface that address belongs to
+          required: false
+          type: string
+        - name: neutron-subnet-id
+          in: query
+          description: Neutron id of subnet that address belongs to
+          required: false
+          type: string
+    put:
+      tags:
+        - Network
+      summary: create or update an existing l3-interface-ipv4-address-list
+      description: create or update an existing l3-interface-ipv4-address-list
+      operationId: createOrUpdateNetworkVplsPesVplsPeLagInterfacesLagInterfaceLInterfacesLInterfaceL3InterfaceIpv4AddressList
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: equipment-name
+          in: path
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name that identifies the link aggregate interface
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name given to the interface
+          required: true
+          type: string
+        - name: l3-interface-ipv4-address
+          in: path
+          description: IP address
+          required: true
+          type: string
+        - name: body
+          in: body
+          description: l3-interface-ipv4-address-list object that needs to be created or updated
+          required: true
+          schema:
+            $ref: "#/definitions/l3-interface-ipv4-address-list"
+    delete:
+      tags:
+        - Network
+      summary: delete an existing l3-interface-ipv4-address-list
+      description: delete an existing l3-interface-ipv4-address-list
+      operationId: deleteNetworkVplsPesVplsPeLagInterfacesLagInterfaceLInterfacesLInterfaceL3InterfaceIpv4AddressList
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: equipment-name
+          in: path
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name that identifies the link aggregate interface
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name given to the interface
+          required: true
+          type: string
+        - name: l3-interface-ipv4-address
+          in: path
+          description: IP address
+          required: true
+          type: string
+        - name: resource-version
+          in: query
+          description: resource-version for concurrency
+          required: true
+          type: string
+  /network/vpls-pes/vpls-pe/{equipment-name}/lag-interfaces/lag-interface/{interface-name}/l-interfaces/l-interface/{interface-name}/l3-interface-ipv6-address-list/{l3-interface-ipv6-address}/relationship-list/relationship:
+    put:
+      tags:
+        - Network
+      summary: see node definition for valid relationships
+      operationId: createOrUpdateNetworkVplsPesVplsPeLagInterfacesLagInterfaceLInterfacesLInterfaceL3InterfaceIpv6AddressListRelationshipListRelationship
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: equipment-name
+          in: path
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name that identifies the link aggregate interface
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name given to the interface
+          required: true
+          type: string
+        - name: l3-interface-ipv6-address
+          in: path
+          description: IP address
+          required: true
+          type: string
+        - name: body
+          in: body
+          description: relationship object that needs to be created or updated
+          required: true
+          schema:
+            $ref: "#/definitions/relationship"
+    delete:
+      tags:
+        - Network
+      summary: delete an existing relationship
+      description: delete an existing relationship
+      operationId: deleteNetworkVplsPesVplsPeLagInterfacesLagInterfaceLInterfacesLInterfaceL3InterfaceIpv6AddressListRelationshipListRelationship
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: equipment-name
+          in: path
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name that identifies the link aggregate interface
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name given to the interface
+          required: true
+          type: string
+        - name: l3-interface-ipv6-address
+          in: path
+          description: IP address
+          required: true
+          type: string
+  /network/vpls-pes/vpls-pe/{equipment-name}/lag-interfaces/lag-interface/{interface-name}/l-interfaces/l-interface/{interface-name}/l3-interface-ipv6-address-list/{l3-interface-ipv6-address}:
+    get:
+      tags:
+        - Network
+      summary: returns l3-interface-ipv6-address-list
+      description: returns l3-interface-ipv6-address-list
+      operationId: getNetworkVplsPesVplsPeLagInterfacesLagInterfaceLInterfacesLInterfaceL3InterfaceIpv6AddressList
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "200":
+          description: successful operation
+          schema:
+              $ref: "#/definitions/l3-interface-ipv6-address-list"
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: equipment-name
+          in: path
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name that identifies the link aggregate interface
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name given to the interface
+          required: true
+          type: string
+        - name: l3-interface-ipv6-address
+          in: path
+          description: IP address
+          required: true
+          type: string
+        - name: prov-status
+          in: query
+          description: Trigger for operational monitoring of this VNF by BAU Service Assurance systems.
+          required: false
+          type: string
+        - name: interface-id
+          in: query
+          description: ID of interface
+          required: false
+          type: string
+        - name: interface-role
+          in: query
+          description: Role assigned to this Interface, should use values as defined in ECOMP Yang models.
+          required: false
+          type: string
+        - name: interface-id
+          in: query
+          description: ID of interface
+          required: false
+          type: string
+        - name: macaddr
+          in: query
+          description: MAC address for the interface
+          required: false
+          type: string
+        - name: network-name
+          in: query
+          description: Name of the network
+          required: false
+          type: string
+        - name: vlan-id-inner
+          in: query
+          description: Inner VLAN tag
+          required: false
+          type: integer
+          format: int64
+        - name: neutron-network-id
+          in: query
+          description: Neutron network id of the interface that address belongs to
+          required: false
+          type: string
+        - name: neutron-subnet-id
+          in: query
+          description: Neutron id of subnet that address belongs to
+          required: false
+          type: string
+    put:
+      tags:
+        - Network
+      summary: create or update an existing l3-interface-ipv6-address-list
+      description: create or update an existing l3-interface-ipv6-address-list
+      operationId: createOrUpdateNetworkVplsPesVplsPeLagInterfacesLagInterfaceLInterfacesLInterfaceL3InterfaceIpv6AddressList
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: equipment-name
+          in: path
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name that identifies the link aggregate interface
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name given to the interface
+          required: true
+          type: string
+        - name: l3-interface-ipv6-address
+          in: path
+          description: IP address
+          required: true
+          type: string
+        - name: body
+          in: body
+          description: l3-interface-ipv6-address-list object that needs to be created or updated
+          required: true
+          schema:
+            $ref: "#/definitions/l3-interface-ipv6-address-list"
+    delete:
+      tags:
+        - Network
+      summary: delete an existing l3-interface-ipv6-address-list
+      description: delete an existing l3-interface-ipv6-address-list
+      operationId: deleteNetworkVplsPesVplsPeLagInterfacesLagInterfaceLInterfacesLInterfaceL3InterfaceIpv6AddressList
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: equipment-name
+          in: path
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name that identifies the link aggregate interface
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name given to the interface
+          required: true
+          type: string
+        - name: l3-interface-ipv6-address
+          in: path
+          description: IP address
+          required: true
+          type: string
+        - name: resource-version
+          in: query
+          description: resource-version for concurrency
+          required: true
+          type: string
+  /network/vpls-pes/vpls-pe/{equipment-name}/lag-interfaces/lag-interface/{interface-name}/l-interfaces/l-interface/{interface-name}:
+    get:
+      tags:
+        - Network
+      summary: returns l-interface
+      description: returns l-interface
+      operationId: getNetworkVplsPesVplsPeLagInterfacesLagInterfaceLInterfacesLInterface
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "200":
+          description: successful operation
+          schema:
+              $ref: "#/definitions/l-interface"
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: equipment-name
+          in: path
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name that identifies the link aggregate interface
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name given to the interface
+          required: true
+          type: string
+        - name: prov-status
+          in: query
+          description: Trigger for operational monitoring of this VNF by BAU Service Assurance systems.
+          required: false
+          type: string
+        - name: interface-id
+          in: query
+          description: ID of interface
+          required: false
+          type: string
+        - name: interface-role
+          in: query
+          description: Role assigned to this Interface, should use values as defined in ECOMP Yang models.
+          required: false
+          type: string
+        - name: interface-id
+          in: query
+          description: ID of interface
+          required: false
+          type: string
+        - name: macaddr
+          in: query
+          description: MAC address for the interface
+          required: false
+          type: string
+        - name: network-name
+          in: query
+          description: Name of the network
+          required: false
+          type: string
+    put:
+      tags:
+        - Network
+      summary: create or update an existing l-interface
+      description: create or update an existing l-interface
+      operationId: createOrUpdateNetworkVplsPesVplsPeLagInterfacesLagInterfaceLInterfacesLInterface
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: equipment-name
+          in: path
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name that identifies the link aggregate interface
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name given to the interface
+          required: true
+          type: string
+        - name: body
+          in: body
+          description: l-interface object that needs to be created or updated
+          required: true
+          schema:
+            $ref: "#/definitions/l-interface"
+    delete:
+      tags:
+        - Network
+      summary: delete an existing l-interface
+      description: delete an existing l-interface
+      operationId: deleteNetworkVplsPesVplsPeLagInterfacesLagInterfaceLInterfacesLInterface
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: equipment-name
+          in: path
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name that identifies the link aggregate interface
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name given to the interface
+          required: true
+          type: string
+        - name: resource-version
+          in: query
+          description: resource-version for concurrency
+          required: true
+          type: string
+  /network/vpls-pes/vpls-pe/{equipment-name}/lag-interfaces/lag-interface/{interface-name}/l-interfaces:
+    get:
+      tags:
+        - Network
+      summary: returns l-interfaces
+      description: returns l-interfaces
+      operationId: getNetworkVplsPesVplsPeLagInterfacesLagInterfaceLInterfaces
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "200":
+          description: successful operation
+          schema:
+              $ref: "#/definitions/l-interfaces"
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: equipment-name
+          in: path
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name that identifies the link aggregate interface
+          required: true
+          type: string
+        - name: prov-status
+          in: query
+          description: Trigger for operational monitoring of this VNF by BAU Service Assurance systems.
+          required: false
+          type: string
+        - name: interface-id
+          in: query
+          description: ID of interface
+          required: false
+          type: string
+        - name: interface-role
+          in: query
+          description: Role assigned to this Interface, should use values as defined in ECOMP Yang models.
+          required: false
+          type: string
+  /network/vpls-pes/vpls-pe/{equipment-name}/lag-interfaces/lag-interface/{interface-name}:
+    get:
+      tags:
+        - Network
+      summary: returns lag-interface
+      description: returns lag-interface
+      operationId: getNetworkVplsPesVplsPeLagInterfacesLagInterface
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "200":
+          description: successful operation
+          schema:
+              $ref: "#/definitions/lag-interface"
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: equipment-name
+          in: path
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name that identifies the link aggregate interface
+          required: true
+          type: string
+        - name: prov-status
+          in: query
+          description: Trigger for operational monitoring of this VNF by BAU Service Assurance systems.
+          required: false
+          type: string
+        - name: interface-id
+          in: query
+          description: ID of interface
+          required: false
+          type: string
+        - name: interface-role
+          in: query
+          description: Role assigned to this Interface, should use values as defined in ECOMP Yang models.
+          required: false
+          type: string
+    put:
+      tags:
+        - Network
+      summary: create or update an existing lag-interface
+      description: create or update an existing lag-interface
+      operationId: createOrUpdateNetworkVplsPesVplsPeLagInterfacesLagInterface
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: equipment-name
+          in: path
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name that identifies the link aggregate interface
+          required: true
+          type: string
+        - name: body
+          in: body
+          description: lag-interface object that needs to be created or updated
+          required: true
+          schema:
+            $ref: "#/definitions/lag-interface"
+    delete:
+      tags:
+        - Network
+      summary: delete an existing lag-interface
+      description: delete an existing lag-interface
+      operationId: deleteNetworkVplsPesVplsPeLagInterfacesLagInterface
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: equipment-name
+          in: path
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name that identifies the link aggregate interface
+          required: true
+          type: string
+        - name: resource-version
+          in: query
+          description: resource-version for concurrency
+          required: true
+          type: string
+  /network/vpls-pes/vpls-pe/{equipment-name}/lag-interfaces:
+    get:
+      tags:
+        - Network
+      summary: returns lag-interfaces
+      description: returns lag-interfaces
+      operationId: getNetworkVplsPesVplsPeLagInterfaces
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "200":
+          description: successful operation
+          schema:
+              $ref: "#/definitions/lag-interfaces"
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: equipment-name
+          in: path
+          required: true
+          type: string
+        - name: prov-status
+          in: query
+          description: Trigger for operational monitoring of this VNF by BAU Service Assurance systems.
+          required: false
+          type: string
+  /network/vpls-pes/vpls-pe/{equipment-name}:
+    get:
+      tags:
+        - Network
+      summary: returns vpls-pe
+      description: returns vpls-pe
+      operationId: getNetworkVplsPesVplsPe
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "200":
+          description: successful operation
+          schema:
+              $ref: "#/definitions/vpls-pe"
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: equipment-name
+          in: path
+          required: true
+          type: string
+        - name: prov-status
+          in: query
+          description: Trigger for operational monitoring of this VNF by BAU Service Assurance systems.
+          required: false
+          type: string
+    put:
+      tags:
+        - Network
+      summary: create or update an existing vpls-pe
+      description: create or update an existing vpls-pe
+      operationId: createOrUpdateNetworkVplsPesVplsPe
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: equipment-name
+          in: path
+          required: true
+          type: string
+        - name: body
+          in: body
+          description: vpls-pe object that needs to be created or updated
+          required: true
+          schema:
+            $ref: "#/definitions/vpls-pe"
+    delete:
+      tags:
+        - Network
+      summary: delete an existing vpls-pe
+      description: delete an existing vpls-pe
+      operationId: deleteNetworkVplsPesVplsPe
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: equipment-name
+          in: path
+          required: true
+          type: string
+        - name: resource-version
+          in: query
+          description: resource-version for concurrency
+          required: true
+          type: string
+  /network/vpls-pes:
+    get:
+      tags:
+        - Network
+      summary: returns vpls-pes
+      description: returns vpls-pes
+      operationId: getNetworkVplsPes
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "200":
+          description: successful operation
+          schema:
+              $ref: "#/definitions/vpls-pes"
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+  /network/multicast-configurations/multicast-configuration/{multicast-configuration-id}/relationship-list/relationship:
+    put:
+      tags:
+        - Network
+      summary: see node definition for valid relationships
+      operationId: createOrUpdateNetworkMulticastConfigurationsMulticastConfigurationRelationshipListRelationship
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: multicast-configuration-id
+          in: path
+          description: Unique id of multicast configuration.
+          required: true
+          type: string
+        - name: body
+          in: body
+          description: relationship object that needs to be created or updated
+          required: true
+          schema:
+            $ref: "#/definitions/relationship"
+    delete:
+      tags:
+        - Network
+      summary: delete an existing relationship
+      description: delete an existing relationship
+      operationId: deleteNetworkMulticastConfigurationsMulticastConfigurationRelationshipListRelationship
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: multicast-configuration-id
+          in: path
+          description: Unique id of multicast configuration.
+          required: true
+          type: string
+  /network/multicast-configurations/multicast-configuration/{multicast-configuration-id}:
+    get:
+      tags:
+        - Network
+      summary: returns multicast-configuration
+      description: returns multicast-configuration
+      operationId: getNetworkMulticastConfigurationsMulticastConfiguration
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "200":
+          description: successful operation
+          schema:
+              $ref: "#/definitions/multicast-configuration"
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: multicast-configuration-id
+          in: path
+          description: Unique id of multicast configuration.
+          required: true
+          type: string
+    put:
+      tags:
+        - Network
+      summary: create or update an existing multicast-configuration
+      description: create or update an existing multicast-configuration
+      operationId: createOrUpdateNetworkMulticastConfigurationsMulticastConfiguration
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: multicast-configuration-id
+          in: path
+          description: Unique id of multicast configuration.
+          required: true
+          type: string
+        - name: body
+          in: body
+          description: multicast-configuration object that needs to be created or updated
+          required: true
+          schema:
+            $ref: "#/definitions/multicast-configuration"
+    delete:
+      tags:
+        - Network
+      summary: delete an existing multicast-configuration
+      description: delete an existing multicast-configuration
+      operationId: deleteNetworkMulticastConfigurationsMulticastConfiguration
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: multicast-configuration-id
+          in: path
+          description: Unique id of multicast configuration.
+          required: true
+          type: string
+        - name: resource-version
+          in: query
+          description: resource-version for concurrency
+          required: true
+          type: string
+  /network/multicast-configurations:
+    get:
+      tags:
+        - Network
+      summary: returns multicast-configurations
+      description: returns multicast-configurations
+      operationId: getNetworkMulticastConfigurations
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "200":
+          description: successful operation
+          schema:
+              $ref: "#/definitions/multicast-configurations"
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+  /network/vces/vce/{vnf-id}/port-groups/port-group/{interface-id}/cvlan-tags/cvlan-tag-entry/{cvlan-tag}/relationship-list/relationship:
+    put:
+      tags:
+        - Network
+      summary: see node definition for valid relationships
+      operationId: createOrUpdateNetworkVcesVcePortGroupsPortGroupCvlanTagsCvlanTagEntryRelationshipListRelationship
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: vnf-id
+          in: path
+          description: Unique id of VNF.  This is unique across the graph.
+          required: true
+          type: string
+        - name: interface-id
+          in: path
+          description: Unique ID of the interface
+          required: true
+          type: string
+        - name: cvlan-tag
+          in: path
+          description: See mis-na-virtualization-platform.yang
+          required: true
+          type: integer
+          format: int64
+        - name: body
+          in: body
+          description: relationship object that needs to be created or updated
+          required: true
+          schema:
+            $ref: "#/definitions/relationship"
+    delete:
+      tags:
+        - Network
+      summary: delete an existing relationship
+      description: delete an existing relationship
+      operationId: deleteNetworkVcesVcePortGroupsPortGroupCvlanTagsCvlanTagEntryRelationshipListRelationship
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: vnf-id
+          in: path
+          description: Unique id of VNF.  This is unique across the graph.
+          required: true
+          type: string
+        - name: interface-id
+          in: path
+          description: Unique ID of the interface
+          required: true
+          type: string
+        - name: cvlan-tag
+          in: path
+          description: See mis-na-virtualization-platform.yang
+          required: true
+          type: integer
+          format: int64
+  /network/vces/vce/{vnf-id}/port-groups/port-group/{interface-id}/cvlan-tags/cvlan-tag-entry/{cvlan-tag}:
+    get:
+      tags:
+        - Network
+      summary: returns cvlan-tag-entry
+      description: returns cvlan-tag-entry
+      operationId: getNetworkVcesVcePortGroupsPortGroupCvlanTagsCvlanTagEntry
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "200":
+          description: successful operation
+          schema:
+              $ref: "#/definitions/cvlan-tag-entry"
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: vnf-id
+          in: path
+          description: Unique id of VNF.  This is unique across the graph.
+          required: true
+          type: string
+        - name: interface-id
+          in: path
+          description: Unique ID of the interface
+          required: true
+          type: string
+        - name: cvlan-tag
+          in: path
+          description: See mis-na-virtualization-platform.yang
+          required: true
+          type: integer
+          format: int64
+        - name: vnf-name
+          in: query
+          description: Name of VNF.
+          required: false
+          type: string
+        - name: vnf-name2
+          in: query
+          description: Alternate name of VNF.
+          required: false
+          type: string
+        - name: vnf-type
+          in: query
+          description: String capturing type of vnf, that was intended to identify the ASDC resource.  This field has been overloaded in service-specific ways and clients should expect changes to occur in the future to this field as ECOMP matures.
+          required: false
+          type: string
+        - name: service-id
+          in: query
+          description: Unique identifier of service, does not strictly map to ASDC services, SOON TO BE DEPRECATED.
+          required: false
+          type: string
+        - name: regional-resource-zone
+          in: query
+          description: Regional way of organizing pservers, source of truth should define values
+          required: false
+          type: string
+        - name: prov-status
+          in: query
+          description: Trigger for operational monitoring of this resource by Service Assurance systems.
+          required: false
+          type: string
+        - name: heat-stack-id
+          in: query
+          description: Heat stack id corresponding to this instance, managed by MSO
+          required: false
+          type: string
+        - name: vpe-id
+          in: query
+          description: Unique ID of VPE connected to this VCE.
+          required: false
+          type: string
+        - name: port-group-id
+          in: query
+          description: Unique ID for port group in vmware
+          required: false
+          type: string
+        - name: switch-name
+          in: query
+          description: DVS or standard switch name (should be non-null for port groups associated with DVS)
+          required: false
+          type: string
+        - name: heat-stack-id
+          in: query
+          description: Heat stack id corresponding to this instance, managed by MSO
+          required: false
+          type: string
+    put:
+      tags:
+        - Network
+      summary: create or update an existing cvlan-tag-entry
+      description: create or update an existing cvlan-tag-entry
+      operationId: createOrUpdateNetworkVcesVcePortGroupsPortGroupCvlanTagsCvlanTagEntry
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: vnf-id
+          in: path
+          description: Unique id of VNF.  This is unique across the graph.
+          required: true
+          type: string
+        - name: interface-id
+          in: path
+          description: Unique ID of the interface
+          required: true
+          type: string
+        - name: cvlan-tag
+          in: path
+          description: See mis-na-virtualization-platform.yang
+          required: true
+          type: integer
+          format: int64
+        - name: body
+          in: body
+          description: cvlan-tag-entry object that needs to be created or updated
+          required: true
+          schema:
+            $ref: "#/definitions/cvlan-tag-entry"
+    delete:
+      tags:
+        - Network
+      summary: delete an existing cvlan-tag-entry
+      description: delete an existing cvlan-tag-entry
+      operationId: deleteNetworkVcesVcePortGroupsPortGroupCvlanTagsCvlanTagEntry
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: vnf-id
+          in: path
+          description: Unique id of VNF.  This is unique across the graph.
+          required: true
+          type: string
+        - name: interface-id
+          in: path
+          description: Unique ID of the interface
+          required: true
+          type: string
+        - name: cvlan-tag
+          in: path
+          description: See mis-na-virtualization-platform.yang
+          required: true
+          type: integer
+          format: int64
+        - name: resource-version
+          in: query
+          description: resource-version for concurrency
+          required: true
+          type: string
+  /network/vces/vce/{vnf-id}/port-groups/port-group/{interface-id}/cvlan-tags:
+    get:
+      tags:
+        - Network
+      summary: returns cvlan-tags
+      description: returns cvlan-tags
+      operationId: getNetworkVcesVcePortGroupsPortGroupCvlanTags
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "200":
+          description: successful operation
+          schema:
+              $ref: "#/definitions/cvlan-tags"
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: vnf-id
+          in: path
+          description: Unique id of VNF.  This is unique across the graph.
+          required: true
+          type: string
+        - name: interface-id
+          in: path
+          description: Unique ID of the interface
+          required: true
+          type: string
+        - name: vnf-name
+          in: query
+          description: Name of VNF.
+          required: false
+          type: string
+        - name: vnf-name2
+          in: query
+          description: Alternate name of VNF.
+          required: false
+          type: string
+        - name: vnf-type
+          in: query
+          description: String capturing type of vnf, that was intended to identify the ASDC resource.  This field has been overloaded in service-specific ways and clients should expect changes to occur in the future to this field as ECOMP matures.
+          required: false
+          type: string
+        - name: service-id
+          in: query
+          description: Unique identifier of service, does not strictly map to ASDC services, SOON TO BE DEPRECATED.
+          required: false
+          type: string
+        - name: regional-resource-zone
+          in: query
+          description: Regional way of organizing pservers, source of truth should define values
+          required: false
+          type: string
+        - name: prov-status
+          in: query
+          description: Trigger for operational monitoring of this resource by Service Assurance systems.
+          required: false
+          type: string
+        - name: heat-stack-id
+          in: query
+          description: Heat stack id corresponding to this instance, managed by MSO
+          required: false
+          type: string
+        - name: vpe-id
+          in: query
+          description: Unique ID of VPE connected to this VCE.
+          required: false
+          type: string
+        - name: port-group-id
+          in: query
+          description: Unique ID for port group in vmware
+          required: false
+          type: string
+        - name: switch-name
+          in: query
+          description: DVS or standard switch name (should be non-null for port groups associated with DVS)
+          required: false
+          type: string
+        - name: heat-stack-id
+          in: query
+          description: Heat stack id corresponding to this instance, managed by MSO
+          required: false
+          type: string
+  /network/vces/vce/{vnf-id}/port-groups/port-group/{interface-id}/relationship-list/relationship:
+    put:
+      tags:
+        - Network
+      summary: see node definition for valid relationships
+      operationId: createOrUpdateNetworkVcesVcePortGroupsPortGroupRelationshipListRelationship
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: vnf-id
+          in: path
+          description: Unique id of VNF.  This is unique across the graph.
+          required: true
+          type: string
+        - name: interface-id
+          in: path
+          description: Unique ID of the interface
+          required: true
+          type: string
+        - name: body
+          in: body
+          description: relationship object that needs to be created or updated
+          required: true
+          schema:
+            $ref: "#/definitions/relationship"
+    delete:
+      tags:
+        - Network
+      summary: delete an existing relationship
+      description: delete an existing relationship
+      operationId: deleteNetworkVcesVcePortGroupsPortGroupRelationshipListRelationship
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: vnf-id
+          in: path
+          description: Unique id of VNF.  This is unique across the graph.
+          required: true
+          type: string
+        - name: interface-id
+          in: path
+          description: Unique ID of the interface
+          required: true
+          type: string
+  /network/vces/vce/{vnf-id}/port-groups/port-group/{interface-id}:
+    get:
+      tags:
+        - Network
+      summary: returns port-group
+      description: returns port-group
+      operationId: getNetworkVcesVcePortGroupsPortGroup
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "200":
+          description: successful operation
+          schema:
+              $ref: "#/definitions/port-group"
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: vnf-id
+          in: path
+          description: Unique id of VNF.  This is unique across the graph.
+          required: true
+          type: string
+        - name: interface-id
+          in: path
+          description: Unique ID of the interface
+          required: true
+          type: string
+        - name: vnf-name
+          in: query
+          description: Name of VNF.
+          required: false
+          type: string
+        - name: vnf-name2
+          in: query
+          description: Alternate name of VNF.
+          required: false
+          type: string
+        - name: vnf-type
+          in: query
+          description: String capturing type of vnf, that was intended to identify the ASDC resource.  This field has been overloaded in service-specific ways and clients should expect changes to occur in the future to this field as ECOMP matures.
+          required: false
+          type: string
+        - name: service-id
+          in: query
+          description: Unique identifier of service, does not strictly map to ASDC services, SOON TO BE DEPRECATED.
+          required: false
+          type: string
+        - name: regional-resource-zone
+          in: query
+          description: Regional way of organizing pservers, source of truth should define values
+          required: false
+          type: string
+        - name: prov-status
+          in: query
+          description: Trigger for operational monitoring of this resource by Service Assurance systems.
+          required: false
+          type: string
+        - name: heat-stack-id
+          in: query
+          description: Heat stack id corresponding to this instance, managed by MSO
+          required: false
+          type: string
+        - name: vpe-id
+          in: query
+          description: Unique ID of VPE connected to this VCE.
+          required: false
+          type: string
+        - name: port-group-id
+          in: query
+          description: Unique ID for port group in vmware
+          required: false
+          type: string
+        - name: switch-name
+          in: query
+          description: DVS or standard switch name (should be non-null for port groups associated with DVS)
+          required: false
+          type: string
+        - name: heat-stack-id
+          in: query
+          description: Heat stack id corresponding to this instance, managed by MSO
+          required: false
+          type: string
+    put:
+      tags:
+        - Network
+      summary: create or update an existing port-group
+      description: create or update an existing port-group
+      operationId: createOrUpdateNetworkVcesVcePortGroupsPortGroup
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: vnf-id
+          in: path
+          description: Unique id of VNF.  This is unique across the graph.
+          required: true
+          type: string
+        - name: interface-id
+          in: path
+          description: Unique ID of the interface
+          required: true
+          type: string
+        - name: body
+          in: body
+          description: port-group object that needs to be created or updated
+          required: true
+          schema:
+            $ref: "#/definitions/port-group"
+    delete:
+      tags:
+        - Network
+      summary: delete an existing port-group
+      description: delete an existing port-group
+      operationId: deleteNetworkVcesVcePortGroupsPortGroup
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: vnf-id
+          in: path
+          description: Unique id of VNF.  This is unique across the graph.
+          required: true
+          type: string
+        - name: interface-id
+          in: path
+          description: Unique ID of the interface
+          required: true
+          type: string
+        - name: resource-version
+          in: query
+          description: resource-version for concurrency
+          required: true
+          type: string
+  /network/vces/vce/{vnf-id}/port-groups:
+    get:
+      tags:
+        - Network
+      summary: returns port-groups
+      description: returns port-groups
+      operationId: getNetworkVcesVcePortGroups
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "200":
+          description: successful operation
+          schema:
+              $ref: "#/definitions/port-groups"
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: vnf-id
+          in: path
+          description: Unique id of VNF.  This is unique across the graph.
+          required: true
+          type: string
+        - name: vnf-name
+          in: query
+          description: Name of VNF.
+          required: false
+          type: string
+        - name: vnf-name2
+          in: query
+          description: Alternate name of VNF.
+          required: false
+          type: string
+        - name: vnf-type
+          in: query
+          description: String capturing type of vnf, that was intended to identify the ASDC resource.  This field has been overloaded in service-specific ways and clients should expect changes to occur in the future to this field as ECOMP matures.
+          required: false
+          type: string
+        - name: service-id
+          in: query
+          description: Unique identifier of service, does not strictly map to ASDC services, SOON TO BE DEPRECATED.
+          required: false
+          type: string
+        - name: regional-resource-zone
+          in: query
+          description: Regional way of organizing pservers, source of truth should define values
+          required: false
+          type: string
+        - name: prov-status
+          in: query
+          description: Trigger for operational monitoring of this resource by Service Assurance systems.
+          required: false
+          type: string
+        - name: heat-stack-id
+          in: query
+          description: Heat stack id corresponding to this instance, managed by MSO
+          required: false
+          type: string
+        - name: vpe-id
+          in: query
+          description: Unique ID of VPE connected to this VCE.
+          required: false
+          type: string
+  /network/vces/vce/{vnf-id}/licenses/license/{group-uuid}/{resource-uuid}/relationship-list/relationship:
+    put:
+      tags:
+        - Network
+      summary: see node definition for valid relationships
+      operationId: createOrUpdateNetworkVcesVceLicensesLicenseRelationshipListRelationship
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: vnf-id
+          in: path
+          description: Unique id of VNF.  This is unique across the graph.
+          required: true
+          type: string
+        - name: group-uuid
+          in: path
+          description: Unique ID for the license group the resource belongs to, should be uuid.
+          required: true
+          type: string
+        - name: resource-uuid
+          in: path
+          description: Unique ID of a license resource. 
+          required: true
+          type: string
+        - name: body
+          in: body
+          description: relationship object that needs to be created or updated
+          required: true
+          schema:
+            $ref: "#/definitions/relationship"
+    delete:
+      tags:
+        - Network
+      summary: delete an existing relationship
+      description: delete an existing relationship
+      operationId: deleteNetworkVcesVceLicensesLicenseRelationshipListRelationship
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: vnf-id
+          in: path
+          description: Unique id of VNF.  This is unique across the graph.
+          required: true
+          type: string
+        - name: group-uuid
+          in: path
+          description: Unique ID for the license group the resource belongs to, should be uuid.
+          required: true
+          type: string
+        - name: resource-uuid
+          in: path
+          description: Unique ID of a license resource. 
+          required: true
+          type: string
+  /network/vces/vce/{vnf-id}/licenses/license/{group-uuid}/{resource-uuid}:
+    get:
+      tags:
+        - Network
+      summary: returns license
+      description: returns license
+      operationId: getNetworkVcesVceLicensesLicense
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "200":
+          description: successful operation
+          schema:
+              $ref: "#/definitions/license"
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: vnf-id
+          in: path
+          description: Unique id of VNF.  This is unique across the graph.
+          required: true
+          type: string
+        - name: group-uuid
+          in: path
+          description: Unique ID for the license group the resource belongs to, should be uuid.
+          required: true
+          type: string
+        - name: resource-uuid
+          in: path
+          description: Unique ID of a license resource. 
+          required: true
+          type: string
+        - name: vnf-name
+          in: query
+          description: Name of VNF.
+          required: false
+          type: string
+        - name: vnf-name2
+          in: query
+          description: Alternate name of VNF.
+          required: false
+          type: string
+        - name: vnf-type
+          in: query
+          description: String capturing type of vnf, that was intended to identify the ASDC resource.  This field has been overloaded in service-specific ways and clients should expect changes to occur in the future to this field as ECOMP matures.
+          required: false
+          type: string
+        - name: service-id
+          in: query
+          description: Unique identifier of service, does not strictly map to ASDC services, SOON TO BE DEPRECATED.
+          required: false
+          type: string
+        - name: regional-resource-zone
+          in: query
+          description: Regional way of organizing pservers, source of truth should define values
+          required: false
+          type: string
+        - name: prov-status
+          in: query
+          description: Trigger for operational monitoring of this resource by Service Assurance systems.
+          required: false
+          type: string
+        - name: heat-stack-id
+          in: query
+          description: Heat stack id corresponding to this instance, managed by MSO
+          required: false
+          type: string
+        - name: vpe-id
+          in: query
+          description: Unique ID of VPE connected to this VCE.
+          required: false
+          type: string
+    put:
+      tags:
+        - Network
+      summary: create or update an existing license
+      description: create or update an existing license
+      operationId: createOrUpdateNetworkVcesVceLicensesLicense
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: vnf-id
+          in: path
+          description: Unique id of VNF.  This is unique across the graph.
+          required: true
+          type: string
+        - name: group-uuid
+          in: path
+          description: Unique ID for the license group the resource belongs to, should be uuid.
+          required: true
+          type: string
+        - name: resource-uuid
+          in: path
+          description: Unique ID of a license resource. 
+          required: true
+          type: string
+        - name: body
+          in: body
+          description: license object that needs to be created or updated
+          required: true
+          schema:
+            $ref: "#/definitions/license"
+    delete:
+      tags:
+        - Network
+      summary: delete an existing license
+      description: delete an existing license
+      operationId: deleteNetworkVcesVceLicensesLicense
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: vnf-id
+          in: path
+          description: Unique id of VNF.  This is unique across the graph.
+          required: true
+          type: string
+        - name: group-uuid
+          in: path
+          description: Unique ID for the license group the resource belongs to, should be uuid.
+          required: true
+          type: string
+        - name: resource-uuid
+          in: path
+          description: Unique ID of a license resource. 
+          required: true
+          type: string
+        - name: resource-version
+          in: query
+          description: resource-version for concurrency
+          required: true
+          type: string
+  /network/vces/vce/{vnf-id}/licenses:
+    get:
+      tags:
+        - Network
+      summary: returns licenses
+      description: returns licenses
+      operationId: getNetworkVcesVceLicenses
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "200":
+          description: successful operation
+          schema:
+              $ref: "#/definitions/licenses"
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: vnf-id
+          in: path
+          description: Unique id of VNF.  This is unique across the graph.
+          required: true
+          type: string
+        - name: vnf-name
+          in: query
+          description: Name of VNF.
+          required: false
+          type: string
+        - name: vnf-name2
+          in: query
+          description: Alternate name of VNF.
+          required: false
+          type: string
+        - name: vnf-type
+          in: query
+          description: String capturing type of vnf, that was intended to identify the ASDC resource.  This field has been overloaded in service-specific ways and clients should expect changes to occur in the future to this field as ECOMP matures.
+          required: false
+          type: string
+        - name: service-id
+          in: query
+          description: Unique identifier of service, does not strictly map to ASDC services, SOON TO BE DEPRECATED.
+          required: false
+          type: string
+        - name: regional-resource-zone
+          in: query
+          description: Regional way of organizing pservers, source of truth should define values
+          required: false
+          type: string
+        - name: prov-status
+          in: query
+          description: Trigger for operational monitoring of this resource by Service Assurance systems.
+          required: false
+          type: string
+        - name: heat-stack-id
+          in: query
+          description: Heat stack id corresponding to this instance, managed by MSO
+          required: false
+          type: string
+        - name: vpe-id
+          in: query
+          description: Unique ID of VPE connected to this VCE.
+          required: false
+          type: string
+  /network/vces/vce/{vnf-id}/entitlements/entitlement/{group-uuid}/{resource-uuid}/relationship-list/relationship:
+    put:
+      tags:
+        - Network
+      summary: see node definition for valid relationships
+      operationId: createOrUpdateNetworkVcesVceEntitlementsEntitlementRelationshipListRelationship
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: vnf-id
+          in: path
+          description: Unique id of VNF.  This is unique across the graph.
+          required: true
+          type: string
+        - name: group-uuid
+          in: path
+          description: Unique ID for the entitlement group the resource comes from, should be uuid.
+          required: true
+          type: string
+        - name: resource-uuid
+          in: path
+          description: Unique ID of an entitlement resource. 
+          required: true
+          type: string
+        - name: body
+          in: body
+          description: relationship object that needs to be created or updated
+          required: true
+          schema:
+            $ref: "#/definitions/relationship"
+    delete:
+      tags:
+        - Network
+      summary: delete an existing relationship
+      description: delete an existing relationship
+      operationId: deleteNetworkVcesVceEntitlementsEntitlementRelationshipListRelationship
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: vnf-id
+          in: path
+          description: Unique id of VNF.  This is unique across the graph.
+          required: true
+          type: string
+        - name: group-uuid
+          in: path
+          description: Unique ID for the entitlement group the resource comes from, should be uuid.
+          required: true
+          type: string
+        - name: resource-uuid
+          in: path
+          description: Unique ID of an entitlement resource. 
+          required: true
+          type: string
+  /network/vces/vce/{vnf-id}/entitlements/entitlement/{group-uuid}/{resource-uuid}:
+    get:
+      tags:
+        - Network
+      summary: returns entitlement
+      description: returns entitlement
+      operationId: getNetworkVcesVceEntitlementsEntitlement
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "200":
+          description: successful operation
+          schema:
+              $ref: "#/definitions/entitlement"
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: vnf-id
+          in: path
+          description: Unique id of VNF.  This is unique across the graph.
+          required: true
+          type: string
+        - name: group-uuid
+          in: path
+          description: Unique ID for the entitlement group the resource comes from, should be uuid.
+          required: true
+          type: string
+        - name: resource-uuid
+          in: path
+          description: Unique ID of an entitlement resource. 
+          required: true
+          type: string
+        - name: vnf-name
+          in: query
+          description: Name of VNF.
+          required: false
+          type: string
+        - name: vnf-name2
+          in: query
+          description: Alternate name of VNF.
+          required: false
+          type: string
+        - name: vnf-type
+          in: query
+          description: String capturing type of vnf, that was intended to identify the ASDC resource.  This field has been overloaded in service-specific ways and clients should expect changes to occur in the future to this field as ECOMP matures.
+          required: false
+          type: string
+        - name: service-id
+          in: query
+          description: Unique identifier of service, does not strictly map to ASDC services, SOON TO BE DEPRECATED.
+          required: false
+          type: string
+        - name: regional-resource-zone
+          in: query
+          description: Regional way of organizing pservers, source of truth should define values
+          required: false
+          type: string
+        - name: prov-status
+          in: query
+          description: Trigger for operational monitoring of this resource by Service Assurance systems.
+          required: false
+          type: string
+        - name: heat-stack-id
+          in: query
+          description: Heat stack id corresponding to this instance, managed by MSO
+          required: false
+          type: string
+        - name: vpe-id
+          in: query
+          description: Unique ID of VPE connected to this VCE.
+          required: false
+          type: string
+    put:
+      tags:
+        - Network
+      summary: create or update an existing entitlement
+      description: create or update an existing entitlement
+      operationId: createOrUpdateNetworkVcesVceEntitlementsEntitlement
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: vnf-id
+          in: path
+          description: Unique id of VNF.  This is unique across the graph.
+          required: true
+          type: string
+        - name: group-uuid
+          in: path
+          description: Unique ID for the entitlement group the resource comes from, should be uuid.
+          required: true
+          type: string
+        - name: resource-uuid
+          in: path
+          description: Unique ID of an entitlement resource. 
+          required: true
+          type: string
+        - name: body
+          in: body
+          description: entitlement object that needs to be created or updated
+          required: true
+          schema:
+            $ref: "#/definitions/entitlement"
+    delete:
+      tags:
+        - Network
+      summary: delete an existing entitlement
+      description: delete an existing entitlement
+      operationId: deleteNetworkVcesVceEntitlementsEntitlement
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: vnf-id
+          in: path
+          description: Unique id of VNF.  This is unique across the graph.
+          required: true
+          type: string
+        - name: group-uuid
+          in: path
+          description: Unique ID for the entitlement group the resource comes from, should be uuid.
+          required: true
+          type: string
+        - name: resource-uuid
+          in: path
+          description: Unique ID of an entitlement resource. 
+          required: true
+          type: string
+        - name: resource-version
+          in: query
+          description: resource-version for concurrency
+          required: true
+          type: string
+  /network/vces/vce/{vnf-id}/entitlements:
+    get:
+      tags:
+        - Network
+      summary: returns entitlements
+      description: returns entitlements
+      operationId: getNetworkVcesVceEntitlements
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "200":
+          description: successful operation
+          schema:
+              $ref: "#/definitions/entitlements"
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: vnf-id
+          in: path
+          description: Unique id of VNF.  This is unique across the graph.
+          required: true
+          type: string
+        - name: vnf-name
+          in: query
+          description: Name of VNF.
+          required: false
+          type: string
+        - name: vnf-name2
+          in: query
+          description: Alternate name of VNF.
+          required: false
+          type: string
+        - name: vnf-type
+          in: query
+          description: String capturing type of vnf, that was intended to identify the ASDC resource.  This field has been overloaded in service-specific ways and clients should expect changes to occur in the future to this field as ECOMP matures.
+          required: false
+          type: string
+        - name: service-id
+          in: query
+          description: Unique identifier of service, does not strictly map to ASDC services, SOON TO BE DEPRECATED.
+          required: false
+          type: string
+        - name: regional-resource-zone
+          in: query
+          description: Regional way of organizing pservers, source of truth should define values
+          required: false
+          type: string
+        - name: prov-status
+          in: query
+          description: Trigger for operational monitoring of this resource by Service Assurance systems.
+          required: false
+          type: string
+        - name: heat-stack-id
+          in: query
+          description: Heat stack id corresponding to this instance, managed by MSO
+          required: false
+          type: string
+        - name: vpe-id
+          in: query
+          description: Unique ID of VPE connected to this VCE.
+          required: false
+          type: string
+  /network/vces/vce/{vnf-id}/relationship-list/relationship:
+    put:
+      tags:
+        - Network
+      summary: see node definition for valid relationships
+      operationId: createOrUpdateNetworkVcesVceRelationshipListRelationship
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: vnf-id
+          in: path
+          description: Unique id of VNF.  This is unique across the graph.
+          required: true
+          type: string
+        - name: body
+          in: body
+          description: relationship object that needs to be created or updated
+          required: true
+          schema:
+            $ref: "#/definitions/relationship"
+    delete:
+      tags:
+        - Network
+      summary: delete an existing relationship
+      description: delete an existing relationship
+      operationId: deleteNetworkVcesVceRelationshipListRelationship
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: vnf-id
+          in: path
+          description: Unique id of VNF.  This is unique across the graph.
+          required: true
+          type: string
+  /network/vces/vce/{vnf-id}:
+    get:
+      tags:
+        - Network
+      summary: returns vce
+      description: returns vce
+      operationId: getNetworkVcesVce
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "200":
+          description: successful operation
+          schema:
+              $ref: "#/definitions/vce"
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: vnf-id
+          in: path
+          description: Unique id of VNF.  This is unique across the graph.
+          required: true
+          type: string
+        - name: vnf-name
+          in: query
+          description: Name of VNF.
+          required: false
+          type: string
+        - name: vnf-name2
+          in: query
+          description: Alternate name of VNF.
+          required: false
+          type: string
+        - name: vnf-type
+          in: query
+          description: String capturing type of vnf, that was intended to identify the ASDC resource.  This field has been overloaded in service-specific ways and clients should expect changes to occur in the future to this field as ECOMP matures.
+          required: false
+          type: string
+        - name: service-id
+          in: query
+          description: Unique identifier of service, does not strictly map to ASDC services, SOON TO BE DEPRECATED.
+          required: false
+          type: string
+        - name: regional-resource-zone
+          in: query
+          description: Regional way of organizing pservers, source of truth should define values
+          required: false
+          type: string
+        - name: prov-status
+          in: query
+          description: Trigger for operational monitoring of this resource by Service Assurance systems.
+          required: false
+          type: string
+        - name: heat-stack-id
+          in: query
+          description: Heat stack id corresponding to this instance, managed by MSO
+          required: false
+          type: string
+        - name: vpe-id
+          in: query
+          description: Unique ID of VPE connected to this VCE.
+          required: false
+          type: string
+    put:
+      tags:
+        - Network
+      summary: create or update an existing vce
+      description: create or update an existing vce
+      operationId: createOrUpdateNetworkVcesVce
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: vnf-id
+          in: path
+          description: Unique id of VNF.  This is unique across the graph.
+          required: true
+          type: string
+        - name: body
+          in: body
+          description: vce object that needs to be created or updated
+          required: true
+          schema:
+            $ref: "#/definitions/vce"
+    delete:
+      tags:
+        - Network
+      summary: delete an existing vce
+      description: delete an existing vce
+      operationId: deleteNetworkVcesVce
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: vnf-id
+          in: path
+          description: Unique id of VNF.  This is unique across the graph.
+          required: true
+          type: string
+        - name: resource-version
+          in: query
+          description: resource-version for concurrency
+          required: true
+          type: string
+  /network/vces:
+    get:
+      tags:
+        - Network
+      summary: returns vces
+      description: returns vces
+      operationId: getNetworkVces
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "200":
+          description: successful operation
+          schema:
+              $ref: "#/definitions/vces"
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+  /network/vnfcs/vnfc/{vnfc-name}/relationship-list/relationship:
+    put:
+      tags:
+        - Network
+      summary: see node definition for valid relationships
+      operationId: createOrUpdateNetworkVnfcsVnfcRelationshipListRelationship
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: vnfc-name
+          in: path
+          description: Unique ID of vnfc.
+          required: true
+          type: string
+        - name: body
+          in: body
+          description: relationship object that needs to be created or updated
+          required: true
+          schema:
+            $ref: "#/definitions/relationship"
+    delete:
+      tags:
+        - Network
+      summary: delete an existing relationship
+      description: delete an existing relationship
+      operationId: deleteNetworkVnfcsVnfcRelationshipListRelationship
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: vnfc-name
+          in: path
+          description: Unique ID of vnfc.
+          required: true
+          type: string
+  /network/vnfcs/vnfc/{vnfc-name}/l3-interface-ipv4-address-list/{l3-interface-ipv4-address}/relationship-list/relationship:
+    put:
+      tags:
+        - Network
+      summary: see node definition for valid relationships
+      operationId: createOrUpdateNetworkVnfcsVnfcL3InterfaceIpv4AddressListRelationshipListRelationship
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: vnfc-name
+          in: path
+          description: Unique ID of vnfc.
+          required: true
+          type: string
+        - name: l3-interface-ipv4-address
+          in: path
+          description: IP address
+          required: true
+          type: string
+        - name: body
+          in: body
+          description: relationship object that needs to be created or updated
+          required: true
+          schema:
+            $ref: "#/definitions/relationship"
+    delete:
+      tags:
+        - Network
+      summary: delete an existing relationship
+      description: delete an existing relationship
+      operationId: deleteNetworkVnfcsVnfcL3InterfaceIpv4AddressListRelationshipListRelationship
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: vnfc-name
+          in: path
+          description: Unique ID of vnfc.
+          required: true
+          type: string
+        - name: l3-interface-ipv4-address
+          in: path
+          description: IP address
+          required: true
+          type: string
+  /network/vnfcs/vnfc/{vnfc-name}/l3-interface-ipv4-address-list/{l3-interface-ipv4-address}:
+    get:
+      tags:
+        - Network
+      summary: returns l3-interface-ipv4-address-list
+      description: returns l3-interface-ipv4-address-list
+      operationId: getNetworkVnfcsVnfcL3InterfaceIpv4AddressList
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "200":
+          description: successful operation
+          schema:
+              $ref: "#/definitions/l3-interface-ipv4-address-list"
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: vnfc-name
+          in: path
+          description: Unique ID of vnfc.
+          required: true
+          type: string
+        - name: l3-interface-ipv4-address
+          in: path
+          description: IP address
+          required: true
+          type: string
+        - name: nfc-naming-code
+          in: query
+          description: Short code that is used in naming instances of the item being modeled
+          required: false
+          type: string
+        - name: nfc-function
+          in: query
+          description: English description of function that the specific resource deployment is providing. Assigned as part of the customization of a resource in a service
+          required: false
+          type: string
+        - name: prov-status
+          in: query
+          description: prov status of this vnfc
+          required: false
+          type: string
+        - name: ipaddress-v4-oam-vip
+          in: query
+          description: Oam V4 vip address of this vnfc
+          required: false
+          type: string
+        - name: in-maint
+          in: query
+          required: false
+          type: boolean
+        - name: is-closed-loop-disabled
+          in: query
+          required: false
+          type: boolean
+        - name: group-notation
+          in: query
+          description: Group notation of VNFC
+          required: false
+          type: string
+        - name: model-invariant-id
+          in: query
+          description: the ASDC model id for this resource or service model.
+          required: false
+          type: string
+        - name: model-version-id
+          in: query
+          description: the ASDC model version for this resource or service model.
+          required: false
+          type: string
+        - name: vlan-id-inner
+          in: query
+          description: Inner VLAN tag
+          required: false
+          type: integer
+          format: int64
+        - name: neutron-network-id
+          in: query
+          description: Neutron network id of the interface that address belongs to
+          required: false
+          type: string
+        - name: neutron-subnet-id
+          in: query
+          description: Neutron id of subnet that address belongs to
+          required: false
+          type: string
+    put:
+      tags:
+        - Network
+      summary: create or update an existing l3-interface-ipv4-address-list
+      description: create or update an existing l3-interface-ipv4-address-list
+      operationId: createOrUpdateNetworkVnfcsVnfcL3InterfaceIpv4AddressList
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: vnfc-name
+          in: path
+          description: Unique ID of vnfc.
+          required: true
+          type: string
+        - name: l3-interface-ipv4-address
+          in: path
+          description: IP address
+          required: true
+          type: string
+        - name: body
+          in: body
+          description: l3-interface-ipv4-address-list object that needs to be created or updated
+          required: true
+          schema:
+            $ref: "#/definitions/l3-interface-ipv4-address-list"
+    delete:
+      tags:
+        - Network
+      summary: delete an existing l3-interface-ipv4-address-list
+      description: delete an existing l3-interface-ipv4-address-list
+      operationId: deleteNetworkVnfcsVnfcL3InterfaceIpv4AddressList
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: vnfc-name
+          in: path
+          description: Unique ID of vnfc.
+          required: true
+          type: string
+        - name: l3-interface-ipv4-address
+          in: path
+          description: IP address
+          required: true
+          type: string
+        - name: resource-version
+          in: query
+          description: resource-version for concurrency
+          required: true
+          type: string
+  /network/vnfcs/vnfc/{vnfc-name}/l3-interface-ipv6-address-list/{l3-interface-ipv6-address}/relationship-list/relationship:
+    put:
+      tags:
+        - Network
+      summary: see node definition for valid relationships
+      operationId: createOrUpdateNetworkVnfcsVnfcL3InterfaceIpv6AddressListRelationshipListRelationship
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: vnfc-name
+          in: path
+          description: Unique ID of vnfc.
+          required: true
+          type: string
+        - name: l3-interface-ipv6-address
+          in: path
+          description: IP address
+          required: true
+          type: string
+        - name: body
+          in: body
+          description: relationship object that needs to be created or updated
+          required: true
+          schema:
+            $ref: "#/definitions/relationship"
+    delete:
+      tags:
+        - Network
+      summary: delete an existing relationship
+      description: delete an existing relationship
+      operationId: deleteNetworkVnfcsVnfcL3InterfaceIpv6AddressListRelationshipListRelationship
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: vnfc-name
+          in: path
+          description: Unique ID of vnfc.
+          required: true
+          type: string
+        - name: l3-interface-ipv6-address
+          in: path
+          description: IP address
+          required: true
+          type: string
+  /network/vnfcs/vnfc/{vnfc-name}/l3-interface-ipv6-address-list/{l3-interface-ipv6-address}:
+    get:
+      tags:
+        - Network
+      summary: returns l3-interface-ipv6-address-list
+      description: returns l3-interface-ipv6-address-list
+      operationId: getNetworkVnfcsVnfcL3InterfaceIpv6AddressList
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "200":
+          description: successful operation
+          schema:
+              $ref: "#/definitions/l3-interface-ipv6-address-list"
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: vnfc-name
+          in: path
+          description: Unique ID of vnfc.
+          required: true
+          type: string
+        - name: l3-interface-ipv6-address
+          in: path
+          description: IP address
+          required: true
+          type: string
+        - name: nfc-naming-code
+          in: query
+          description: Short code that is used in naming instances of the item being modeled
+          required: false
+          type: string
+        - name: nfc-function
+          in: query
+          description: English description of function that the specific resource deployment is providing. Assigned as part of the customization of a resource in a service
+          required: false
+          type: string
+        - name: prov-status
+          in: query
+          description: prov status of this vnfc
+          required: false
+          type: string
+        - name: ipaddress-v4-oam-vip
+          in: query
+          description: Oam V4 vip address of this vnfc
+          required: false
+          type: string
+        - name: in-maint
+          in: query
+          required: false
+          type: boolean
+        - name: is-closed-loop-disabled
+          in: query
+          required: false
+          type: boolean
+        - name: group-notation
+          in: query
+          description: Group notation of VNFC
+          required: false
+          type: string
+        - name: model-invariant-id
+          in: query
+          description: the ASDC model id for this resource or service model.
+          required: false
+          type: string
+        - name: model-version-id
+          in: query
+          description: the ASDC model version for this resource or service model.
+          required: false
+          type: string
+        - name: vlan-id-inner
+          in: query
+          description: Inner VLAN tag
+          required: false
+          type: integer
+          format: int64
+        - name: neutron-network-id
+          in: query
+          description: Neutron network id of the interface that address belongs to
+          required: false
+          type: string
+        - name: neutron-subnet-id
+          in: query
+          description: Neutron id of subnet that address belongs to
+          required: false
+          type: string
+    put:
+      tags:
+        - Network
+      summary: create or update an existing l3-interface-ipv6-address-list
+      description: create or update an existing l3-interface-ipv6-address-list
+      operationId: createOrUpdateNetworkVnfcsVnfcL3InterfaceIpv6AddressList
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: vnfc-name
+          in: path
+          description: Unique ID of vnfc.
+          required: true
+          type: string
+        - name: l3-interface-ipv6-address
+          in: path
+          description: IP address
+          required: true
+          type: string
+        - name: body
+          in: body
+          description: l3-interface-ipv6-address-list object that needs to be created or updated
+          required: true
+          schema:
+            $ref: "#/definitions/l3-interface-ipv6-address-list"
+    delete:
+      tags:
+        - Network
+      summary: delete an existing l3-interface-ipv6-address-list
+      description: delete an existing l3-interface-ipv6-address-list
+      operationId: deleteNetworkVnfcsVnfcL3InterfaceIpv6AddressList
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: vnfc-name
+          in: path
+          description: Unique ID of vnfc.
+          required: true
+          type: string
+        - name: l3-interface-ipv6-address
+          in: path
+          description: IP address
+          required: true
+          type: string
+        - name: resource-version
+          in: query
+          description: resource-version for concurrency
+          required: true
+          type: string
+  /network/vnfcs/vnfc/{vnfc-name}:
+    get:
+      tags:
+        - Network
+      summary: returns vnfc
+      description: returns vnfc
+      operationId: getNetworkVnfcsVnfc
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "200":
+          description: successful operation
+          schema:
+              $ref: "#/definitions/vnfc"
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: vnfc-name
+          in: path
+          description: Unique ID of vnfc.
+          required: true
+          type: string
+        - name: nfc-naming-code
+          in: query
+          description: Short code that is used in naming instances of the item being modeled
+          required: false
+          type: string
+        - name: nfc-function
+          in: query
+          description: English description of function that the specific resource deployment is providing. Assigned as part of the customization of a resource in a service
+          required: false
+          type: string
+        - name: prov-status
+          in: query
+          description: prov status of this vnfc
+          required: false
+          type: string
+        - name: ipaddress-v4-oam-vip
+          in: query
+          description: Oam V4 vip address of this vnfc
+          required: false
+          type: string
+        - name: in-maint
+          in: query
+          required: false
+          type: boolean
+        - name: is-closed-loop-disabled
+          in: query
+          required: false
+          type: boolean
+        - name: group-notation
+          in: query
+          description: Group notation of VNFC
+          required: false
+          type: string
+        - name: model-invariant-id
+          in: query
+          description: the ASDC model id for this resource or service model.
+          required: false
+          type: string
+        - name: model-version-id
+          in: query
+          description: the ASDC model version for this resource or service model.
+          required: false
+          type: string
+    put:
+      tags:
+        - Network
+      summary: create or update an existing vnfc
+      description: create or update an existing vnfc
+      operationId: createOrUpdateNetworkVnfcsVnfc
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: vnfc-name
+          in: path
+          description: Unique ID of vnfc.
+          required: true
+          type: string
+        - name: body
+          in: body
+          description: vnfc object that needs to be created or updated
+          required: true
+          schema:
+            $ref: "#/definitions/vnfc"
+    delete:
+      tags:
+        - Network
+      summary: delete an existing vnfc
+      description: delete an existing vnfc
+      operationId: deleteNetworkVnfcsVnfc
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: vnfc-name
+          in: path
+          description: Unique ID of vnfc.
+          required: true
+          type: string
+        - name: resource-version
+          in: query
+          description: resource-version for concurrency
+          required: true
+          type: string
+  /network/vnfcs:
+    get:
+      tags:
+        - Network
+      summary: returns vnfcs
+      description: returns vnfcs
+      operationId: getNetworkVnfcs
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "200":
+          description: successful operation
+          schema:
+              $ref: "#/definitions/vnfcs"
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+  /network/l3-networks/l3-network/{network-id}/subnets/subnet/{subnet-id}/host-routes/host-route/{host-route-id}/relationship-list/relationship:
+    put:
+      tags:
+        - Network
+      summary: see node definition for valid relationships
+      operationId: createOrUpdateNetworkL3NetworksL3NetworkSubnetsSubnetHostRoutesHostRouteRelationshipListRelationship
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: network-id
+          in: path
+          description: Network ID, should be uuid. Unique across A&AI.
+          required: true
+          type: string
+        - name: subnet-id
+          in: path
+          description: Subnet ID, should be UUID.
+          required: true
+          type: string
+        - name: host-route-id
+          in: path
+          description: host-route id
+          required: true
+          type: string
+        - name: body
+          in: body
+          description: relationship object that needs to be created or updated
+          required: true
+          schema:
+            $ref: "#/definitions/relationship"
+    delete:
+      tags:
+        - Network
+      summary: delete an existing relationship
+      description: delete an existing relationship
+      operationId: deleteNetworkL3NetworksL3NetworkSubnetsSubnetHostRoutesHostRouteRelationshipListRelationship
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: network-id
+          in: path
+          description: Network ID, should be uuid. Unique across A&AI.
+          required: true
+          type: string
+        - name: subnet-id
+          in: path
+          description: Subnet ID, should be UUID.
+          required: true
+          type: string
+        - name: host-route-id
+          in: path
+          description: host-route id
+          required: true
+          type: string
+  /network/l3-networks/l3-network/{network-id}/subnets/subnet/{subnet-id}/host-routes/host-route/{host-route-id}:
+    get:
+      tags:
+        - Network
+      summary: returns host-route
+      description: returns host-route
+      operationId: getNetworkL3NetworksL3NetworkSubnetsSubnetHostRoutesHostRoute
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "200":
+          description: successful operation
+          schema:
+              $ref: "#/definitions/host-route"
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: network-id
+          in: path
+          description: Network ID, should be uuid. Unique across A&AI.
+          required: true
+          type: string
+        - name: subnet-id
+          in: path
+          description: Subnet ID, should be UUID.
+          required: true
+          type: string
+        - name: host-route-id
+          in: path
+          description: host-route id
+          required: true
+          type: string
+        - name: network-name
+          in: query
+          description: Name of the network, governed by some naming convention..
+          required: false
+          type: string
+        - name: network-role
+          in: query
+          description: Role the network plans - who defines these values?
+          required: false
+          type: string
+        - name: service-id
+          in: query
+          description: Unique identifier of service from ASDC.  Does not strictly map to ASDC services.  SOON TO BE DEPRECATED
+          required: false
+          type: string
+        - name: heat-stack-id
+          in: query
+          description: Heat stack id corresponding to this instance, managed by MSO
+          required: false
+          type: string
+        - name: contrail-network-fqdn
+          in: query
+          description: Contrail FQDN for the network
+          required: false
+          type: string
+        - name: model-invariant-id
+          in: query
+          description: the ASDC model id for this resource or service model.
+          required: false
+          type: string
+        - name: model-version-id
+          in: query
+          description: the ASDC model version for this resource or service model.
+          required: false
+          type: string
+        - name: widget-model-id
+          in: query
+          description: the ASDC data dictionary widget model. This maps directly to the A&AI widget.
+          required: false
+          type: string
+        - name: widget-model-version
+          in: query
+          description: the ASDC data dictionary version of the widget model.This maps directly to the A&AI version of the widget.
+          required: false
+          type: string
+        - name: subnet-name
+          in: query
+          description: Name associated with the subnet.
+          required: false
+          type: string
+    put:
+      tags:
+        - Network
+      summary: create or update an existing host-route
+      description: create or update an existing host-route
+      operationId: createOrUpdateNetworkL3NetworksL3NetworkSubnetsSubnetHostRoutesHostRoute
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: network-id
+          in: path
+          description: Network ID, should be uuid. Unique across A&AI.
+          required: true
+          type: string
+        - name: subnet-id
+          in: path
+          description: Subnet ID, should be UUID.
+          required: true
+          type: string
+        - name: host-route-id
+          in: path
+          description: host-route id
+          required: true
+          type: string
+        - name: body
+          in: body
+          description: host-route object that needs to be created or updated
+          required: true
+          schema:
+            $ref: "#/definitions/host-route"
+    delete:
+      tags:
+        - Network
+      summary: delete an existing host-route
+      description: delete an existing host-route
+      operationId: deleteNetworkL3NetworksL3NetworkSubnetsSubnetHostRoutesHostRoute
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: network-id
+          in: path
+          description: Network ID, should be uuid. Unique across A&AI.
+          required: true
+          type: string
+        - name: subnet-id
+          in: path
+          description: Subnet ID, should be UUID.
+          required: true
+          type: string
+        - name: host-route-id
+          in: path
+          description: host-route id
+          required: true
+          type: string
+        - name: resource-version
+          in: query
+          description: resource-version for concurrency
+          required: true
+          type: string
+  /network/l3-networks/l3-network/{network-id}/subnets/subnet/{subnet-id}/host-routes:
+    get:
+      tags:
+        - Network
+      summary: returns host-routes
+      description: returns host-routes
+      operationId: getNetworkL3NetworksL3NetworkSubnetsSubnetHostRoutes
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "200":
+          description: successful operation
+          schema:
+              $ref: "#/definitions/host-routes"
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: network-id
+          in: path
+          description: Network ID, should be uuid. Unique across A&AI.
+          required: true
+          type: string
+        - name: subnet-id
+          in: path
+          description: Subnet ID, should be UUID.
+          required: true
+          type: string
+        - name: network-name
+          in: query
+          description: Name of the network, governed by some naming convention..
+          required: false
+          type: string
+        - name: network-role
+          in: query
+          description: Role the network plans - who defines these values?
+          required: false
+          type: string
+        - name: service-id
+          in: query
+          description: Unique identifier of service from ASDC.  Does not strictly map to ASDC services.  SOON TO BE DEPRECATED
+          required: false
+          type: string
+        - name: heat-stack-id
+          in: query
+          description: Heat stack id corresponding to this instance, managed by MSO
+          required: false
+          type: string
+        - name: contrail-network-fqdn
+          in: query
+          description: Contrail FQDN for the network
+          required: false
+          type: string
+        - name: model-invariant-id
+          in: query
+          description: the ASDC model id for this resource or service model.
+          required: false
+          type: string
+        - name: model-version-id
+          in: query
+          description: the ASDC model version for this resource or service model.
+          required: false
+          type: string
+        - name: widget-model-id
+          in: query
+          description: the ASDC data dictionary widget model. This maps directly to the A&AI widget.
+          required: false
+          type: string
+        - name: widget-model-version
+          in: query
+          description: the ASDC data dictionary version of the widget model.This maps directly to the A&AI version of the widget.
+          required: false
+          type: string
+        - name: subnet-name
+          in: query
+          description: Name associated with the subnet.
+          required: false
+          type: string
+  /network/l3-networks/l3-network/{network-id}/subnets/subnet/{subnet-id}/relationship-list/relationship:
+    put:
+      tags:
+        - Network
+      summary: see node definition for valid relationships
+      operationId: createOrUpdateNetworkL3NetworksL3NetworkSubnetsSubnetRelationshipListRelationship
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: network-id
+          in: path
+          description: Network ID, should be uuid. Unique across A&AI.
+          required: true
+          type: string
+        - name: subnet-id
+          in: path
+          description: Subnet ID, should be UUID.
+          required: true
+          type: string
+        - name: body
+          in: body
+          description: relationship object that needs to be created or updated
+          required: true
+          schema:
+            $ref: "#/definitions/relationship"
+    delete:
+      tags:
+        - Network
+      summary: delete an existing relationship
+      description: delete an existing relationship
+      operationId: deleteNetworkL3NetworksL3NetworkSubnetsSubnetRelationshipListRelationship
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: network-id
+          in: path
+          description: Network ID, should be uuid. Unique across A&AI.
+          required: true
+          type: string
+        - name: subnet-id
+          in: path
+          description: Subnet ID, should be UUID.
+          required: true
+          type: string
+  /network/l3-networks/l3-network/{network-id}/subnets/subnet/{subnet-id}:
+    get:
+      tags:
+        - Network
+      summary: returns subnet
+      description: returns subnet
+      operationId: getNetworkL3NetworksL3NetworkSubnetsSubnet
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "200":
+          description: successful operation
+          schema:
+              $ref: "#/definitions/subnet"
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: network-id
+          in: path
+          description: Network ID, should be uuid. Unique across A&AI.
+          required: true
+          type: string
+        - name: subnet-id
+          in: path
+          description: Subnet ID, should be UUID.
+          required: true
+          type: string
+        - name: network-name
+          in: query
+          description: Name of the network, governed by some naming convention..
+          required: false
+          type: string
+        - name: network-role
+          in: query
+          description: Role the network plans - who defines these values?
+          required: false
+          type: string
+        - name: service-id
+          in: query
+          description: Unique identifier of service from ASDC.  Does not strictly map to ASDC services.  SOON TO BE DEPRECATED
+          required: false
+          type: string
+        - name: heat-stack-id
+          in: query
+          description: Heat stack id corresponding to this instance, managed by MSO
+          required: false
+          type: string
+        - name: contrail-network-fqdn
+          in: query
+          description: Contrail FQDN for the network
+          required: false
+          type: string
+        - name: model-invariant-id
+          in: query
+          description: the ASDC model id for this resource or service model.
+          required: false
+          type: string
+        - name: model-version-id
+          in: query
+          description: the ASDC model version for this resource or service model.
+          required: false
+          type: string
+        - name: widget-model-id
+          in: query
+          description: the ASDC data dictionary widget model. This maps directly to the A&AI widget.
+          required: false
+          type: string
+        - name: widget-model-version
+          in: query
+          description: the ASDC data dictionary version of the widget model.This maps directly to the A&AI version of the widget.
+          required: false
+          type: string
+        - name: subnet-name
+          in: query
+          description: Name associated with the subnet.
+          required: false
+          type: string
+    put:
+      tags:
+        - Network
+      summary: create or update an existing subnet
+      description: create or update an existing subnet
+      operationId: createOrUpdateNetworkL3NetworksL3NetworkSubnetsSubnet
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: network-id
+          in: path
+          description: Network ID, should be uuid. Unique across A&AI.
+          required: true
+          type: string
+        - name: subnet-id
+          in: path
+          description: Subnet ID, should be UUID.
+          required: true
+          type: string
+        - name: body
+          in: body
+          description: subnet object that needs to be created or updated
+          required: true
+          schema:
+            $ref: "#/definitions/subnet"
+    delete:
+      tags:
+        - Network
+      summary: delete an existing subnet
+      description: delete an existing subnet
+      operationId: deleteNetworkL3NetworksL3NetworkSubnetsSubnet
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: network-id
+          in: path
+          description: Network ID, should be uuid. Unique across A&AI.
+          required: true
+          type: string
+        - name: subnet-id
+          in: path
+          description: Subnet ID, should be UUID.
+          required: true
+          type: string
+        - name: resource-version
+          in: query
+          description: resource-version for concurrency
+          required: true
+          type: string
+  /network/l3-networks/l3-network/{network-id}/subnets:
+    get:
+      tags:
+        - Network
+      summary: returns subnets
+      description: returns subnets
+      operationId: getNetworkL3NetworksL3NetworkSubnets
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "200":
+          description: successful operation
+          schema:
+              $ref: "#/definitions/subnets"
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: network-id
+          in: path
+          description: Network ID, should be uuid. Unique across A&AI.
+          required: true
+          type: string
+        - name: network-name
+          in: query
+          description: Name of the network, governed by some naming convention..
+          required: false
+          type: string
+        - name: network-role
+          in: query
+          description: Role the network plans - who defines these values?
+          required: false
+          type: string
+        - name: service-id
+          in: query
+          description: Unique identifier of service from ASDC.  Does not strictly map to ASDC services.  SOON TO BE DEPRECATED
+          required: false
+          type: string
+        - name: heat-stack-id
+          in: query
+          description: Heat stack id corresponding to this instance, managed by MSO
+          required: false
+          type: string
+        - name: contrail-network-fqdn
+          in: query
+          description: Contrail FQDN for the network
+          required: false
+          type: string
+        - name: model-invariant-id
+          in: query
+          description: the ASDC model id for this resource or service model.
+          required: false
+          type: string
+        - name: model-version-id
+          in: query
+          description: the ASDC model version for this resource or service model.
+          required: false
+          type: string
+        - name: widget-model-id
+          in: query
+          description: the ASDC data dictionary widget model. This maps directly to the A&AI widget.
+          required: false
+          type: string
+        - name: widget-model-version
+          in: query
+          description: the ASDC data dictionary version of the widget model.This maps directly to the A&AI version of the widget.
+          required: false
+          type: string
+  /network/l3-networks/l3-network/{network-id}/ctag-assignments/ctag-assignment/{vlan-id-inner}/relationship-list/relationship:
+    put:
+      tags:
+        - Network
+      summary: see node definition for valid relationships
+      operationId: createOrUpdateNetworkL3NetworksL3NetworkCtagAssignmentsCtagAssignmentRelationshipListRelationship
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: network-id
+          in: path
+          description: Network ID, should be uuid. Unique across A&AI.
+          required: true
+          type: string
+        - name: vlan-id-inner
+          in: path
+          description: id.
+          required: true
+          type: integer
+          format: int64
+        - name: body
+          in: body
+          description: relationship object that needs to be created or updated
+          required: true
+          schema:
+            $ref: "#/definitions/relationship"
+    delete:
+      tags:
+        - Network
+      summary: delete an existing relationship
+      description: delete an existing relationship
+      operationId: deleteNetworkL3NetworksL3NetworkCtagAssignmentsCtagAssignmentRelationshipListRelationship
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: network-id
+          in: path
+          description: Network ID, should be uuid. Unique across A&AI.
+          required: true
+          type: string
+        - name: vlan-id-inner
+          in: path
+          description: id.
+          required: true
+          type: integer
+          format: int64
+  /network/l3-networks/l3-network/{network-id}/ctag-assignments/ctag-assignment/{vlan-id-inner}:
+    get:
+      tags:
+        - Network
+      summary: returns ctag-assignment
+      description: returns ctag-assignment
+      operationId: getNetworkL3NetworksL3NetworkCtagAssignmentsCtagAssignment
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "200":
+          description: successful operation
+          schema:
+              $ref: "#/definitions/ctag-assignment"
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: network-id
+          in: path
+          description: Network ID, should be uuid. Unique across A&AI.
+          required: true
+          type: string
+        - name: vlan-id-inner
+          in: path
+          description: id.
+          required: true
+          type: integer
+          format: int64
+        - name: network-name
+          in: query
+          description: Name of the network, governed by some naming convention..
+          required: false
+          type: string
+        - name: network-role
+          in: query
+          description: Role the network plans - who defines these values?
+          required: false
+          type: string
+        - name: service-id
+          in: query
+          description: Unique identifier of service from ASDC.  Does not strictly map to ASDC services.  SOON TO BE DEPRECATED
+          required: false
+          type: string
+        - name: heat-stack-id
+          in: query
+          description: Heat stack id corresponding to this instance, managed by MSO
+          required: false
+          type: string
+        - name: contrail-network-fqdn
+          in: query
+          description: Contrail FQDN for the network
+          required: false
+          type: string
+        - name: model-invariant-id
+          in: query
+          description: the ASDC model id for this resource or service model.
+          required: false
+          type: string
+        - name: model-version-id
+          in: query
+          description: the ASDC model version for this resource or service model.
+          required: false
+          type: string
+        - name: widget-model-id
+          in: query
+          description: the ASDC data dictionary widget model. This maps directly to the A&AI widget.
+          required: false
+          type: string
+        - name: widget-model-version
+          in: query
+          description: the ASDC data dictionary version of the widget model.This maps directly to the A&AI version of the widget.
+          required: false
+          type: string
+    put:
+      tags:
+        - Network
+      summary: create or update an existing ctag-assignment
+      description: create or update an existing ctag-assignment
+      operationId: createOrUpdateNetworkL3NetworksL3NetworkCtagAssignmentsCtagAssignment
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: network-id
+          in: path
+          description: Network ID, should be uuid. Unique across A&AI.
+          required: true
+          type: string
+        - name: vlan-id-inner
+          in: path
+          description: id.
+          required: true
+          type: integer
+          format: int64
+        - name: body
+          in: body
+          description: ctag-assignment object that needs to be created or updated
+          required: true
+          schema:
+            $ref: "#/definitions/ctag-assignment"
+    delete:
+      tags:
+        - Network
+      summary: delete an existing ctag-assignment
+      description: delete an existing ctag-assignment
+      operationId: deleteNetworkL3NetworksL3NetworkCtagAssignmentsCtagAssignment
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: network-id
+          in: path
+          description: Network ID, should be uuid. Unique across A&AI.
+          required: true
+          type: string
+        - name: vlan-id-inner
+          in: path
+          description: id.
+          required: true
+          type: integer
+          format: int64
+        - name: resource-version
+          in: query
+          description: resource-version for concurrency
+          required: true
+          type: string
+  /network/l3-networks/l3-network/{network-id}/ctag-assignments:
+    get:
+      tags:
+        - Network
+      summary: returns ctag-assignments
+      description: returns ctag-assignments
+      operationId: getNetworkL3NetworksL3NetworkCtagAssignments
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "200":
+          description: successful operation
+          schema:
+              $ref: "#/definitions/ctag-assignments"
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: network-id
+          in: path
+          description: Network ID, should be uuid. Unique across A&AI.
+          required: true
+          type: string
+        - name: network-name
+          in: query
+          description: Name of the network, governed by some naming convention..
+          required: false
+          type: string
+        - name: network-role
+          in: query
+          description: Role the network plans - who defines these values?
+          required: false
+          type: string
+        - name: service-id
+          in: query
+          description: Unique identifier of service from ASDC.  Does not strictly map to ASDC services.  SOON TO BE DEPRECATED
+          required: false
+          type: string
+        - name: heat-stack-id
+          in: query
+          description: Heat stack id corresponding to this instance, managed by MSO
+          required: false
+          type: string
+        - name: contrail-network-fqdn
+          in: query
+          description: Contrail FQDN for the network
+          required: false
+          type: string
+        - name: model-invariant-id
+          in: query
+          description: the ASDC model id for this resource or service model.
+          required: false
+          type: string
+        - name: model-version-id
+          in: query
+          description: the ASDC model version for this resource or service model.
+          required: false
+          type: string
+        - name: widget-model-id
+          in: query
+          description: the ASDC data dictionary widget model. This maps directly to the A&AI widget.
+          required: false
+          type: string
+        - name: widget-model-version
+          in: query
+          description: the ASDC data dictionary version of the widget model.This maps directly to the A&AI version of the widget.
+          required: false
+          type: string
+  /network/l3-networks/l3-network/{network-id}/segmentation-assignments/segmentation-assignment/{segmentation-id}/relationship-list/relationship:
+    put:
+      tags:
+        - Network
+      summary: see node definition for valid relationships
+      operationId: createOrUpdateNetworkL3NetworksL3NetworkSegmentationAssignmentsSegmentationAssignmentRelationshipListRelationship
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: network-id
+          in: path
+          description: Network ID, should be uuid. Unique across A&AI.
+          required: true
+          type: string
+        - name: segmentation-id
+          in: path
+          description: Route Table Reference id, UUID assigned to this instance.
+          required: true
+          type: string
+        - name: body
+          in: body
+          description: relationship object that needs to be created or updated
+          required: true
+          schema:
+            $ref: "#/definitions/relationship"
+    delete:
+      tags:
+        - Network
+      summary: delete an existing relationship
+      description: delete an existing relationship
+      operationId: deleteNetworkL3NetworksL3NetworkSegmentationAssignmentsSegmentationAssignmentRelationshipListRelationship
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: network-id
+          in: path
+          description: Network ID, should be uuid. Unique across A&AI.
+          required: true
+          type: string
+        - name: segmentation-id
+          in: path
+          description: Route Table Reference id, UUID assigned to this instance.
+          required: true
+          type: string
+  /network/l3-networks/l3-network/{network-id}/segmentation-assignments/segmentation-assignment/{segmentation-id}:
+    get:
+      tags:
+        - Network
+      summary: returns segmentation-assignment
+      description: returns segmentation-assignment
+      operationId: getNetworkL3NetworksL3NetworkSegmentationAssignmentsSegmentationAssignment
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "200":
+          description: successful operation
+          schema:
+              $ref: "#/definitions/segmentation-assignment"
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: network-id
+          in: path
+          description: Network ID, should be uuid. Unique across A&AI.
+          required: true
+          type: string
+        - name: segmentation-id
+          in: path
+          description: Route Table Reference id, UUID assigned to this instance.
+          required: true
+          type: string
+        - name: network-name
+          in: query
+          description: Name of the network, governed by some naming convention..
+          required: false
+          type: string
+        - name: network-role
+          in: query
+          description: Role the network plans - who defines these values?
+          required: false
+          type: string
+        - name: service-id
+          in: query
+          description: Unique identifier of service from ASDC.  Does not strictly map to ASDC services.  SOON TO BE DEPRECATED
+          required: false
+          type: string
+        - name: heat-stack-id
+          in: query
+          description: Heat stack id corresponding to this instance, managed by MSO
+          required: false
+          type: string
+        - name: contrail-network-fqdn
+          in: query
+          description: Contrail FQDN for the network
+          required: false
+          type: string
+        - name: model-invariant-id
+          in: query
+          description: the ASDC model id for this resource or service model.
+          required: false
+          type: string
+        - name: model-version-id
+          in: query
+          description: the ASDC model version for this resource or service model.
+          required: false
+          type: string
+        - name: widget-model-id
+          in: query
+          description: the ASDC data dictionary widget model. This maps directly to the A&AI widget.
+          required: false
+          type: string
+        - name: widget-model-version
+          in: query
+          description: the ASDC data dictionary version of the widget model.This maps directly to the A&AI version of the widget.
+          required: false
+          type: string
+    put:
+      tags:
+        - Network
+      summary: create or update an existing segmentation-assignment
+      description: create or update an existing segmentation-assignment
+      operationId: createOrUpdateNetworkL3NetworksL3NetworkSegmentationAssignmentsSegmentationAssignment
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: network-id
+          in: path
+          description: Network ID, should be uuid. Unique across A&AI.
+          required: true
+          type: string
+        - name: segmentation-id
+          in: path
+          description: Route Table Reference id, UUID assigned to this instance.
+          required: true
+          type: string
+        - name: body
+          in: body
+          description: segmentation-assignment object that needs to be created or updated
+          required: true
+          schema:
+            $ref: "#/definitions/segmentation-assignment"
+    delete:
+      tags:
+        - Network
+      summary: delete an existing segmentation-assignment
+      description: delete an existing segmentation-assignment
+      operationId: deleteNetworkL3NetworksL3NetworkSegmentationAssignmentsSegmentationAssignment
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: network-id
+          in: path
+          description: Network ID, should be uuid. Unique across A&AI.
+          required: true
+          type: string
+        - name: segmentation-id
+          in: path
+          description: Route Table Reference id, UUID assigned to this instance.
+          required: true
+          type: string
+        - name: resource-version
+          in: query
+          description: resource-version for concurrency
+          required: true
+          type: string
+  /network/l3-networks/l3-network/{network-id}/segmentation-assignments:
+    get:
+      tags:
+        - Network
+      summary: returns segmentation-assignments
+      description: returns segmentation-assignments
+      operationId: getNetworkL3NetworksL3NetworkSegmentationAssignments
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "200":
+          description: successful operation
+          schema:
+              $ref: "#/definitions/segmentation-assignments"
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: network-id
+          in: path
+          description: Network ID, should be uuid. Unique across A&AI.
+          required: true
+          type: string
+        - name: network-name
+          in: query
+          description: Name of the network, governed by some naming convention..
+          required: false
+          type: string
+        - name: network-role
+          in: query
+          description: Role the network plans - who defines these values?
+          required: false
+          type: string
+        - name: service-id
+          in: query
+          description: Unique identifier of service from ASDC.  Does not strictly map to ASDC services.  SOON TO BE DEPRECATED
+          required: false
+          type: string
+        - name: heat-stack-id
+          in: query
+          description: Heat stack id corresponding to this instance, managed by MSO
+          required: false
+          type: string
+        - name: contrail-network-fqdn
+          in: query
+          description: Contrail FQDN for the network
+          required: false
+          type: string
+        - name: model-invariant-id
+          in: query
+          description: the ASDC model id for this resource or service model.
+          required: false
+          type: string
+        - name: model-version-id
+          in: query
+          description: the ASDC model version for this resource or service model.
+          required: false
+          type: string
+        - name: widget-model-id
+          in: query
+          description: the ASDC data dictionary widget model. This maps directly to the A&AI widget.
+          required: false
+          type: string
+        - name: widget-model-version
+          in: query
+          description: the ASDC data dictionary version of the widget model.This maps directly to the A&AI version of the widget.
+          required: false
+          type: string
+  /network/l3-networks/l3-network/{network-id}/relationship-list/relationship:
+    put:
+      tags:
+        - Network
+      summary: see node definition for valid relationships
+      operationId: createOrUpdateNetworkL3NetworksL3NetworkRelationshipListRelationship
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: network-id
+          in: path
+          description: Network ID, should be uuid. Unique across A&AI.
+          required: true
+          type: string
+        - name: body
+          in: body
+          description: relationship object that needs to be created or updated
+          required: true
+          schema:
+            $ref: "#/definitions/relationship"
+    delete:
+      tags:
+        - Network
+      summary: delete an existing relationship
+      description: delete an existing relationship
+      operationId: deleteNetworkL3NetworksL3NetworkRelationshipListRelationship
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: network-id
+          in: path
+          description: Network ID, should be uuid. Unique across A&AI.
+          required: true
+          type: string
+  /network/l3-networks/l3-network/{network-id}:
+    get:
+      tags:
+        - Network
+      summary: returns l3-network
+      description: returns l3-network
+      operationId: getNetworkL3NetworksL3Network
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "200":
+          description: successful operation
+          schema:
+              $ref: "#/definitions/l3-network"
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: network-id
+          in: path
+          description: Network ID, should be uuid. Unique across A&AI.
+          required: true
+          type: string
+        - name: network-name
+          in: query
+          description: Name of the network, governed by some naming convention..
+          required: false
+          type: string
+        - name: network-role
+          in: query
+          description: Role the network plans - who defines these values?
+          required: false
+          type: string
+        - name: service-id
+          in: query
+          description: Unique identifier of service from ASDC.  Does not strictly map to ASDC services.  SOON TO BE DEPRECATED
+          required: false
+          type: string
+        - name: heat-stack-id
+          in: query
+          description: Heat stack id corresponding to this instance, managed by MSO
+          required: false
+          type: string
+        - name: contrail-network-fqdn
+          in: query
+          description: Contrail FQDN for the network
+          required: false
+          type: string
+        - name: model-invariant-id
+          in: query
+          description: the ASDC model id for this resource or service model.
+          required: false
+          type: string
+        - name: model-version-id
+          in: query
+          description: the ASDC model version for this resource or service model.
+          required: false
+          type: string
+        - name: widget-model-id
+          in: query
+          description: the ASDC data dictionary widget model. This maps directly to the A&AI widget.
+          required: false
+          type: string
+        - name: widget-model-version
+          in: query
+          description: the ASDC data dictionary version of the widget model.This maps directly to the A&AI version of the widget.
+          required: false
+          type: string
+    put:
+      tags:
+        - Network
+      summary: create or update an existing l3-network
+      description: create or update an existing l3-network
+      operationId: createOrUpdateNetworkL3NetworksL3Network
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: network-id
+          in: path
+          description: Network ID, should be uuid. Unique across A&AI.
+          required: true
+          type: string
+        - name: body
+          in: body
+          description: l3-network object that needs to be created or updated
+          required: true
+          schema:
+            $ref: "#/definitions/l3-network"
+    delete:
+      tags:
+        - Network
+      summary: delete an existing l3-network
+      description: delete an existing l3-network
+      operationId: deleteNetworkL3NetworksL3Network
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: network-id
+          in: path
+          description: Network ID, should be uuid. Unique across A&AI.
+          required: true
+          type: string
+        - name: resource-version
+          in: query
+          description: resource-version for concurrency
+          required: true
+          type: string
+  /network/l3-networks:
+    get:
+      tags:
+        - Network
+      summary: returns l3-networks
+      description: returns l3-networks
+      operationId: getNetworkL3Networks
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "200":
+          description: successful operation
+          schema:
+              $ref: "#/definitions/l3-networks"
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+  /network/network-policies/network-policy/{network-policy-id}/relationship-list/relationship:
+    put:
+      tags:
+        - Network
+      summary: see node definition for valid relationships
+      operationId: createOrUpdateNetworkNetworkPoliciesNetworkPolicyRelationshipListRelationship
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: network-policy-id
+          in: path
+          description: UUID representing unique key to this instance
+          required: true
+          type: string
+        - name: body
+          in: body
+          description: relationship object that needs to be created or updated
+          required: true
+          schema:
+            $ref: "#/definitions/relationship"
+    delete:
+      tags:
+        - Network
+      summary: delete an existing relationship
+      description: delete an existing relationship
+      operationId: deleteNetworkNetworkPoliciesNetworkPolicyRelationshipListRelationship
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: network-policy-id
+          in: path
+          description: UUID representing unique key to this instance
+          required: true
+          type: string
+  /network/network-policies/network-policy/{network-policy-id}:
+    get:
+      tags:
+        - Network
+      summary: returns network-policy
+      description: returns network-policy
+      operationId: getNetworkNetworkPoliciesNetworkPolicy
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "200":
+          description: successful operation
+          schema:
+              $ref: "#/definitions/network-policy"
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: network-policy-id
+          in: path
+          description: UUID representing unique key to this instance
+          required: true
+          type: string
+        - name: network-policy-fqdn
+          in: query
+          description: Contrail FQDN for the policy
+          required: false
+          type: string
+    put:
+      tags:
+        - Network
+      summary: create or update an existing network-policy
+      description: create or update an existing network-policy
+      operationId: createOrUpdateNetworkNetworkPoliciesNetworkPolicy
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: network-policy-id
+          in: path
+          description: UUID representing unique key to this instance
+          required: true
+          type: string
+        - name: body
+          in: body
+          description: network-policy object that needs to be created or updated
+          required: true
+          schema:
+            $ref: "#/definitions/network-policy"
+    delete:
+      tags:
+        - Network
+      summary: delete an existing network-policy
+      description: delete an existing network-policy
+      operationId: deleteNetworkNetworkPoliciesNetworkPolicy
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: network-policy-id
+          in: path
+          description: UUID representing unique key to this instance
+          required: true
+          type: string
+        - name: resource-version
+          in: query
+          description: resource-version for concurrency
+          required: true
+          type: string
+  /network/network-policies:
+    get:
+      tags:
+        - Network
+      summary: returns network-policies
+      description: returns network-policies
+      operationId: getNetworkNetworkPolicies
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "200":
+          description: successful operation
+          schema:
+              $ref: "#/definitions/network-policies"
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+  /network/generic-vnfs/generic-vnf/{vnf-id}/relationship-list/relationship:
+    put:
+      tags:
+        - Network
+      summary: see node definition for valid relationships
+      operationId: createOrUpdateNetworkGenericVnfsGenericVnfRelationshipListRelationship
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: vnf-id
+          in: path
+          description: Unique id of VNF.  This is unique across the graph.
+          required: true
+          type: string
+        - name: body
+          in: body
+          description: relationship object that needs to be created or updated
+          required: true
+          schema:
+            $ref: "#/definitions/relationship"
+    delete:
+      tags:
+        - Network
+      summary: delete an existing relationship
+      description: delete an existing relationship
+      operationId: deleteNetworkGenericVnfsGenericVnfRelationshipListRelationship
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: vnf-id
+          in: path
+          description: Unique id of VNF.  This is unique across the graph.
+          required: true
+          type: string
+  /network/generic-vnfs/generic-vnf/{vnf-id}/l-interfaces/l-interface/{interface-name}/vlans/vlan/{vlan-interface}/relationship-list/relationship:
+    put:
+      tags:
+        - Network
+      summary: see node definition for valid relationships
+      operationId: createOrUpdateNetworkGenericVnfsGenericVnfLInterfacesLInterfaceVlansVlanRelationshipListRelationship
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: vnf-id
+          in: path
+          description: Unique id of VNF.  This is unique across the graph.
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name given to the interface
+          required: true
+          type: string
+        - name: vlan-interface
+          in: path
+          description: String that identifies the interface
+          required: true
+          type: string
+        - name: body
+          in: body
+          description: relationship object that needs to be created or updated
+          required: true
+          schema:
+            $ref: "#/definitions/relationship"
+    delete:
+      tags:
+        - Network
+      summary: delete an existing relationship
+      description: delete an existing relationship
+      operationId: deleteNetworkGenericVnfsGenericVnfLInterfacesLInterfaceVlansVlanRelationshipListRelationship
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: vnf-id
+          in: path
+          description: Unique id of VNF.  This is unique across the graph.
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name given to the interface
+          required: true
+          type: string
+        - name: vlan-interface
+          in: path
+          description: String that identifies the interface
+          required: true
+          type: string
+  /network/generic-vnfs/generic-vnf/{vnf-id}/l-interfaces/l-interface/{interface-name}/vlans/vlan/{vlan-interface}/l3-interface-ipv4-address-list/{l3-interface-ipv4-address}/relationship-list/relationship:
+    put:
+      tags:
+        - Network
+      summary: see node definition for valid relationships
+      operationId: createOrUpdateNetworkGenericVnfsGenericVnfLInterfacesLInterfaceVlansVlanL3InterfaceIpv4AddressListRelationshipListRelationship
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: vnf-id
+          in: path
+          description: Unique id of VNF.  This is unique across the graph.
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name given to the interface
+          required: true
+          type: string
+        - name: vlan-interface
+          in: path
+          description: String that identifies the interface
+          required: true
+          type: string
+        - name: l3-interface-ipv4-address
+          in: path
+          description: IP address
+          required: true
+          type: string
+        - name: body
+          in: body
+          description: relationship object that needs to be created or updated
+          required: true
+          schema:
+            $ref: "#/definitions/relationship"
+    delete:
+      tags:
+        - Network
+      summary: delete an existing relationship
+      description: delete an existing relationship
+      operationId: deleteNetworkGenericVnfsGenericVnfLInterfacesLInterfaceVlansVlanL3InterfaceIpv4AddressListRelationshipListRelationship
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: vnf-id
+          in: path
+          description: Unique id of VNF.  This is unique across the graph.
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name given to the interface
+          required: true
+          type: string
+        - name: vlan-interface
+          in: path
+          description: String that identifies the interface
+          required: true
+          type: string
+        - name: l3-interface-ipv4-address
+          in: path
+          description: IP address
+          required: true
+          type: string
+  /network/generic-vnfs/generic-vnf/{vnf-id}/l-interfaces/l-interface/{interface-name}/vlans/vlan/{vlan-interface}/l3-interface-ipv4-address-list/{l3-interface-ipv4-address}:
+    get:
+      tags:
+        - Network
+      summary: returns l3-interface-ipv4-address-list
+      description: returns l3-interface-ipv4-address-list
+      operationId: getNetworkGenericVnfsGenericVnfLInterfacesLInterfaceVlansVlanL3InterfaceIpv4AddressList
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "200":
+          description: successful operation
+          schema:
+              $ref: "#/definitions/l3-interface-ipv4-address-list"
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: vnf-id
+          in: path
+          description: Unique id of VNF.  This is unique across the graph.
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name given to the interface
+          required: true
+          type: string
+        - name: vlan-interface
+          in: path
+          description: String that identifies the interface
+          required: true
+          type: string
+        - name: l3-interface-ipv4-address
+          in: path
+          description: IP address
+          required: true
+          type: string
+        - name: vnf-name
+          in: query
+          description: Name of VNF.
+          required: false
+          type: string
+        - name: vnf-name2
+          in: query
+          description: Alternate name of VNF.
+          required: false
+          type: string
+        - name: vnf-type
+          in: query
+          description: String capturing type of vnf, that was intended to identify the ASDC resource.  This field has been overloaded in service-specific ways and clients should expect changes to occur in the future to this field as ECOMP matures.
+          required: false
+          type: string
+        - name: service-id
+          in: query
+          description: Unique identifier of service, does not necessarily map to ASDC service models.  SOON TO BE DEPRECATED
+          required: false
+          type: string
+        - name: regional-resource-zone
+          in: query
+          description: Regional way of organizing pservers, source of truth should define values
+          required: false
+          type: string
+        - name: prov-status
+          in: query
+          description: Trigger for operational monitoring of this resource by Service Assurance systems.
+          required: false
+          type: string
+        - name: heat-stack-id
+          in: query
+          description: Heat stack id corresponding to this instance, managed by MSO
+          required: false
+          type: string
+        - name: in-maint
+          in: query
+          required: false
+          type: boolean
+        - name: is-closed-loop-disabled
+          in: query
+          required: false
+          type: boolean
+        - name: model-invariant-id
+          in: query
+          description: the ASDC model id for this resource or service model.
+          required: false
+          type: string
+        - name: model-version-id
+          in: query
+          description: the ASDC model version for this resource or service model.
+          required: false
+          type: string
+        - name: widget-model-id
+          in: query
+          description: the ASDC data dictionary widget model. This maps directly to the A&AI widget.
+          required: false
+          type: string
+        - name: widget-model-version
+          in: query
+          description: the ASDC data dictionary version of the widget model.This maps directly to the A&AI version of the widget.
+          required: false
+          type: string
+        - name: nf-type
+          in: query
+          description: Generic description of the type of NF
+          required: false
+          type: string
+        - name: nf-function
+          in: query
+          description: English description of Network function that the specific VNF deployment is providing
+          required: false
+          type: string
+        - name: nf-role
+          in: query
+          description: role in the network that this model will be providing
+          required: false
+          type: string
+        - name: nf-naming-code
+          in: query
+          description: string assigned to this model used for naming purposes
+          required: false
+          type: string
+        - name: interface-id
+          in: query
+          description: ID of interface
+          required: false
+          type: string
+        - name: macaddr
+          in: query
+          description: MAC address for the interface
+          required: false
+          type: string
+        - name: network-name
+          in: query
+          description: Name of the network
+          required: false
+          type: string
+        - name: vlan-id-inner
+          in: query
+          description: Inner VLAN tag
+          required: false
+          type: integer
+          format: int64
+        - name: vpn-key
+          in: query
+          description: This indicates the customers VPN ID associated with this vlan
+          required: false
+          type: string
+        - name: vlan-id-inner
+          in: query
+          description: Inner VLAN tag
+          required: false
+          type: integer
+          format: int64
+        - name: neutron-network-id
+          in: query
+          description: Neutron network id of the interface that address belongs to
+          required: false
+          type: string
+        - name: neutron-subnet-id
+          in: query
+          description: Neutron id of subnet that address belongs to
+          required: false
+          type: string
+    put:
+      tags:
+        - Network
+      summary: create or update an existing l3-interface-ipv4-address-list
+      description: create or update an existing l3-interface-ipv4-address-list
+      operationId: createOrUpdateNetworkGenericVnfsGenericVnfLInterfacesLInterfaceVlansVlanL3InterfaceIpv4AddressList
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: vnf-id
+          in: path
+          description: Unique id of VNF.  This is unique across the graph.
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name given to the interface
+          required: true
+          type: string
+        - name: vlan-interface
+          in: path
+          description: String that identifies the interface
+          required: true
+          type: string
+        - name: l3-interface-ipv4-address
+          in: path
+          description: IP address
+          required: true
+          type: string
+        - name: body
+          in: body
+          description: l3-interface-ipv4-address-list object that needs to be created or updated
+          required: true
+          schema:
+            $ref: "#/definitions/l3-interface-ipv4-address-list"
+    delete:
+      tags:
+        - Network
+      summary: delete an existing l3-interface-ipv4-address-list
+      description: delete an existing l3-interface-ipv4-address-list
+      operationId: deleteNetworkGenericVnfsGenericVnfLInterfacesLInterfaceVlansVlanL3InterfaceIpv4AddressList
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: vnf-id
+          in: path
+          description: Unique id of VNF.  This is unique across the graph.
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name given to the interface
+          required: true
+          type: string
+        - name: vlan-interface
+          in: path
+          description: String that identifies the interface
+          required: true
+          type: string
+        - name: l3-interface-ipv4-address
+          in: path
+          description: IP address
+          required: true
+          type: string
+        - name: resource-version
+          in: query
+          description: resource-version for concurrency
+          required: true
+          type: string
+  /network/generic-vnfs/generic-vnf/{vnf-id}/l-interfaces/l-interface/{interface-name}/vlans/vlan/{vlan-interface}/l3-interface-ipv6-address-list/{l3-interface-ipv6-address}/relationship-list/relationship:
+    put:
+      tags:
+        - Network
+      summary: see node definition for valid relationships
+      operationId: createOrUpdateNetworkGenericVnfsGenericVnfLInterfacesLInterfaceVlansVlanL3InterfaceIpv6AddressListRelationshipListRelationship
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: vnf-id
+          in: path
+          description: Unique id of VNF.  This is unique across the graph.
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name given to the interface
+          required: true
+          type: string
+        - name: vlan-interface
+          in: path
+          description: String that identifies the interface
+          required: true
+          type: string
+        - name: l3-interface-ipv6-address
+          in: path
+          description: IP address
+          required: true
+          type: string
+        - name: body
+          in: body
+          description: relationship object that needs to be created or updated
+          required: true
+          schema:
+            $ref: "#/definitions/relationship"
+    delete:
+      tags:
+        - Network
+      summary: delete an existing relationship
+      description: delete an existing relationship
+      operationId: deleteNetworkGenericVnfsGenericVnfLInterfacesLInterfaceVlansVlanL3InterfaceIpv6AddressListRelationshipListRelationship
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: vnf-id
+          in: path
+          description: Unique id of VNF.  This is unique across the graph.
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name given to the interface
+          required: true
+          type: string
+        - name: vlan-interface
+          in: path
+          description: String that identifies the interface
+          required: true
+          type: string
+        - name: l3-interface-ipv6-address
+          in: path
+          description: IP address
+          required: true
+          type: string
+  /network/generic-vnfs/generic-vnf/{vnf-id}/l-interfaces/l-interface/{interface-name}/vlans/vlan/{vlan-interface}/l3-interface-ipv6-address-list/{l3-interface-ipv6-address}:
+    get:
+      tags:
+        - Network
+      summary: returns l3-interface-ipv6-address-list
+      description: returns l3-interface-ipv6-address-list
+      operationId: getNetworkGenericVnfsGenericVnfLInterfacesLInterfaceVlansVlanL3InterfaceIpv6AddressList
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "200":
+          description: successful operation
+          schema:
+              $ref: "#/definitions/l3-interface-ipv6-address-list"
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: vnf-id
+          in: path
+          description: Unique id of VNF.  This is unique across the graph.
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name given to the interface
+          required: true
+          type: string
+        - name: vlan-interface
+          in: path
+          description: String that identifies the interface
+          required: true
+          type: string
+        - name: l3-interface-ipv6-address
+          in: path
+          description: IP address
+          required: true
+          type: string
+        - name: vnf-name
+          in: query
+          description: Name of VNF.
+          required: false
+          type: string
+        - name: vnf-name2
+          in: query
+          description: Alternate name of VNF.
+          required: false
+          type: string
+        - name: vnf-type
+          in: query
+          description: String capturing type of vnf, that was intended to identify the ASDC resource.  This field has been overloaded in service-specific ways and clients should expect changes to occur in the future to this field as ECOMP matures.
+          required: false
+          type: string
+        - name: service-id
+          in: query
+          description: Unique identifier of service, does not necessarily map to ASDC service models.  SOON TO BE DEPRECATED
+          required: false
+          type: string
+        - name: regional-resource-zone
+          in: query
+          description: Regional way of organizing pservers, source of truth should define values
+          required: false
+          type: string
+        - name: prov-status
+          in: query
+          description: Trigger for operational monitoring of this resource by Service Assurance systems.
+          required: false
+          type: string
+        - name: heat-stack-id
+          in: query
+          description: Heat stack id corresponding to this instance, managed by MSO
+          required: false
+          type: string
+        - name: in-maint
+          in: query
+          required: false
+          type: boolean
+        - name: is-closed-loop-disabled
+          in: query
+          required: false
+          type: boolean
+        - name: model-invariant-id
+          in: query
+          description: the ASDC model id for this resource or service model.
+          required: false
+          type: string
+        - name: model-version-id
+          in: query
+          description: the ASDC model version for this resource or service model.
+          required: false
+          type: string
+        - name: widget-model-id
+          in: query
+          description: the ASDC data dictionary widget model. This maps directly to the A&AI widget.
+          required: false
+          type: string
+        - name: widget-model-version
+          in: query
+          description: the ASDC data dictionary version of the widget model.This maps directly to the A&AI version of the widget.
+          required: false
+          type: string
+        - name: nf-type
+          in: query
+          description: Generic description of the type of NF
+          required: false
+          type: string
+        - name: nf-function
+          in: query
+          description: English description of Network function that the specific VNF deployment is providing
+          required: false
+          type: string
+        - name: nf-role
+          in: query
+          description: role in the network that this model will be providing
+          required: false
+          type: string
+        - name: nf-naming-code
+          in: query
+          description: string assigned to this model used for naming purposes
+          required: false
+          type: string
+        - name: interface-id
+          in: query
+          description: ID of interface
+          required: false
+          type: string
+        - name: macaddr
+          in: query
+          description: MAC address for the interface
+          required: false
+          type: string
+        - name: network-name
+          in: query
+          description: Name of the network
+          required: false
+          type: string
+        - name: vlan-id-inner
+          in: query
+          description: Inner VLAN tag
+          required: false
+          type: integer
+          format: int64
+        - name: vpn-key
+          in: query
+          description: This indicates the customers VPN ID associated with this vlan
+          required: false
+          type: string
+        - name: vlan-id-inner
+          in: query
+          description: Inner VLAN tag
+          required: false
+          type: integer
+          format: int64
+        - name: neutron-network-id
+          in: query
+          description: Neutron network id of the interface that address belongs to
+          required: false
+          type: string
+        - name: neutron-subnet-id
+          in: query
+          description: Neutron id of subnet that address belongs to
+          required: false
+          type: string
+    put:
+      tags:
+        - Network
+      summary: create or update an existing l3-interface-ipv6-address-list
+      description: create or update an existing l3-interface-ipv6-address-list
+      operationId: createOrUpdateNetworkGenericVnfsGenericVnfLInterfacesLInterfaceVlansVlanL3InterfaceIpv6AddressList
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: vnf-id
+          in: path
+          description: Unique id of VNF.  This is unique across the graph.
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name given to the interface
+          required: true
+          type: string
+        - name: vlan-interface
+          in: path
+          description: String that identifies the interface
+          required: true
+          type: string
+        - name: l3-interface-ipv6-address
+          in: path
+          description: IP address
+          required: true
+          type: string
+        - name: body
+          in: body
+          description: l3-interface-ipv6-address-list object that needs to be created or updated
+          required: true
+          schema:
+            $ref: "#/definitions/l3-interface-ipv6-address-list"
+    delete:
+      tags:
+        - Network
+      summary: delete an existing l3-interface-ipv6-address-list
+      description: delete an existing l3-interface-ipv6-address-list
+      operationId: deleteNetworkGenericVnfsGenericVnfLInterfacesLInterfaceVlansVlanL3InterfaceIpv6AddressList
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: vnf-id
+          in: path
+          description: Unique id of VNF.  This is unique across the graph.
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name given to the interface
+          required: true
+          type: string
+        - name: vlan-interface
+          in: path
+          description: String that identifies the interface
+          required: true
+          type: string
+        - name: l3-interface-ipv6-address
+          in: path
+          description: IP address
+          required: true
+          type: string
+        - name: resource-version
+          in: query
+          description: resource-version for concurrency
+          required: true
+          type: string
+  /network/generic-vnfs/generic-vnf/{vnf-id}/l-interfaces/l-interface/{interface-name}/vlans/vlan/{vlan-interface}:
+    get:
+      tags:
+        - Network
+      summary: returns vlan
+      description: returns vlan
+      operationId: getNetworkGenericVnfsGenericVnfLInterfacesLInterfaceVlansVlan
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "200":
+          description: successful operation
+          schema:
+              $ref: "#/definitions/vlan"
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: vnf-id
+          in: path
+          description: Unique id of VNF.  This is unique across the graph.
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name given to the interface
+          required: true
+          type: string
+        - name: vlan-interface
+          in: path
+          description: String that identifies the interface
+          required: true
+          type: string
+        - name: vnf-name
+          in: query
+          description: Name of VNF.
+          required: false
+          type: string
+        - name: vnf-name2
+          in: query
+          description: Alternate name of VNF.
+          required: false
+          type: string
+        - name: vnf-type
+          in: query
+          description: String capturing type of vnf, that was intended to identify the ASDC resource.  This field has been overloaded in service-specific ways and clients should expect changes to occur in the future to this field as ECOMP matures.
+          required: false
+          type: string
+        - name: service-id
+          in: query
+          description: Unique identifier of service, does not necessarily map to ASDC service models.  SOON TO BE DEPRECATED
+          required: false
+          type: string
+        - name: regional-resource-zone
+          in: query
+          description: Regional way of organizing pservers, source of truth should define values
+          required: false
+          type: string
+        - name: prov-status
+          in: query
+          description: Trigger for operational monitoring of this resource by Service Assurance systems.
+          required: false
+          type: string
+        - name: heat-stack-id
+          in: query
+          description: Heat stack id corresponding to this instance, managed by MSO
+          required: false
+          type: string
+        - name: in-maint
+          in: query
+          required: false
+          type: boolean
+        - name: is-closed-loop-disabled
+          in: query
+          required: false
+          type: boolean
+        - name: model-invariant-id
+          in: query
+          description: the ASDC model id for this resource or service model.
+          required: false
+          type: string
+        - name: model-version-id
+          in: query
+          description: the ASDC model version for this resource or service model.
+          required: false
+          type: string
+        - name: widget-model-id
+          in: query
+          description: the ASDC data dictionary widget model. This maps directly to the A&AI widget.
+          required: false
+          type: string
+        - name: widget-model-version
+          in: query
+          description: the ASDC data dictionary version of the widget model.This maps directly to the A&AI version of the widget.
+          required: false
+          type: string
+        - name: nf-type
+          in: query
+          description: Generic description of the type of NF
+          required: false
+          type: string
+        - name: nf-function
+          in: query
+          description: English description of Network function that the specific VNF deployment is providing
+          required: false
+          type: string
+        - name: nf-role
+          in: query
+          description: role in the network that this model will be providing
+          required: false
+          type: string
+        - name: nf-naming-code
+          in: query
+          description: string assigned to this model used for naming purposes
+          required: false
+          type: string
+        - name: interface-id
+          in: query
+          description: ID of interface
+          required: false
+          type: string
+        - name: macaddr
+          in: query
+          description: MAC address for the interface
+          required: false
+          type: string
+        - name: network-name
+          in: query
+          description: Name of the network
+          required: false
+          type: string
+        - name: vlan-id-inner
+          in: query
+          description: Inner VLAN tag
+          required: false
+          type: integer
+          format: int64
+        - name: vpn-key
+          in: query
+          description: This indicates the customers VPN ID associated with this vlan
+          required: false
+          type: string
+    put:
+      tags:
+        - Network
+      summary: create or update an existing vlan
+      description: create or update an existing vlan
+      operationId: createOrUpdateNetworkGenericVnfsGenericVnfLInterfacesLInterfaceVlansVlan
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: vnf-id
+          in: path
+          description: Unique id of VNF.  This is unique across the graph.
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name given to the interface
+          required: true
+          type: string
+        - name: vlan-interface
+          in: path
+          description: String that identifies the interface
+          required: true
+          type: string
+        - name: body
+          in: body
+          description: vlan object that needs to be created or updated
+          required: true
+          schema:
+            $ref: "#/definitions/vlan"
+    delete:
+      tags:
+        - Network
+      summary: delete an existing vlan
+      description: delete an existing vlan
+      operationId: deleteNetworkGenericVnfsGenericVnfLInterfacesLInterfaceVlansVlan
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: vnf-id
+          in: path
+          description: Unique id of VNF.  This is unique across the graph.
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name given to the interface
+          required: true
+          type: string
+        - name: vlan-interface
+          in: path
+          description: String that identifies the interface
+          required: true
+          type: string
+        - name: resource-version
+          in: query
+          description: resource-version for concurrency
+          required: true
+          type: string
+  /network/generic-vnfs/generic-vnf/{vnf-id}/l-interfaces/l-interface/{interface-name}/vlans:
+    get:
+      tags:
+        - Network
+      summary: returns vlans
+      description: returns vlans
+      operationId: getNetworkGenericVnfsGenericVnfLInterfacesLInterfaceVlans
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "200":
+          description: successful operation
+          schema:
+              $ref: "#/definitions/vlans"
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: vnf-id
+          in: path
+          description: Unique id of VNF.  This is unique across the graph.
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name given to the interface
+          required: true
+          type: string
+        - name: vnf-name
+          in: query
+          description: Name of VNF.
+          required: false
+          type: string
+        - name: vnf-name2
+          in: query
+          description: Alternate name of VNF.
+          required: false
+          type: string
+        - name: vnf-type
+          in: query
+          description: String capturing type of vnf, that was intended to identify the ASDC resource.  This field has been overloaded in service-specific ways and clients should expect changes to occur in the future to this field as ECOMP matures.
+          required: false
+          type: string
+        - name: service-id
+          in: query
+          description: Unique identifier of service, does not necessarily map to ASDC service models.  SOON TO BE DEPRECATED
+          required: false
+          type: string
+        - name: regional-resource-zone
+          in: query
+          description: Regional way of organizing pservers, source of truth should define values
+          required: false
+          type: string
+        - name: prov-status
+          in: query
+          description: Trigger for operational monitoring of this resource by Service Assurance systems.
+          required: false
+          type: string
+        - name: heat-stack-id
+          in: query
+          description: Heat stack id corresponding to this instance, managed by MSO
+          required: false
+          type: string
+        - name: in-maint
+          in: query
+          required: false
+          type: boolean
+        - name: is-closed-loop-disabled
+          in: query
+          required: false
+          type: boolean
+        - name: model-invariant-id
+          in: query
+          description: the ASDC model id for this resource or service model.
+          required: false
+          type: string
+        - name: model-version-id
+          in: query
+          description: the ASDC model version for this resource or service model.
+          required: false
+          type: string
+        - name: widget-model-id
+          in: query
+          description: the ASDC data dictionary widget model. This maps directly to the A&AI widget.
+          required: false
+          type: string
+        - name: widget-model-version
+          in: query
+          description: the ASDC data dictionary version of the widget model.This maps directly to the A&AI version of the widget.
+          required: false
+          type: string
+        - name: nf-type
+          in: query
+          description: Generic description of the type of NF
+          required: false
+          type: string
+        - name: nf-function
+          in: query
+          description: English description of Network function that the specific VNF deployment is providing
+          required: false
+          type: string
+        - name: nf-role
+          in: query
+          description: role in the network that this model will be providing
+          required: false
+          type: string
+        - name: nf-naming-code
+          in: query
+          description: string assigned to this model used for naming purposes
+          required: false
+          type: string
+        - name: interface-id
+          in: query
+          description: ID of interface
+          required: false
+          type: string
+        - name: macaddr
+          in: query
+          description: MAC address for the interface
+          required: false
+          type: string
+        - name: network-name
+          in: query
+          description: Name of the network
+          required: false
+          type: string
+  /network/generic-vnfs/generic-vnf/{vnf-id}/l-interfaces/l-interface/{interface-name}/sriov-vfs/sriov-vf/{pci-id}/relationship-list/relationship:
+    put:
+      tags:
+        - Network
+      summary: see node definition for valid relationships
+      operationId: createOrUpdateNetworkGenericVnfsGenericVnfLInterfacesLInterfaceSriovVfsSriovVfRelationshipListRelationship
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: vnf-id
+          in: path
+          description: Unique id of VNF.  This is unique across the graph.
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name given to the interface
+          required: true
+          type: string
+        - name: pci-id
+          in: path
+          description: PCI ID used to identify the sriov-vf
+          required: true
+          type: string
+        - name: body
+          in: body
+          description: relationship object that needs to be created or updated
+          required: true
+          schema:
+            $ref: "#/definitions/relationship"
+    delete:
+      tags:
+        - Network
+      summary: delete an existing relationship
+      description: delete an existing relationship
+      operationId: deleteNetworkGenericVnfsGenericVnfLInterfacesLInterfaceSriovVfsSriovVfRelationshipListRelationship
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: vnf-id
+          in: path
+          description: Unique id of VNF.  This is unique across the graph.
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name given to the interface
+          required: true
+          type: string
+        - name: pci-id
+          in: path
+          description: PCI ID used to identify the sriov-vf
+          required: true
+          type: string
+  /network/generic-vnfs/generic-vnf/{vnf-id}/l-interfaces/l-interface/{interface-name}/sriov-vfs/sriov-vf/{pci-id}:
+    get:
+      tags:
+        - Network
+      summary: returns sriov-vf
+      description: returns sriov-vf
+      operationId: getNetworkGenericVnfsGenericVnfLInterfacesLInterfaceSriovVfsSriovVf
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "200":
+          description: successful operation
+          schema:
+              $ref: "#/definitions/sriov-vf"
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: vnf-id
+          in: path
+          description: Unique id of VNF.  This is unique across the graph.
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name given to the interface
+          required: true
+          type: string
+        - name: pci-id
+          in: path
+          description: PCI ID used to identify the sriov-vf
+          required: true
+          type: string
+        - name: vnf-name
+          in: query
+          description: Name of VNF.
+          required: false
+          type: string
+        - name: vnf-name2
+          in: query
+          description: Alternate name of VNF.
+          required: false
+          type: string
+        - name: vnf-type
+          in: query
+          description: String capturing type of vnf, that was intended to identify the ASDC resource.  This field has been overloaded in service-specific ways and clients should expect changes to occur in the future to this field as ECOMP matures.
+          required: false
+          type: string
+        - name: service-id
+          in: query
+          description: Unique identifier of service, does not necessarily map to ASDC service models.  SOON TO BE DEPRECATED
+          required: false
+          type: string
+        - name: regional-resource-zone
+          in: query
+          description: Regional way of organizing pservers, source of truth should define values
+          required: false
+          type: string
+        - name: prov-status
+          in: query
+          description: Trigger for operational monitoring of this resource by Service Assurance systems.
+          required: false
+          type: string
+        - name: heat-stack-id
+          in: query
+          description: Heat stack id corresponding to this instance, managed by MSO
+          required: false
+          type: string
+        - name: in-maint
+          in: query
+          required: false
+          type: boolean
+        - name: is-closed-loop-disabled
+          in: query
+          required: false
+          type: boolean
+        - name: model-invariant-id
+          in: query
+          description: the ASDC model id for this resource or service model.
+          required: false
+          type: string
+        - name: model-version-id
+          in: query
+          description: the ASDC model version for this resource or service model.
+          required: false
+          type: string
+        - name: widget-model-id
+          in: query
+          description: the ASDC data dictionary widget model. This maps directly to the A&AI widget.
+          required: false
+          type: string
+        - name: widget-model-version
+          in: query
+          description: the ASDC data dictionary version of the widget model.This maps directly to the A&AI version of the widget.
+          required: false
+          type: string
+        - name: nf-type
+          in: query
+          description: Generic description of the type of NF
+          required: false
+          type: string
+        - name: nf-function
+          in: query
+          description: English description of Network function that the specific VNF deployment is providing
+          required: false
+          type: string
+        - name: nf-role
+          in: query
+          description: role in the network that this model will be providing
+          required: false
+          type: string
+        - name: nf-naming-code
+          in: query
+          description: string assigned to this model used for naming purposes
+          required: false
+          type: string
+        - name: interface-id
+          in: query
+          description: ID of interface
+          required: false
+          type: string
+        - name: macaddr
+          in: query
+          description: MAC address for the interface
+          required: false
+          type: string
+        - name: network-name
+          in: query
+          description: Name of the network
+          required: false
+          type: string
+        - name: vf-vlan-filter
+          in: query
+          description: This metadata provides option to specify list of VLAN filters applied on VF to pass the traffic to VM.
+          required: false
+          type: string
+        - name: vf-mac-filter
+          in: query
+          description: When MAC filters are specified, VF-agent service configures VFs to do MAC level filtering before the traffic is passed to VM.
+          required: false
+          type: string
+        - name: vf-vlan-strip
+          in: query
+          description: When this field is set to true, VF will configured to strip the outer TAG before the traffic is passed to VM.
+          required: false
+          type: boolean
+        - name: neutron-network-id
+          in: query
+          description: Neutron network id of the interface
+          required: false
+          type: string
+    put:
+      tags:
+        - Network
+      summary: create or update an existing sriov-vf
+      description: create or update an existing sriov-vf
+      operationId: createOrUpdateNetworkGenericVnfsGenericVnfLInterfacesLInterfaceSriovVfsSriovVf
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: vnf-id
+          in: path
+          description: Unique id of VNF.  This is unique across the graph.
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name given to the interface
+          required: true
+          type: string
+        - name: pci-id
+          in: path
+          description: PCI ID used to identify the sriov-vf
+          required: true
+          type: string
+        - name: body
+          in: body
+          description: sriov-vf object that needs to be created or updated
+          required: true
+          schema:
+            $ref: "#/definitions/sriov-vf"
+    delete:
+      tags:
+        - Network
+      summary: delete an existing sriov-vf
+      description: delete an existing sriov-vf
+      operationId: deleteNetworkGenericVnfsGenericVnfLInterfacesLInterfaceSriovVfsSriovVf
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: vnf-id
+          in: path
+          description: Unique id of VNF.  This is unique across the graph.
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name given to the interface
+          required: true
+          type: string
+        - name: pci-id
+          in: path
+          description: PCI ID used to identify the sriov-vf
+          required: true
+          type: string
+        - name: resource-version
+          in: query
+          description: resource-version for concurrency
+          required: true
+          type: string
+  /network/generic-vnfs/generic-vnf/{vnf-id}/l-interfaces/l-interface/{interface-name}/sriov-vfs:
+    get:
+      tags:
+        - Network
+      summary: returns sriov-vfs
+      description: returns sriov-vfs
+      operationId: getNetworkGenericVnfsGenericVnfLInterfacesLInterfaceSriovVfs
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "200":
+          description: successful operation
+          schema:
+              $ref: "#/definitions/sriov-vfs"
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: vnf-id
+          in: path
+          description: Unique id of VNF.  This is unique across the graph.
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name given to the interface
+          required: true
+          type: string
+        - name: vnf-name
+          in: query
+          description: Name of VNF.
+          required: false
+          type: string
+        - name: vnf-name2
+          in: query
+          description: Alternate name of VNF.
+          required: false
+          type: string
+        - name: vnf-type
+          in: query
+          description: String capturing type of vnf, that was intended to identify the ASDC resource.  This field has been overloaded in service-specific ways and clients should expect changes to occur in the future to this field as ECOMP matures.
+          required: false
+          type: string
+        - name: service-id
+          in: query
+          description: Unique identifier of service, does not necessarily map to ASDC service models.  SOON TO BE DEPRECATED
+          required: false
+          type: string
+        - name: regional-resource-zone
+          in: query
+          description: Regional way of organizing pservers, source of truth should define values
+          required: false
+          type: string
+        - name: prov-status
+          in: query
+          description: Trigger for operational monitoring of this resource by Service Assurance systems.
+          required: false
+          type: string
+        - name: heat-stack-id
+          in: query
+          description: Heat stack id corresponding to this instance, managed by MSO
+          required: false
+          type: string
+        - name: in-maint
+          in: query
+          required: false
+          type: boolean
+        - name: is-closed-loop-disabled
+          in: query
+          required: false
+          type: boolean
+        - name: model-invariant-id
+          in: query
+          description: the ASDC model id for this resource or service model.
+          required: false
+          type: string
+        - name: model-version-id
+          in: query
+          description: the ASDC model version for this resource or service model.
+          required: false
+          type: string
+        - name: widget-model-id
+          in: query
+          description: the ASDC data dictionary widget model. This maps directly to the A&AI widget.
+          required: false
+          type: string
+        - name: widget-model-version
+          in: query
+          description: the ASDC data dictionary version of the widget model.This maps directly to the A&AI version of the widget.
+          required: false
+          type: string
+        - name: nf-type
+          in: query
+          description: Generic description of the type of NF
+          required: false
+          type: string
+        - name: nf-function
+          in: query
+          description: English description of Network function that the specific VNF deployment is providing
+          required: false
+          type: string
+        - name: nf-role
+          in: query
+          description: role in the network that this model will be providing
+          required: false
+          type: string
+        - name: nf-naming-code
+          in: query
+          description: string assigned to this model used for naming purposes
+          required: false
+          type: string
+        - name: interface-id
+          in: query
+          description: ID of interface
+          required: false
+          type: string
+        - name: macaddr
+          in: query
+          description: MAC address for the interface
+          required: false
+          type: string
+        - name: network-name
+          in: query
+          description: Name of the network
+          required: false
+          type: string
+  /network/generic-vnfs/generic-vnf/{vnf-id}/l-interfaces/l-interface/{interface-name}/relationship-list/relationship:
+    put:
+      tags:
+        - Network
+      summary: see node definition for valid relationships
+      operationId: createOrUpdateNetworkGenericVnfsGenericVnfLInterfacesLInterfaceRelationshipListRelationship
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: vnf-id
+          in: path
+          description: Unique id of VNF.  This is unique across the graph.
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name given to the interface
+          required: true
+          type: string
+        - name: body
+          in: body
+          description: relationship object that needs to be created or updated
+          required: true
+          schema:
+            $ref: "#/definitions/relationship"
+    delete:
+      tags:
+        - Network
+      summary: delete an existing relationship
+      description: delete an existing relationship
+      operationId: deleteNetworkGenericVnfsGenericVnfLInterfacesLInterfaceRelationshipListRelationship
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: vnf-id
+          in: path
+          description: Unique id of VNF.  This is unique across the graph.
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name given to the interface
+          required: true
+          type: string
+  /network/generic-vnfs/generic-vnf/{vnf-id}/l-interfaces/l-interface/{interface-name}/l3-interface-ipv4-address-list/{l3-interface-ipv4-address}/relationship-list/relationship:
+    put:
+      tags:
+        - Network
+      summary: see node definition for valid relationships
+      operationId: createOrUpdateNetworkGenericVnfsGenericVnfLInterfacesLInterfaceL3InterfaceIpv4AddressListRelationshipListRelationship
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: vnf-id
+          in: path
+          description: Unique id of VNF.  This is unique across the graph.
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name given to the interface
+          required: true
+          type: string
+        - name: l3-interface-ipv4-address
+          in: path
+          description: IP address
+          required: true
+          type: string
+        - name: body
+          in: body
+          description: relationship object that needs to be created or updated
+          required: true
+          schema:
+            $ref: "#/definitions/relationship"
+    delete:
+      tags:
+        - Network
+      summary: delete an existing relationship
+      description: delete an existing relationship
+      operationId: deleteNetworkGenericVnfsGenericVnfLInterfacesLInterfaceL3InterfaceIpv4AddressListRelationshipListRelationship
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: vnf-id
+          in: path
+          description: Unique id of VNF.  This is unique across the graph.
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name given to the interface
+          required: true
+          type: string
+        - name: l3-interface-ipv4-address
+          in: path
+          description: IP address
+          required: true
+          type: string
+  /network/generic-vnfs/generic-vnf/{vnf-id}/l-interfaces/l-interface/{interface-name}/l3-interface-ipv4-address-list/{l3-interface-ipv4-address}:
+    get:
+      tags:
+        - Network
+      summary: returns l3-interface-ipv4-address-list
+      description: returns l3-interface-ipv4-address-list
+      operationId: getNetworkGenericVnfsGenericVnfLInterfacesLInterfaceL3InterfaceIpv4AddressList
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "200":
+          description: successful operation
+          schema:
+              $ref: "#/definitions/l3-interface-ipv4-address-list"
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: vnf-id
+          in: path
+          description: Unique id of VNF.  This is unique across the graph.
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name given to the interface
+          required: true
+          type: string
+        - name: l3-interface-ipv4-address
+          in: path
+          description: IP address
+          required: true
+          type: string
+        - name: vnf-name
+          in: query
+          description: Name of VNF.
+          required: false
+          type: string
+        - name: vnf-name2
+          in: query
+          description: Alternate name of VNF.
+          required: false
+          type: string
+        - name: vnf-type
+          in: query
+          description: String capturing type of vnf, that was intended to identify the ASDC resource.  This field has been overloaded in service-specific ways and clients should expect changes to occur in the future to this field as ECOMP matures.
+          required: false
+          type: string
+        - name: service-id
+          in: query
+          description: Unique identifier of service, does not necessarily map to ASDC service models.  SOON TO BE DEPRECATED
+          required: false
+          type: string
+        - name: regional-resource-zone
+          in: query
+          description: Regional way of organizing pservers, source of truth should define values
+          required: false
+          type: string
+        - name: prov-status
+          in: query
+          description: Trigger for operational monitoring of this resource by Service Assurance systems.
+          required: false
+          type: string
+        - name: heat-stack-id
+          in: query
+          description: Heat stack id corresponding to this instance, managed by MSO
+          required: false
+          type: string
+        - name: in-maint
+          in: query
+          required: false
+          type: boolean
+        - name: is-closed-loop-disabled
+          in: query
+          required: false
+          type: boolean
+        - name: model-invariant-id
+          in: query
+          description: the ASDC model id for this resource or service model.
+          required: false
+          type: string
+        - name: model-version-id
+          in: query
+          description: the ASDC model version for this resource or service model.
+          required: false
+          type: string
+        - name: widget-model-id
+          in: query
+          description: the ASDC data dictionary widget model. This maps directly to the A&AI widget.
+          required: false
+          type: string
+        - name: widget-model-version
+          in: query
+          description: the ASDC data dictionary version of the widget model.This maps directly to the A&AI version of the widget.
+          required: false
+          type: string
+        - name: nf-type
+          in: query
+          description: Generic description of the type of NF
+          required: false
+          type: string
+        - name: nf-function
+          in: query
+          description: English description of Network function that the specific VNF deployment is providing
+          required: false
+          type: string
+        - name: nf-role
+          in: query
+          description: role in the network that this model will be providing
+          required: false
+          type: string
+        - name: nf-naming-code
+          in: query
+          description: string assigned to this model used for naming purposes
+          required: false
+          type: string
+        - name: interface-id
+          in: query
+          description: ID of interface
+          required: false
+          type: string
+        - name: macaddr
+          in: query
+          description: MAC address for the interface
+          required: false
+          type: string
+        - name: network-name
+          in: query
+          description: Name of the network
+          required: false
+          type: string
+        - name: vlan-id-inner
+          in: query
+          description: Inner VLAN tag
+          required: false
+          type: integer
+          format: int64
+        - name: neutron-network-id
+          in: query
+          description: Neutron network id of the interface that address belongs to
+          required: false
+          type: string
+        - name: neutron-subnet-id
+          in: query
+          description: Neutron id of subnet that address belongs to
+          required: false
+          type: string
+    put:
+      tags:
+        - Network
+      summary: create or update an existing l3-interface-ipv4-address-list
+      description: create or update an existing l3-interface-ipv4-address-list
+      operationId: createOrUpdateNetworkGenericVnfsGenericVnfLInterfacesLInterfaceL3InterfaceIpv4AddressList
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: vnf-id
+          in: path
+          description: Unique id of VNF.  This is unique across the graph.
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name given to the interface
+          required: true
+          type: string
+        - name: l3-interface-ipv4-address
+          in: path
+          description: IP address
+          required: true
+          type: string
+        - name: body
+          in: body
+          description: l3-interface-ipv4-address-list object that needs to be created or updated
+          required: true
+          schema:
+            $ref: "#/definitions/l3-interface-ipv4-address-list"
+    delete:
+      tags:
+        - Network
+      summary: delete an existing l3-interface-ipv4-address-list
+      description: delete an existing l3-interface-ipv4-address-list
+      operationId: deleteNetworkGenericVnfsGenericVnfLInterfacesLInterfaceL3InterfaceIpv4AddressList
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: vnf-id
+          in: path
+          description: Unique id of VNF.  This is unique across the graph.
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name given to the interface
+          required: true
+          type: string
+        - name: l3-interface-ipv4-address
+          in: path
+          description: IP address
+          required: true
+          type: string
+        - name: resource-version
+          in: query
+          description: resource-version for concurrency
+          required: true
+          type: string
+  /network/generic-vnfs/generic-vnf/{vnf-id}/l-interfaces/l-interface/{interface-name}/l3-interface-ipv6-address-list/{l3-interface-ipv6-address}/relationship-list/relationship:
+    put:
+      tags:
+        - Network
+      summary: see node definition for valid relationships
+      operationId: createOrUpdateNetworkGenericVnfsGenericVnfLInterfacesLInterfaceL3InterfaceIpv6AddressListRelationshipListRelationship
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: vnf-id
+          in: path
+          description: Unique id of VNF.  This is unique across the graph.
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name given to the interface
+          required: true
+          type: string
+        - name: l3-interface-ipv6-address
+          in: path
+          description: IP address
+          required: true
+          type: string
+        - name: body
+          in: body
+          description: relationship object that needs to be created or updated
+          required: true
+          schema:
+            $ref: "#/definitions/relationship"
+    delete:
+      tags:
+        - Network
+      summary: delete an existing relationship
+      description: delete an existing relationship
+      operationId: deleteNetworkGenericVnfsGenericVnfLInterfacesLInterfaceL3InterfaceIpv6AddressListRelationshipListRelationship
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: vnf-id
+          in: path
+          description: Unique id of VNF.  This is unique across the graph.
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name given to the interface
+          required: true
+          type: string
+        - name: l3-interface-ipv6-address
+          in: path
+          description: IP address
+          required: true
+          type: string
+  /network/generic-vnfs/generic-vnf/{vnf-id}/l-interfaces/l-interface/{interface-name}/l3-interface-ipv6-address-list/{l3-interface-ipv6-address}:
+    get:
+      tags:
+        - Network
+      summary: returns l3-interface-ipv6-address-list
+      description: returns l3-interface-ipv6-address-list
+      operationId: getNetworkGenericVnfsGenericVnfLInterfacesLInterfaceL3InterfaceIpv6AddressList
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "200":
+          description: successful operation
+          schema:
+              $ref: "#/definitions/l3-interface-ipv6-address-list"
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: vnf-id
+          in: path
+          description: Unique id of VNF.  This is unique across the graph.
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name given to the interface
+          required: true
+          type: string
+        - name: l3-interface-ipv6-address
+          in: path
+          description: IP address
+          required: true
+          type: string
+        - name: vnf-name
+          in: query
+          description: Name of VNF.
+          required: false
+          type: string
+        - name: vnf-name2
+          in: query
+          description: Alternate name of VNF.
+          required: false
+          type: string
+        - name: vnf-type
+          in: query
+          description: String capturing type of vnf, that was intended to identify the ASDC resource.  This field has been overloaded in service-specific ways and clients should expect changes to occur in the future to this field as ECOMP matures.
+          required: false
+          type: string
+        - name: service-id
+          in: query
+          description: Unique identifier of service, does not necessarily map to ASDC service models.  SOON TO BE DEPRECATED
+          required: false
+          type: string
+        - name: regional-resource-zone
+          in: query
+          description: Regional way of organizing pservers, source of truth should define values
+          required: false
+          type: string
+        - name: prov-status
+          in: query
+          description: Trigger for operational monitoring of this resource by Service Assurance systems.
+          required: false
+          type: string
+        - name: heat-stack-id
+          in: query
+          description: Heat stack id corresponding to this instance, managed by MSO
+          required: false
+          type: string
+        - name: in-maint
+          in: query
+          required: false
+          type: boolean
+        - name: is-closed-loop-disabled
+          in: query
+          required: false
+          type: boolean
+        - name: model-invariant-id
+          in: query
+          description: the ASDC model id for this resource or service model.
+          required: false
+          type: string
+        - name: model-version-id
+          in: query
+          description: the ASDC model version for this resource or service model.
+          required: false
+          type: string
+        - name: widget-model-id
+          in: query
+          description: the ASDC data dictionary widget model. This maps directly to the A&AI widget.
+          required: false
+          type: string
+        - name: widget-model-version
+          in: query
+          description: the ASDC data dictionary version of the widget model.This maps directly to the A&AI version of the widget.
+          required: false
+          type: string
+        - name: nf-type
+          in: query
+          description: Generic description of the type of NF
+          required: false
+          type: string
+        - name: nf-function
+          in: query
+          description: English description of Network function that the specific VNF deployment is providing
+          required: false
+          type: string
+        - name: nf-role
+          in: query
+          description: role in the network that this model will be providing
+          required: false
+          type: string
+        - name: nf-naming-code
+          in: query
+          description: string assigned to this model used for naming purposes
+          required: false
+          type: string
+        - name: interface-id
+          in: query
+          description: ID of interface
+          required: false
+          type: string
+        - name: macaddr
+          in: query
+          description: MAC address for the interface
+          required: false
+          type: string
+        - name: network-name
+          in: query
+          description: Name of the network
+          required: false
+          type: string
+        - name: vlan-id-inner
+          in: query
+          description: Inner VLAN tag
+          required: false
+          type: integer
+          format: int64
+        - name: neutron-network-id
+          in: query
+          description: Neutron network id of the interface that address belongs to
+          required: false
+          type: string
+        - name: neutron-subnet-id
+          in: query
+          description: Neutron id of subnet that address belongs to
+          required: false
+          type: string
+    put:
+      tags:
+        - Network
+      summary: create or update an existing l3-interface-ipv6-address-list
+      description: create or update an existing l3-interface-ipv6-address-list
+      operationId: createOrUpdateNetworkGenericVnfsGenericVnfLInterfacesLInterfaceL3InterfaceIpv6AddressList
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: vnf-id
+          in: path
+          description: Unique id of VNF.  This is unique across the graph.
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name given to the interface
+          required: true
+          type: string
+        - name: l3-interface-ipv6-address
+          in: path
+          description: IP address
+          required: true
+          type: string
+        - name: body
+          in: body
+          description: l3-interface-ipv6-address-list object that needs to be created or updated
+          required: true
+          schema:
+            $ref: "#/definitions/l3-interface-ipv6-address-list"
+    delete:
+      tags:
+        - Network
+      summary: delete an existing l3-interface-ipv6-address-list
+      description: delete an existing l3-interface-ipv6-address-list
+      operationId: deleteNetworkGenericVnfsGenericVnfLInterfacesLInterfaceL3InterfaceIpv6AddressList
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: vnf-id
+          in: path
+          description: Unique id of VNF.  This is unique across the graph.
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name given to the interface
+          required: true
+          type: string
+        - name: l3-interface-ipv6-address
+          in: path
+          description: IP address
+          required: true
+          type: string
+        - name: resource-version
+          in: query
+          description: resource-version for concurrency
+          required: true
+          type: string
+  /network/generic-vnfs/generic-vnf/{vnf-id}/l-interfaces/l-interface/{interface-name}:
+    get:
+      tags:
+        - Network
+      summary: returns l-interface
+      description: returns l-interface
+      operationId: getNetworkGenericVnfsGenericVnfLInterfacesLInterface
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "200":
+          description: successful operation
+          schema:
+              $ref: "#/definitions/l-interface"
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: vnf-id
+          in: path
+          description: Unique id of VNF.  This is unique across the graph.
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name given to the interface
+          required: true
+          type: string
+        - name: vnf-name
+          in: query
+          description: Name of VNF.
+          required: false
+          type: string
+        - name: vnf-name2
+          in: query
+          description: Alternate name of VNF.
+          required: false
+          type: string
+        - name: vnf-type
+          in: query
+          description: String capturing type of vnf, that was intended to identify the ASDC resource.  This field has been overloaded in service-specific ways and clients should expect changes to occur in the future to this field as ECOMP matures.
+          required: false
+          type: string
+        - name: service-id
+          in: query
+          description: Unique identifier of service, does not necessarily map to ASDC service models.  SOON TO BE DEPRECATED
+          required: false
+          type: string
+        - name: regional-resource-zone
+          in: query
+          description: Regional way of organizing pservers, source of truth should define values
+          required: false
+          type: string
+        - name: prov-status
+          in: query
+          description: Trigger for operational monitoring of this resource by Service Assurance systems.
+          required: false
+          type: string
+        - name: heat-stack-id
+          in: query
+          description: Heat stack id corresponding to this instance, managed by MSO
+          required: false
+          type: string
+        - name: in-maint
+          in: query
+          required: false
+          type: boolean
+        - name: is-closed-loop-disabled
+          in: query
+          required: false
+          type: boolean
+        - name: model-invariant-id
+          in: query
+          description: the ASDC model id for this resource or service model.
+          required: false
+          type: string
+        - name: model-version-id
+          in: query
+          description: the ASDC model version for this resource or service model.
+          required: false
+          type: string
+        - name: widget-model-id
+          in: query
+          description: the ASDC data dictionary widget model. This maps directly to the A&AI widget.
+          required: false
+          type: string
+        - name: widget-model-version
+          in: query
+          description: the ASDC data dictionary version of the widget model.This maps directly to the A&AI version of the widget.
+          required: false
+          type: string
+        - name: nf-type
+          in: query
+          description: Generic description of the type of NF
+          required: false
+          type: string
+        - name: nf-function
+          in: query
+          description: English description of Network function that the specific VNF deployment is providing
+          required: false
+          type: string
+        - name: nf-role
+          in: query
+          description: role in the network that this model will be providing
+          required: false
+          type: string
+        - name: nf-naming-code
+          in: query
+          description: string assigned to this model used for naming purposes
+          required: false
+          type: string
+        - name: interface-id
+          in: query
+          description: ID of interface
+          required: false
+          type: string
+        - name: macaddr
+          in: query
+          description: MAC address for the interface
+          required: false
+          type: string
+        - name: network-name
+          in: query
+          description: Name of the network
+          required: false
+          type: string
+    put:
+      tags:
+        - Network
+      summary: create or update an existing l-interface
+      description: create or update an existing l-interface
+      operationId: createOrUpdateNetworkGenericVnfsGenericVnfLInterfacesLInterface
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: vnf-id
+          in: path
+          description: Unique id of VNF.  This is unique across the graph.
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name given to the interface
+          required: true
+          type: string
+        - name: body
+          in: body
+          description: l-interface object that needs to be created or updated
+          required: true
+          schema:
+            $ref: "#/definitions/l-interface"
+    delete:
+      tags:
+        - Network
+      summary: delete an existing l-interface
+      description: delete an existing l-interface
+      operationId: deleteNetworkGenericVnfsGenericVnfLInterfacesLInterface
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: vnf-id
+          in: path
+          description: Unique id of VNF.  This is unique across the graph.
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name given to the interface
+          required: true
+          type: string
+        - name: resource-version
+          in: query
+          description: resource-version for concurrency
+          required: true
+          type: string
+  /network/generic-vnfs/generic-vnf/{vnf-id}/l-interfaces:
+    get:
+      tags:
+        - Network
+      summary: returns l-interfaces
+      description: returns l-interfaces
+      operationId: getNetworkGenericVnfsGenericVnfLInterfaces
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "200":
+          description: successful operation
+          schema:
+              $ref: "#/definitions/l-interfaces"
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: vnf-id
+          in: path
+          description: Unique id of VNF.  This is unique across the graph.
+          required: true
+          type: string
+        - name: vnf-name
+          in: query
+          description: Name of VNF.
+          required: false
+          type: string
+        - name: vnf-name2
+          in: query
+          description: Alternate name of VNF.
+          required: false
+          type: string
+        - name: vnf-type
+          in: query
+          description: String capturing type of vnf, that was intended to identify the ASDC resource.  This field has been overloaded in service-specific ways and clients should expect changes to occur in the future to this field as ECOMP matures.
+          required: false
+          type: string
+        - name: service-id
+          in: query
+          description: Unique identifier of service, does not necessarily map to ASDC service models.  SOON TO BE DEPRECATED
+          required: false
+          type: string
+        - name: regional-resource-zone
+          in: query
+          description: Regional way of organizing pservers, source of truth should define values
+          required: false
+          type: string
+        - name: prov-status
+          in: query
+          description: Trigger for operational monitoring of this resource by Service Assurance systems.
+          required: false
+          type: string
+        - name: heat-stack-id
+          in: query
+          description: Heat stack id corresponding to this instance, managed by MSO
+          required: false
+          type: string
+        - name: in-maint
+          in: query
+          required: false
+          type: boolean
+        - name: is-closed-loop-disabled
+          in: query
+          required: false
+          type: boolean
+        - name: model-invariant-id
+          in: query
+          description: the ASDC model id for this resource or service model.
+          required: false
+          type: string
+        - name: model-version-id
+          in: query
+          description: the ASDC model version for this resource or service model.
+          required: false
+          type: string
+        - name: widget-model-id
+          in: query
+          description: the ASDC data dictionary widget model. This maps directly to the A&AI widget.
+          required: false
+          type: string
+        - name: widget-model-version
+          in: query
+          description: the ASDC data dictionary version of the widget model.This maps directly to the A&AI version of the widget.
+          required: false
+          type: string
+        - name: nf-type
+          in: query
+          description: Generic description of the type of NF
+          required: false
+          type: string
+        - name: nf-function
+          in: query
+          description: English description of Network function that the specific VNF deployment is providing
+          required: false
+          type: string
+        - name: nf-role
+          in: query
+          description: role in the network that this model will be providing
+          required: false
+          type: string
+        - name: nf-naming-code
+          in: query
+          description: string assigned to this model used for naming purposes
+          required: false
+          type: string
+  /network/generic-vnfs/generic-vnf/{vnf-id}/lag-interfaces/lag-interface/{interface-name}/relationship-list/relationship:
+    put:
+      tags:
+        - Network
+      summary: see node definition for valid relationships
+      operationId: createOrUpdateNetworkGenericVnfsGenericVnfLagInterfacesLagInterfaceRelationshipListRelationship
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: vnf-id
+          in: path
+          description: Unique id of VNF.  This is unique across the graph.
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name that identifies the link aggregate interface
+          required: true
+          type: string
+        - name: body
+          in: body
+          description: relationship object that needs to be created or updated
+          required: true
+          schema:
+            $ref: "#/definitions/relationship"
+    delete:
+      tags:
+        - Network
+      summary: delete an existing relationship
+      description: delete an existing relationship
+      operationId: deleteNetworkGenericVnfsGenericVnfLagInterfacesLagInterfaceRelationshipListRelationship
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: vnf-id
+          in: path
+          description: Unique id of VNF.  This is unique across the graph.
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name that identifies the link aggregate interface
+          required: true
+          type: string
+  /network/generic-vnfs/generic-vnf/{vnf-id}/lag-interfaces/lag-interface/{interface-name}/l-interfaces/l-interface/{interface-name}/vlans/vlan/{vlan-interface}/relationship-list/relationship:
+    put:
+      tags:
+        - Network
+      summary: see node definition for valid relationships
+      operationId: createOrUpdateNetworkGenericVnfsGenericVnfLagInterfacesLagInterfaceLInterfacesLInterfaceVlansVlanRelationshipListRelationship
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: vnf-id
+          in: path
+          description: Unique id of VNF.  This is unique across the graph.
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name that identifies the link aggregate interface
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name given to the interface
+          required: true
+          type: string
+        - name: vlan-interface
+          in: path
+          description: String that identifies the interface
+          required: true
+          type: string
+        - name: body
+          in: body
+          description: relationship object that needs to be created or updated
+          required: true
+          schema:
+            $ref: "#/definitions/relationship"
+    delete:
+      tags:
+        - Network
+      summary: delete an existing relationship
+      description: delete an existing relationship
+      operationId: deleteNetworkGenericVnfsGenericVnfLagInterfacesLagInterfaceLInterfacesLInterfaceVlansVlanRelationshipListRelationship
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: vnf-id
+          in: path
+          description: Unique id of VNF.  This is unique across the graph.
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name that identifies the link aggregate interface
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name given to the interface
+          required: true
+          type: string
+        - name: vlan-interface
+          in: path
+          description: String that identifies the interface
+          required: true
+          type: string
+  /network/generic-vnfs/generic-vnf/{vnf-id}/lag-interfaces/lag-interface/{interface-name}/l-interfaces/l-interface/{interface-name}/vlans/vlan/{vlan-interface}/l3-interface-ipv4-address-list/{l3-interface-ipv4-address}/relationship-list/relationship:
+    put:
+      tags:
+        - Network
+      summary: see node definition for valid relationships
+      operationId: createOrUpdateNetworkGenericVnfsGenericVnfLagInterfacesLagInterfaceLInterfacesLInterfaceVlansVlanL3InterfaceIpv4AddressListRelationshipListRelationship
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: vnf-id
+          in: path
+          description: Unique id of VNF.  This is unique across the graph.
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name that identifies the link aggregate interface
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name given to the interface
+          required: true
+          type: string
+        - name: vlan-interface
+          in: path
+          description: String that identifies the interface
+          required: true
+          type: string
+        - name: l3-interface-ipv4-address
+          in: path
+          description: IP address
+          required: true
+          type: string
+        - name: body
+          in: body
+          description: relationship object that needs to be created or updated
+          required: true
+          schema:
+            $ref: "#/definitions/relationship"
+    delete:
+      tags:
+        - Network
+      summary: delete an existing relationship
+      description: delete an existing relationship
+      operationId: deleteNetworkGenericVnfsGenericVnfLagInterfacesLagInterfaceLInterfacesLInterfaceVlansVlanL3InterfaceIpv4AddressListRelationshipListRelationship
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: vnf-id
+          in: path
+          description: Unique id of VNF.  This is unique across the graph.
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name that identifies the link aggregate interface
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name given to the interface
+          required: true
+          type: string
+        - name: vlan-interface
+          in: path
+          description: String that identifies the interface
+          required: true
+          type: string
+        - name: l3-interface-ipv4-address
+          in: path
+          description: IP address
+          required: true
+          type: string
+  /network/generic-vnfs/generic-vnf/{vnf-id}/lag-interfaces/lag-interface/{interface-name}/l-interfaces/l-interface/{interface-name}/vlans/vlan/{vlan-interface}/l3-interface-ipv4-address-list/{l3-interface-ipv4-address}:
+    get:
+      tags:
+        - Network
+      summary: returns l3-interface-ipv4-address-list
+      description: returns l3-interface-ipv4-address-list
+      operationId: getNetworkGenericVnfsGenericVnfLagInterfacesLagInterfaceLInterfacesLInterfaceVlansVlanL3InterfaceIpv4AddressList
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "200":
+          description: successful operation
+          schema:
+              $ref: "#/definitions/l3-interface-ipv4-address-list"
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: vnf-id
+          in: path
+          description: Unique id of VNF.  This is unique across the graph.
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name that identifies the link aggregate interface
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name given to the interface
+          required: true
+          type: string
+        - name: vlan-interface
+          in: path
+          description: String that identifies the interface
+          required: true
+          type: string
+        - name: l3-interface-ipv4-address
+          in: path
+          description: IP address
+          required: true
+          type: string
+        - name: vnf-name
+          in: query
+          description: Name of VNF.
+          required: false
+          type: string
+        - name: vnf-name2
+          in: query
+          description: Alternate name of VNF.
+          required: false
+          type: string
+        - name: vnf-type
+          in: query
+          description: String capturing type of vnf, that was intended to identify the ASDC resource.  This field has been overloaded in service-specific ways and clients should expect changes to occur in the future to this field as ECOMP matures.
+          required: false
+          type: string
+        - name: service-id
+          in: query
+          description: Unique identifier of service, does not necessarily map to ASDC service models.  SOON TO BE DEPRECATED
+          required: false
+          type: string
+        - name: regional-resource-zone
+          in: query
+          description: Regional way of organizing pservers, source of truth should define values
+          required: false
+          type: string
+        - name: prov-status
+          in: query
+          description: Trigger for operational monitoring of this resource by Service Assurance systems.
+          required: false
+          type: string
+        - name: heat-stack-id
+          in: query
+          description: Heat stack id corresponding to this instance, managed by MSO
+          required: false
+          type: string
+        - name: in-maint
+          in: query
+          required: false
+          type: boolean
+        - name: is-closed-loop-disabled
+          in: query
+          required: false
+          type: boolean
+        - name: model-invariant-id
+          in: query
+          description: the ASDC model id for this resource or service model.
+          required: false
+          type: string
+        - name: model-version-id
+          in: query
+          description: the ASDC model version for this resource or service model.
+          required: false
+          type: string
+        - name: widget-model-id
+          in: query
+          description: the ASDC data dictionary widget model. This maps directly to the A&AI widget.
+          required: false
+          type: string
+        - name: widget-model-version
+          in: query
+          description: the ASDC data dictionary version of the widget model.This maps directly to the A&AI version of the widget.
+          required: false
+          type: string
+        - name: nf-type
+          in: query
+          description: Generic description of the type of NF
+          required: false
+          type: string
+        - name: nf-function
+          in: query
+          description: English description of Network function that the specific VNF deployment is providing
+          required: false
+          type: string
+        - name: nf-role
+          in: query
+          description: role in the network that this model will be providing
+          required: false
+          type: string
+        - name: nf-naming-code
+          in: query
+          description: string assigned to this model used for naming purposes
+          required: false
+          type: string
+        - name: interface-id
+          in: query
+          description: ID of interface
+          required: false
+          type: string
+        - name: interface-role
+          in: query
+          description: Role assigned to this Interface, should use values as defined in ECOMP Yang models.
+          required: false
+          type: string
+        - name: interface-id
+          in: query
+          description: ID of interface
+          required: false
+          type: string
+        - name: macaddr
+          in: query
+          description: MAC address for the interface
+          required: false
+          type: string
+        - name: network-name
+          in: query
+          description: Name of the network
+          required: false
+          type: string
+        - name: vlan-id-inner
+          in: query
+          description: Inner VLAN tag
+          required: false
+          type: integer
+          format: int64
+        - name: vpn-key
+          in: query
+          description: This indicates the customers VPN ID associated with this vlan
+          required: false
+          type: string
+        - name: vlan-id-inner
+          in: query
+          description: Inner VLAN tag
+          required: false
+          type: integer
+          format: int64
+        - name: neutron-network-id
+          in: query
+          description: Neutron network id of the interface that address belongs to
+          required: false
+          type: string
+        - name: neutron-subnet-id
+          in: query
+          description: Neutron id of subnet that address belongs to
+          required: false
+          type: string
+    put:
+      tags:
+        - Network
+      summary: create or update an existing l3-interface-ipv4-address-list
+      description: create or update an existing l3-interface-ipv4-address-list
+      operationId: createOrUpdateNetworkGenericVnfsGenericVnfLagInterfacesLagInterfaceLInterfacesLInterfaceVlansVlanL3InterfaceIpv4AddressList
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: vnf-id
+          in: path
+          description: Unique id of VNF.  This is unique across the graph.
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name that identifies the link aggregate interface
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name given to the interface
+          required: true
+          type: string
+        - name: vlan-interface
+          in: path
+          description: String that identifies the interface
+          required: true
+          type: string
+        - name: l3-interface-ipv4-address
+          in: path
+          description: IP address
+          required: true
+          type: string
+        - name: body
+          in: body
+          description: l3-interface-ipv4-address-list object that needs to be created or updated
+          required: true
+          schema:
+            $ref: "#/definitions/l3-interface-ipv4-address-list"
+    delete:
+      tags:
+        - Network
+      summary: delete an existing l3-interface-ipv4-address-list
+      description: delete an existing l3-interface-ipv4-address-list
+      operationId: deleteNetworkGenericVnfsGenericVnfLagInterfacesLagInterfaceLInterfacesLInterfaceVlansVlanL3InterfaceIpv4AddressList
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: vnf-id
+          in: path
+          description: Unique id of VNF.  This is unique across the graph.
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name that identifies the link aggregate interface
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name given to the interface
+          required: true
+          type: string
+        - name: vlan-interface
+          in: path
+          description: String that identifies the interface
+          required: true
+          type: string
+        - name: l3-interface-ipv4-address
+          in: path
+          description: IP address
+          required: true
+          type: string
+        - name: resource-version
+          in: query
+          description: resource-version for concurrency
+          required: true
+          type: string
+  /network/generic-vnfs/generic-vnf/{vnf-id}/lag-interfaces/lag-interface/{interface-name}/l-interfaces/l-interface/{interface-name}/vlans/vlan/{vlan-interface}/l3-interface-ipv6-address-list/{l3-interface-ipv6-address}/relationship-list/relationship:
+    put:
+      tags:
+        - Network
+      summary: see node definition for valid relationships
+      operationId: createOrUpdateNetworkGenericVnfsGenericVnfLagInterfacesLagInterfaceLInterfacesLInterfaceVlansVlanL3InterfaceIpv6AddressListRelationshipListRelationship
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: vnf-id
+          in: path
+          description: Unique id of VNF.  This is unique across the graph.
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name that identifies the link aggregate interface
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name given to the interface
+          required: true
+          type: string
+        - name: vlan-interface
+          in: path
+          description: String that identifies the interface
+          required: true
+          type: string
+        - name: l3-interface-ipv6-address
+          in: path
+          description: IP address
+          required: true
+          type: string
+        - name: body
+          in: body
+          description: relationship object that needs to be created or updated
+          required: true
+          schema:
+            $ref: "#/definitions/relationship"
+    delete:
+      tags:
+        - Network
+      summary: delete an existing relationship
+      description: delete an existing relationship
+      operationId: deleteNetworkGenericVnfsGenericVnfLagInterfacesLagInterfaceLInterfacesLInterfaceVlansVlanL3InterfaceIpv6AddressListRelationshipListRelationship
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: vnf-id
+          in: path
+          description: Unique id of VNF.  This is unique across the graph.
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name that identifies the link aggregate interface
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name given to the interface
+          required: true
+          type: string
+        - name: vlan-interface
+          in: path
+          description: String that identifies the interface
+          required: true
+          type: string
+        - name: l3-interface-ipv6-address
+          in: path
+          description: IP address
+          required: true
+          type: string
+  /network/generic-vnfs/generic-vnf/{vnf-id}/lag-interfaces/lag-interface/{interface-name}/l-interfaces/l-interface/{interface-name}/vlans/vlan/{vlan-interface}/l3-interface-ipv6-address-list/{l3-interface-ipv6-address}:
+    get:
+      tags:
+        - Network
+      summary: returns l3-interface-ipv6-address-list
+      description: returns l3-interface-ipv6-address-list
+      operationId: getNetworkGenericVnfsGenericVnfLagInterfacesLagInterfaceLInterfacesLInterfaceVlansVlanL3InterfaceIpv6AddressList
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "200":
+          description: successful operation
+          schema:
+              $ref: "#/definitions/l3-interface-ipv6-address-list"
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: vnf-id
+          in: path
+          description: Unique id of VNF.  This is unique across the graph.
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name that identifies the link aggregate interface
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name given to the interface
+          required: true
+          type: string
+        - name: vlan-interface
+          in: path
+          description: String that identifies the interface
+          required: true
+          type: string
+        - name: l3-interface-ipv6-address
+          in: path
+          description: IP address
+          required: true
+          type: string
+        - name: vnf-name
+          in: query
+          description: Name of VNF.
+          required: false
+          type: string
+        - name: vnf-name2
+          in: query
+          description: Alternate name of VNF.
+          required: false
+          type: string
+        - name: vnf-type
+          in: query
+          description: String capturing type of vnf, that was intended to identify the ASDC resource.  This field has been overloaded in service-specific ways and clients should expect changes to occur in the future to this field as ECOMP matures.
+          required: false
+          type: string
+        - name: service-id
+          in: query
+          description: Unique identifier of service, does not necessarily map to ASDC service models.  SOON TO BE DEPRECATED
+          required: false
+          type: string
+        - name: regional-resource-zone
+          in: query
+          description: Regional way of organizing pservers, source of truth should define values
+          required: false
+          type: string
+        - name: prov-status
+          in: query
+          description: Trigger for operational monitoring of this resource by Service Assurance systems.
+          required: false
+          type: string
+        - name: heat-stack-id
+          in: query
+          description: Heat stack id corresponding to this instance, managed by MSO
+          required: false
+          type: string
+        - name: in-maint
+          in: query
+          required: false
+          type: boolean
+        - name: is-closed-loop-disabled
+          in: query
+          required: false
+          type: boolean
+        - name: model-invariant-id
+          in: query
+          description: the ASDC model id for this resource or service model.
+          required: false
+          type: string
+        - name: model-version-id
+          in: query
+          description: the ASDC model version for this resource or service model.
+          required: false
+          type: string
+        - name: widget-model-id
+          in: query
+          description: the ASDC data dictionary widget model. This maps directly to the A&AI widget.
+          required: false
+          type: string
+        - name: widget-model-version
+          in: query
+          description: the ASDC data dictionary version of the widget model.This maps directly to the A&AI version of the widget.
+          required: false
+          type: string
+        - name: nf-type
+          in: query
+          description: Generic description of the type of NF
+          required: false
+          type: string
+        - name: nf-function
+          in: query
+          description: English description of Network function that the specific VNF deployment is providing
+          required: false
+          type: string
+        - name: nf-role
+          in: query
+          description: role in the network that this model will be providing
+          required: false
+          type: string
+        - name: nf-naming-code
+          in: query
+          description: string assigned to this model used for naming purposes
+          required: false
+          type: string
+        - name: interface-id
+          in: query
+          description: ID of interface
+          required: false
+          type: string
+        - name: interface-role
+          in: query
+          description: Role assigned to this Interface, should use values as defined in ECOMP Yang models.
+          required: false
+          type: string
+        - name: interface-id
+          in: query
+          description: ID of interface
+          required: false
+          type: string
+        - name: macaddr
+          in: query
+          description: MAC address for the interface
+          required: false
+          type: string
+        - name: network-name
+          in: query
+          description: Name of the network
+          required: false
+          type: string
+        - name: vlan-id-inner
+          in: query
+          description: Inner VLAN tag
+          required: false
+          type: integer
+          format: int64
+        - name: vpn-key
+          in: query
+          description: This indicates the customers VPN ID associated with this vlan
+          required: false
+          type: string
+        - name: vlan-id-inner
+          in: query
+          description: Inner VLAN tag
+          required: false
+          type: integer
+          format: int64
+        - name: neutron-network-id
+          in: query
+          description: Neutron network id of the interface that address belongs to
+          required: false
+          type: string
+        - name: neutron-subnet-id
+          in: query
+          description: Neutron id of subnet that address belongs to
+          required: false
+          type: string
+    put:
+      tags:
+        - Network
+      summary: create or update an existing l3-interface-ipv6-address-list
+      description: create or update an existing l3-interface-ipv6-address-list
+      operationId: createOrUpdateNetworkGenericVnfsGenericVnfLagInterfacesLagInterfaceLInterfacesLInterfaceVlansVlanL3InterfaceIpv6AddressList
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: vnf-id
+          in: path
+          description: Unique id of VNF.  This is unique across the graph.
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name that identifies the link aggregate interface
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name given to the interface
+          required: true
+          type: string
+        - name: vlan-interface
+          in: path
+          description: String that identifies the interface
+          required: true
+          type: string
+        - name: l3-interface-ipv6-address
+          in: path
+          description: IP address
+          required: true
+          type: string
+        - name: body
+          in: body
+          description: l3-interface-ipv6-address-list object that needs to be created or updated
+          required: true
+          schema:
+            $ref: "#/definitions/l3-interface-ipv6-address-list"
+    delete:
+      tags:
+        - Network
+      summary: delete an existing l3-interface-ipv6-address-list
+      description: delete an existing l3-interface-ipv6-address-list
+      operationId: deleteNetworkGenericVnfsGenericVnfLagInterfacesLagInterfaceLInterfacesLInterfaceVlansVlanL3InterfaceIpv6AddressList
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: vnf-id
+          in: path
+          description: Unique id of VNF.  This is unique across the graph.
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name that identifies the link aggregate interface
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name given to the interface
+          required: true
+          type: string
+        - name: vlan-interface
+          in: path
+          description: String that identifies the interface
+          required: true
+          type: string
+        - name: l3-interface-ipv6-address
+          in: path
+          description: IP address
+          required: true
+          type: string
+        - name: resource-version
+          in: query
+          description: resource-version for concurrency
+          required: true
+          type: string
+  /network/generic-vnfs/generic-vnf/{vnf-id}/lag-interfaces/lag-interface/{interface-name}/l-interfaces/l-interface/{interface-name}/vlans/vlan/{vlan-interface}:
+    get:
+      tags:
+        - Network
+      summary: returns vlan
+      description: returns vlan
+      operationId: getNetworkGenericVnfsGenericVnfLagInterfacesLagInterfaceLInterfacesLInterfaceVlansVlan
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "200":
+          description: successful operation
+          schema:
+              $ref: "#/definitions/vlan"
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: vnf-id
+          in: path
+          description: Unique id of VNF.  This is unique across the graph.
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name that identifies the link aggregate interface
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name given to the interface
+          required: true
+          type: string
+        - name: vlan-interface
+          in: path
+          description: String that identifies the interface
+          required: true
+          type: string
+        - name: vnf-name
+          in: query
+          description: Name of VNF.
+          required: false
+          type: string
+        - name: vnf-name2
+          in: query
+          description: Alternate name of VNF.
+          required: false
+          type: string
+        - name: vnf-type
+          in: query
+          description: String capturing type of vnf, that was intended to identify the ASDC resource.  This field has been overloaded in service-specific ways and clients should expect changes to occur in the future to this field as ECOMP matures.
+          required: false
+          type: string
+        - name: service-id
+          in: query
+          description: Unique identifier of service, does not necessarily map to ASDC service models.  SOON TO BE DEPRECATED
+          required: false
+          type: string
+        - name: regional-resource-zone
+          in: query
+          description: Regional way of organizing pservers, source of truth should define values
+          required: false
+          type: string
+        - name: prov-status
+          in: query
+          description: Trigger for operational monitoring of this resource by Service Assurance systems.
+          required: false
+          type: string
+        - name: heat-stack-id
+          in: query
+          description: Heat stack id corresponding to this instance, managed by MSO
+          required: false
+          type: string
+        - name: in-maint
+          in: query
+          required: false
+          type: boolean
+        - name: is-closed-loop-disabled
+          in: query
+          required: false
+          type: boolean
+        - name: model-invariant-id
+          in: query
+          description: the ASDC model id for this resource or service model.
+          required: false
+          type: string
+        - name: model-version-id
+          in: query
+          description: the ASDC model version for this resource or service model.
+          required: false
+          type: string
+        - name: widget-model-id
+          in: query
+          description: the ASDC data dictionary widget model. This maps directly to the A&AI widget.
+          required: false
+          type: string
+        - name: widget-model-version
+          in: query
+          description: the ASDC data dictionary version of the widget model.This maps directly to the A&AI version of the widget.
+          required: false
+          type: string
+        - name: nf-type
+          in: query
+          description: Generic description of the type of NF
+          required: false
+          type: string
+        - name: nf-function
+          in: query
+          description: English description of Network function that the specific VNF deployment is providing
+          required: false
+          type: string
+        - name: nf-role
+          in: query
+          description: role in the network that this model will be providing
+          required: false
+          type: string
+        - name: nf-naming-code
+          in: query
+          description: string assigned to this model used for naming purposes
+          required: false
+          type: string
+        - name: interface-id
+          in: query
+          description: ID of interface
+          required: false
+          type: string
+        - name: interface-role
+          in: query
+          description: Role assigned to this Interface, should use values as defined in ECOMP Yang models.
+          required: false
+          type: string
+        - name: interface-id
+          in: query
+          description: ID of interface
+          required: false
+          type: string
+        - name: macaddr
+          in: query
+          description: MAC address for the interface
+          required: false
+          type: string
+        - name: network-name
+          in: query
+          description: Name of the network
+          required: false
+          type: string
+        - name: vlan-id-inner
+          in: query
+          description: Inner VLAN tag
+          required: false
+          type: integer
+          format: int64
+        - name: vpn-key
+          in: query
+          description: This indicates the customers VPN ID associated with this vlan
+          required: false
+          type: string
+    put:
+      tags:
+        - Network
+      summary: create or update an existing vlan
+      description: create or update an existing vlan
+      operationId: createOrUpdateNetworkGenericVnfsGenericVnfLagInterfacesLagInterfaceLInterfacesLInterfaceVlansVlan
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: vnf-id
+          in: path
+          description: Unique id of VNF.  This is unique across the graph.
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name that identifies the link aggregate interface
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name given to the interface
+          required: true
+          type: string
+        - name: vlan-interface
+          in: path
+          description: String that identifies the interface
+          required: true
+          type: string
+        - name: body
+          in: body
+          description: vlan object that needs to be created or updated
+          required: true
+          schema:
+            $ref: "#/definitions/vlan"
+    delete:
+      tags:
+        - Network
+      summary: delete an existing vlan
+      description: delete an existing vlan
+      operationId: deleteNetworkGenericVnfsGenericVnfLagInterfacesLagInterfaceLInterfacesLInterfaceVlansVlan
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: vnf-id
+          in: path
+          description: Unique id of VNF.  This is unique across the graph.
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name that identifies the link aggregate interface
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name given to the interface
+          required: true
+          type: string
+        - name: vlan-interface
+          in: path
+          description: String that identifies the interface
+          required: true
+          type: string
+        - name: resource-version
+          in: query
+          description: resource-version for concurrency
+          required: true
+          type: string
+  /network/generic-vnfs/generic-vnf/{vnf-id}/lag-interfaces/lag-interface/{interface-name}/l-interfaces/l-interface/{interface-name}/vlans:
+    get:
+      tags:
+        - Network
+      summary: returns vlans
+      description: returns vlans
+      operationId: getNetworkGenericVnfsGenericVnfLagInterfacesLagInterfaceLInterfacesLInterfaceVlans
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "200":
+          description: successful operation
+          schema:
+              $ref: "#/definitions/vlans"
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: vnf-id
+          in: path
+          description: Unique id of VNF.  This is unique across the graph.
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name that identifies the link aggregate interface
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name given to the interface
+          required: true
+          type: string
+        - name: vnf-name
+          in: query
+          description: Name of VNF.
+          required: false
+          type: string
+        - name: vnf-name2
+          in: query
+          description: Alternate name of VNF.
+          required: false
+          type: string
+        - name: vnf-type
+          in: query
+          description: String capturing type of vnf, that was intended to identify the ASDC resource.  This field has been overloaded in service-specific ways and clients should expect changes to occur in the future to this field as ECOMP matures.
+          required: false
+          type: string
+        - name: service-id
+          in: query
+          description: Unique identifier of service, does not necessarily map to ASDC service models.  SOON TO BE DEPRECATED
+          required: false
+          type: string
+        - name: regional-resource-zone
+          in: query
+          description: Regional way of organizing pservers, source of truth should define values
+          required: false
+          type: string
+        - name: prov-status
+          in: query
+          description: Trigger for operational monitoring of this resource by Service Assurance systems.
+          required: false
+          type: string
+        - name: heat-stack-id
+          in: query
+          description: Heat stack id corresponding to this instance, managed by MSO
+          required: false
+          type: string
+        - name: in-maint
+          in: query
+          required: false
+          type: boolean
+        - name: is-closed-loop-disabled
+          in: query
+          required: false
+          type: boolean
+        - name: model-invariant-id
+          in: query
+          description: the ASDC model id for this resource or service model.
+          required: false
+          type: string
+        - name: model-version-id
+          in: query
+          description: the ASDC model version for this resource or service model.
+          required: false
+          type: string
+        - name: widget-model-id
+          in: query
+          description: the ASDC data dictionary widget model. This maps directly to the A&AI widget.
+          required: false
+          type: string
+        - name: widget-model-version
+          in: query
+          description: the ASDC data dictionary version of the widget model.This maps directly to the A&AI version of the widget.
+          required: false
+          type: string
+        - name: nf-type
+          in: query
+          description: Generic description of the type of NF
+          required: false
+          type: string
+        - name: nf-function
+          in: query
+          description: English description of Network function that the specific VNF deployment is providing
+          required: false
+          type: string
+        - name: nf-role
+          in: query
+          description: role in the network that this model will be providing
+          required: false
+          type: string
+        - name: nf-naming-code
+          in: query
+          description: string assigned to this model used for naming purposes
+          required: false
+          type: string
+        - name: interface-id
+          in: query
+          description: ID of interface
+          required: false
+          type: string
+        - name: interface-role
+          in: query
+          description: Role assigned to this Interface, should use values as defined in ECOMP Yang models.
+          required: false
+          type: string
+        - name: interface-id
+          in: query
+          description: ID of interface
+          required: false
+          type: string
+        - name: macaddr
+          in: query
+          description: MAC address for the interface
+          required: false
+          type: string
+        - name: network-name
+          in: query
+          description: Name of the network
+          required: false
+          type: string
+  /network/generic-vnfs/generic-vnf/{vnf-id}/lag-interfaces/lag-interface/{interface-name}/l-interfaces/l-interface/{interface-name}/sriov-vfs/sriov-vf/{pci-id}/relationship-list/relationship:
+    put:
+      tags:
+        - Network
+      summary: see node definition for valid relationships
+      operationId: createOrUpdateNetworkGenericVnfsGenericVnfLagInterfacesLagInterfaceLInterfacesLInterfaceSriovVfsSriovVfRelationshipListRelationship
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: vnf-id
+          in: path
+          description: Unique id of VNF.  This is unique across the graph.
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name that identifies the link aggregate interface
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name given to the interface
+          required: true
+          type: string
+        - name: pci-id
+          in: path
+          description: PCI ID used to identify the sriov-vf
+          required: true
+          type: string
+        - name: body
+          in: body
+          description: relationship object that needs to be created or updated
+          required: true
+          schema:
+            $ref: "#/definitions/relationship"
+    delete:
+      tags:
+        - Network
+      summary: delete an existing relationship
+      description: delete an existing relationship
+      operationId: deleteNetworkGenericVnfsGenericVnfLagInterfacesLagInterfaceLInterfacesLInterfaceSriovVfsSriovVfRelationshipListRelationship
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: vnf-id
+          in: path
+          description: Unique id of VNF.  This is unique across the graph.
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name that identifies the link aggregate interface
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name given to the interface
+          required: true
+          type: string
+        - name: pci-id
+          in: path
+          description: PCI ID used to identify the sriov-vf
+          required: true
+          type: string
+  /network/generic-vnfs/generic-vnf/{vnf-id}/lag-interfaces/lag-interface/{interface-name}/l-interfaces/l-interface/{interface-name}/sriov-vfs/sriov-vf/{pci-id}:
+    get:
+      tags:
+        - Network
+      summary: returns sriov-vf
+      description: returns sriov-vf
+      operationId: getNetworkGenericVnfsGenericVnfLagInterfacesLagInterfaceLInterfacesLInterfaceSriovVfsSriovVf
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "200":
+          description: successful operation
+          schema:
+              $ref: "#/definitions/sriov-vf"
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: vnf-id
+          in: path
+          description: Unique id of VNF.  This is unique across the graph.
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name that identifies the link aggregate interface
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name given to the interface
+          required: true
+          type: string
+        - name: pci-id
+          in: path
+          description: PCI ID used to identify the sriov-vf
+          required: true
+          type: string
+        - name: vnf-name
+          in: query
+          description: Name of VNF.
+          required: false
+          type: string
+        - name: vnf-name2
+          in: query
+          description: Alternate name of VNF.
+          required: false
+          type: string
+        - name: vnf-type
+          in: query
+          description: String capturing type of vnf, that was intended to identify the ASDC resource.  This field has been overloaded in service-specific ways and clients should expect changes to occur in the future to this field as ECOMP matures.
+          required: false
+          type: string
+        - name: service-id
+          in: query
+          description: Unique identifier of service, does not necessarily map to ASDC service models.  SOON TO BE DEPRECATED
+          required: false
+          type: string
+        - name: regional-resource-zone
+          in: query
+          description: Regional way of organizing pservers, source of truth should define values
+          required: false
+          type: string
+        - name: prov-status
+          in: query
+          description: Trigger for operational monitoring of this resource by Service Assurance systems.
+          required: false
+          type: string
+        - name: heat-stack-id
+          in: query
+          description: Heat stack id corresponding to this instance, managed by MSO
+          required: false
+          type: string
+        - name: in-maint
+          in: query
+          required: false
+          type: boolean
+        - name: is-closed-loop-disabled
+          in: query
+          required: false
+          type: boolean
+        - name: model-invariant-id
+          in: query
+          description: the ASDC model id for this resource or service model.
+          required: false
+          type: string
+        - name: model-version-id
+          in: query
+          description: the ASDC model version for this resource or service model.
+          required: false
+          type: string
+        - name: widget-model-id
+          in: query
+          description: the ASDC data dictionary widget model. This maps directly to the A&AI widget.
+          required: false
+          type: string
+        - name: widget-model-version
+          in: query
+          description: the ASDC data dictionary version of the widget model.This maps directly to the A&AI version of the widget.
+          required: false
+          type: string
+        - name: nf-type
+          in: query
+          description: Generic description of the type of NF
+          required: false
+          type: string
+        - name: nf-function
+          in: query
+          description: English description of Network function that the specific VNF deployment is providing
+          required: false
+          type: string
+        - name: nf-role
+          in: query
+          description: role in the network that this model will be providing
+          required: false
+          type: string
+        - name: nf-naming-code
+          in: query
+          description: string assigned to this model used for naming purposes
+          required: false
+          type: string
+        - name: interface-id
+          in: query
+          description: ID of interface
+          required: false
+          type: string
+        - name: interface-role
+          in: query
+          description: Role assigned to this Interface, should use values as defined in ECOMP Yang models.
+          required: false
+          type: string
+        - name: interface-id
+          in: query
+          description: ID of interface
+          required: false
+          type: string
+        - name: macaddr
+          in: query
+          description: MAC address for the interface
+          required: false
+          type: string
+        - name: network-name
+          in: query
+          description: Name of the network
+          required: false
+          type: string
+        - name: vf-vlan-filter
+          in: query
+          description: This metadata provides option to specify list of VLAN filters applied on VF to pass the traffic to VM.
+          required: false
+          type: string
+        - name: vf-mac-filter
+          in: query
+          description: When MAC filters are specified, VF-agent service configures VFs to do MAC level filtering before the traffic is passed to VM.
+          required: false
+          type: string
+        - name: vf-vlan-strip
+          in: query
+          description: When this field is set to true, VF will configured to strip the outer TAG before the traffic is passed to VM.
+          required: false
+          type: boolean
+        - name: neutron-network-id
+          in: query
+          description: Neutron network id of the interface
+          required: false
+          type: string
+    put:
+      tags:
+        - Network
+      summary: create or update an existing sriov-vf
+      description: create or update an existing sriov-vf
+      operationId: createOrUpdateNetworkGenericVnfsGenericVnfLagInterfacesLagInterfaceLInterfacesLInterfaceSriovVfsSriovVf
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: vnf-id
+          in: path
+          description: Unique id of VNF.  This is unique across the graph.
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name that identifies the link aggregate interface
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name given to the interface
+          required: true
+          type: string
+        - name: pci-id
+          in: path
+          description: PCI ID used to identify the sriov-vf
+          required: true
+          type: string
+        - name: body
+          in: body
+          description: sriov-vf object that needs to be created or updated
+          required: true
+          schema:
+            $ref: "#/definitions/sriov-vf"
+    delete:
+      tags:
+        - Network
+      summary: delete an existing sriov-vf
+      description: delete an existing sriov-vf
+      operationId: deleteNetworkGenericVnfsGenericVnfLagInterfacesLagInterfaceLInterfacesLInterfaceSriovVfsSriovVf
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: vnf-id
+          in: path
+          description: Unique id of VNF.  This is unique across the graph.
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name that identifies the link aggregate interface
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name given to the interface
+          required: true
+          type: string
+        - name: pci-id
+          in: path
+          description: PCI ID used to identify the sriov-vf
+          required: true
+          type: string
+        - name: resource-version
+          in: query
+          description: resource-version for concurrency
+          required: true
+          type: string
+  /network/generic-vnfs/generic-vnf/{vnf-id}/lag-interfaces/lag-interface/{interface-name}/l-interfaces/l-interface/{interface-name}/sriov-vfs:
+    get:
+      tags:
+        - Network
+      summary: returns sriov-vfs
+      description: returns sriov-vfs
+      operationId: getNetworkGenericVnfsGenericVnfLagInterfacesLagInterfaceLInterfacesLInterfaceSriovVfs
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "200":
+          description: successful operation
+          schema:
+              $ref: "#/definitions/sriov-vfs"
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: vnf-id
+          in: path
+          description: Unique id of VNF.  This is unique across the graph.
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name that identifies the link aggregate interface
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name given to the interface
+          required: true
+          type: string
+        - name: vnf-name
+          in: query
+          description: Name of VNF.
+          required: false
+          type: string
+        - name: vnf-name2
+          in: query
+          description: Alternate name of VNF.
+          required: false
+          type: string
+        - name: vnf-type
+          in: query
+          description: String capturing type of vnf, that was intended to identify the ASDC resource.  This field has been overloaded in service-specific ways and clients should expect changes to occur in the future to this field as ECOMP matures.
+          required: false
+          type: string
+        - name: service-id
+          in: query
+          description: Unique identifier of service, does not necessarily map to ASDC service models.  SOON TO BE DEPRECATED
+          required: false
+          type: string
+        - name: regional-resource-zone
+          in: query
+          description: Regional way of organizing pservers, source of truth should define values
+          required: false
+          type: string
+        - name: prov-status
+          in: query
+          description: Trigger for operational monitoring of this resource by Service Assurance systems.
+          required: false
+          type: string
+        - name: heat-stack-id
+          in: query
+          description: Heat stack id corresponding to this instance, managed by MSO
+          required: false
+          type: string
+        - name: in-maint
+          in: query
+          required: false
+          type: boolean
+        - name: is-closed-loop-disabled
+          in: query
+          required: false
+          type: boolean
+        - name: model-invariant-id
+          in: query
+          description: the ASDC model id for this resource or service model.
+          required: false
+          type: string
+        - name: model-version-id
+          in: query
+          description: the ASDC model version for this resource or service model.
+          required: false
+          type: string
+        - name: widget-model-id
+          in: query
+          description: the ASDC data dictionary widget model. This maps directly to the A&AI widget.
+          required: false
+          type: string
+        - name: widget-model-version
+          in: query
+          description: the ASDC data dictionary version of the widget model.This maps directly to the A&AI version of the widget.
+          required: false
+          type: string
+        - name: nf-type
+          in: query
+          description: Generic description of the type of NF
+          required: false
+          type: string
+        - name: nf-function
+          in: query
+          description: English description of Network function that the specific VNF deployment is providing
+          required: false
+          type: string
+        - name: nf-role
+          in: query
+          description: role in the network that this model will be providing
+          required: false
+          type: string
+        - name: nf-naming-code
+          in: query
+          description: string assigned to this model used for naming purposes
+          required: false
+          type: string
+        - name: interface-id
+          in: query
+          description: ID of interface
+          required: false
+          type: string
+        - name: interface-role
+          in: query
+          description: Role assigned to this Interface, should use values as defined in ECOMP Yang models.
+          required: false
+          type: string
+        - name: interface-id
+          in: query
+          description: ID of interface
+          required: false
+          type: string
+        - name: macaddr
+          in: query
+          description: MAC address for the interface
+          required: false
+          type: string
+        - name: network-name
+          in: query
+          description: Name of the network
+          required: false
+          type: string
+  /network/generic-vnfs/generic-vnf/{vnf-id}/lag-interfaces/lag-interface/{interface-name}/l-interfaces/l-interface/{interface-name}/relationship-list/relationship:
+    put:
+      tags:
+        - Network
+      summary: see node definition for valid relationships
+      operationId: createOrUpdateNetworkGenericVnfsGenericVnfLagInterfacesLagInterfaceLInterfacesLInterfaceRelationshipListRelationship
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: vnf-id
+          in: path
+          description: Unique id of VNF.  This is unique across the graph.
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name that identifies the link aggregate interface
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name given to the interface
+          required: true
+          type: string
+        - name: body
+          in: body
+          description: relationship object that needs to be created or updated
+          required: true
+          schema:
+            $ref: "#/definitions/relationship"
+    delete:
+      tags:
+        - Network
+      summary: delete an existing relationship
+      description: delete an existing relationship
+      operationId: deleteNetworkGenericVnfsGenericVnfLagInterfacesLagInterfaceLInterfacesLInterfaceRelationshipListRelationship
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: vnf-id
+          in: path
+          description: Unique id of VNF.  This is unique across the graph.
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name that identifies the link aggregate interface
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name given to the interface
+          required: true
+          type: string
+  /network/generic-vnfs/generic-vnf/{vnf-id}/lag-interfaces/lag-interface/{interface-name}/l-interfaces/l-interface/{interface-name}/l3-interface-ipv4-address-list/{l3-interface-ipv4-address}/relationship-list/relationship:
+    put:
+      tags:
+        - Network
+      summary: see node definition for valid relationships
+      operationId: createOrUpdateNetworkGenericVnfsGenericVnfLagInterfacesLagInterfaceLInterfacesLInterfaceL3InterfaceIpv4AddressListRelationshipListRelationship
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: vnf-id
+          in: path
+          description: Unique id of VNF.  This is unique across the graph.
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name that identifies the link aggregate interface
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name given to the interface
+          required: true
+          type: string
+        - name: l3-interface-ipv4-address
+          in: path
+          description: IP address
+          required: true
+          type: string
+        - name: body
+          in: body
+          description: relationship object that needs to be created or updated
+          required: true
+          schema:
+            $ref: "#/definitions/relationship"
+    delete:
+      tags:
+        - Network
+      summary: delete an existing relationship
+      description: delete an existing relationship
+      operationId: deleteNetworkGenericVnfsGenericVnfLagInterfacesLagInterfaceLInterfacesLInterfaceL3InterfaceIpv4AddressListRelationshipListRelationship
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: vnf-id
+          in: path
+          description: Unique id of VNF.  This is unique across the graph.
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name that identifies the link aggregate interface
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name given to the interface
+          required: true
+          type: string
+        - name: l3-interface-ipv4-address
+          in: path
+          description: IP address
+          required: true
+          type: string
+  /network/generic-vnfs/generic-vnf/{vnf-id}/lag-interfaces/lag-interface/{interface-name}/l-interfaces/l-interface/{interface-name}/l3-interface-ipv4-address-list/{l3-interface-ipv4-address}:
+    get:
+      tags:
+        - Network
+      summary: returns l3-interface-ipv4-address-list
+      description: returns l3-interface-ipv4-address-list
+      operationId: getNetworkGenericVnfsGenericVnfLagInterfacesLagInterfaceLInterfacesLInterfaceL3InterfaceIpv4AddressList
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "200":
+          description: successful operation
+          schema:
+              $ref: "#/definitions/l3-interface-ipv4-address-list"
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: vnf-id
+          in: path
+          description: Unique id of VNF.  This is unique across the graph.
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name that identifies the link aggregate interface
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name given to the interface
+          required: true
+          type: string
+        - name: l3-interface-ipv4-address
+          in: path
+          description: IP address
+          required: true
+          type: string
+        - name: vnf-name
+          in: query
+          description: Name of VNF.
+          required: false
+          type: string
+        - name: vnf-name2
+          in: query
+          description: Alternate name of VNF.
+          required: false
+          type: string
+        - name: vnf-type
+          in: query
+          description: String capturing type of vnf, that was intended to identify the ASDC resource.  This field has been overloaded in service-specific ways and clients should expect changes to occur in the future to this field as ECOMP matures.
+          required: false
+          type: string
+        - name: service-id
+          in: query
+          description: Unique identifier of service, does not necessarily map to ASDC service models.  SOON TO BE DEPRECATED
+          required: false
+          type: string
+        - name: regional-resource-zone
+          in: query
+          description: Regional way of organizing pservers, source of truth should define values
+          required: false
+          type: string
+        - name: prov-status
+          in: query
+          description: Trigger for operational monitoring of this resource by Service Assurance systems.
+          required: false
+          type: string
+        - name: heat-stack-id
+          in: query
+          description: Heat stack id corresponding to this instance, managed by MSO
+          required: false
+          type: string
+        - name: in-maint
+          in: query
+          required: false
+          type: boolean
+        - name: is-closed-loop-disabled
+          in: query
+          required: false
+          type: boolean
+        - name: model-invariant-id
+          in: query
+          description: the ASDC model id for this resource or service model.
+          required: false
+          type: string
+        - name: model-version-id
+          in: query
+          description: the ASDC model version for this resource or service model.
+          required: false
+          type: string
+        - name: widget-model-id
+          in: query
+          description: the ASDC data dictionary widget model. This maps directly to the A&AI widget.
+          required: false
+          type: string
+        - name: widget-model-version
+          in: query
+          description: the ASDC data dictionary version of the widget model.This maps directly to the A&AI version of the widget.
+          required: false
+          type: string
+        - name: nf-type
+          in: query
+          description: Generic description of the type of NF
+          required: false
+          type: string
+        - name: nf-function
+          in: query
+          description: English description of Network function that the specific VNF deployment is providing
+          required: false
+          type: string
+        - name: nf-role
+          in: query
+          description: role in the network that this model will be providing
+          required: false
+          type: string
+        - name: nf-naming-code
+          in: query
+          description: string assigned to this model used for naming purposes
+          required: false
+          type: string
+        - name: interface-id
+          in: query
+          description: ID of interface
+          required: false
+          type: string
+        - name: interface-role
+          in: query
+          description: Role assigned to this Interface, should use values as defined in ECOMP Yang models.
+          required: false
+          type: string
+        - name: interface-id
+          in: query
+          description: ID of interface
+          required: false
+          type: string
+        - name: macaddr
+          in: query
+          description: MAC address for the interface
+          required: false
+          type: string
+        - name: network-name
+          in: query
+          description: Name of the network
+          required: false
+          type: string
+        - name: vlan-id-inner
+          in: query
+          description: Inner VLAN tag
+          required: false
+          type: integer
+          format: int64
+        - name: neutron-network-id
+          in: query
+          description: Neutron network id of the interface that address belongs to
+          required: false
+          type: string
+        - name: neutron-subnet-id
+          in: query
+          description: Neutron id of subnet that address belongs to
+          required: false
+          type: string
+    put:
+      tags:
+        - Network
+      summary: create or update an existing l3-interface-ipv4-address-list
+      description: create or update an existing l3-interface-ipv4-address-list
+      operationId: createOrUpdateNetworkGenericVnfsGenericVnfLagInterfacesLagInterfaceLInterfacesLInterfaceL3InterfaceIpv4AddressList
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: vnf-id
+          in: path
+          description: Unique id of VNF.  This is unique across the graph.
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name that identifies the link aggregate interface
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name given to the interface
+          required: true
+          type: string
+        - name: l3-interface-ipv4-address
+          in: path
+          description: IP address
+          required: true
+          type: string
+        - name: body
+          in: body
+          description: l3-interface-ipv4-address-list object that needs to be created or updated
+          required: true
+          schema:
+            $ref: "#/definitions/l3-interface-ipv4-address-list"
+    delete:
+      tags:
+        - Network
+      summary: delete an existing l3-interface-ipv4-address-list
+      description: delete an existing l3-interface-ipv4-address-list
+      operationId: deleteNetworkGenericVnfsGenericVnfLagInterfacesLagInterfaceLInterfacesLInterfaceL3InterfaceIpv4AddressList
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: vnf-id
+          in: path
+          description: Unique id of VNF.  This is unique across the graph.
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name that identifies the link aggregate interface
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name given to the interface
+          required: true
+          type: string
+        - name: l3-interface-ipv4-address
+          in: path
+          description: IP address
+          required: true
+          type: string
+        - name: resource-version
+          in: query
+          description: resource-version for concurrency
+          required: true
+          type: string
+  /network/generic-vnfs/generic-vnf/{vnf-id}/lag-interfaces/lag-interface/{interface-name}/l-interfaces/l-interface/{interface-name}/l3-interface-ipv6-address-list/{l3-interface-ipv6-address}/relationship-list/relationship:
+    put:
+      tags:
+        - Network
+      summary: see node definition for valid relationships
+      operationId: createOrUpdateNetworkGenericVnfsGenericVnfLagInterfacesLagInterfaceLInterfacesLInterfaceL3InterfaceIpv6AddressListRelationshipListRelationship
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: vnf-id
+          in: path
+          description: Unique id of VNF.  This is unique across the graph.
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name that identifies the link aggregate interface
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name given to the interface
+          required: true
+          type: string
+        - name: l3-interface-ipv6-address
+          in: path
+          description: IP address
+          required: true
+          type: string
+        - name: body
+          in: body
+          description: relationship object that needs to be created or updated
+          required: true
+          schema:
+            $ref: "#/definitions/relationship"
+    delete:
+      tags:
+        - Network
+      summary: delete an existing relationship
+      description: delete an existing relationship
+      operationId: deleteNetworkGenericVnfsGenericVnfLagInterfacesLagInterfaceLInterfacesLInterfaceL3InterfaceIpv6AddressListRelationshipListRelationship
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: vnf-id
+          in: path
+          description: Unique id of VNF.  This is unique across the graph.
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name that identifies the link aggregate interface
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name given to the interface
+          required: true
+          type: string
+        - name: l3-interface-ipv6-address
+          in: path
+          description: IP address
+          required: true
+          type: string
+  /network/generic-vnfs/generic-vnf/{vnf-id}/lag-interfaces/lag-interface/{interface-name}/l-interfaces/l-interface/{interface-name}/l3-interface-ipv6-address-list/{l3-interface-ipv6-address}:
+    get:
+      tags:
+        - Network
+      summary: returns l3-interface-ipv6-address-list
+      description: returns l3-interface-ipv6-address-list
+      operationId: getNetworkGenericVnfsGenericVnfLagInterfacesLagInterfaceLInterfacesLInterfaceL3InterfaceIpv6AddressList
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "200":
+          description: successful operation
+          schema:
+              $ref: "#/definitions/l3-interface-ipv6-address-list"
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: vnf-id
+          in: path
+          description: Unique id of VNF.  This is unique across the graph.
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name that identifies the link aggregate interface
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name given to the interface
+          required: true
+          type: string
+        - name: l3-interface-ipv6-address
+          in: path
+          description: IP address
+          required: true
+          type: string
+        - name: vnf-name
+          in: query
+          description: Name of VNF.
+          required: false
+          type: string
+        - name: vnf-name2
+          in: query
+          description: Alternate name of VNF.
+          required: false
+          type: string
+        - name: vnf-type
+          in: query
+          description: String capturing type of vnf, that was intended to identify the ASDC resource.  This field has been overloaded in service-specific ways and clients should expect changes to occur in the future to this field as ECOMP matures.
+          required: false
+          type: string
+        - name: service-id
+          in: query
+          description: Unique identifier of service, does not necessarily map to ASDC service models.  SOON TO BE DEPRECATED
+          required: false
+          type: string
+        - name: regional-resource-zone
+          in: query
+          description: Regional way of organizing pservers, source of truth should define values
+          required: false
+          type: string
+        - name: prov-status
+          in: query
+          description: Trigger for operational monitoring of this resource by Service Assurance systems.
+          required: false
+          type: string
+        - name: heat-stack-id
+          in: query
+          description: Heat stack id corresponding to this instance, managed by MSO
+          required: false
+          type: string
+        - name: in-maint
+          in: query
+          required: false
+          type: boolean
+        - name: is-closed-loop-disabled
+          in: query
+          required: false
+          type: boolean
+        - name: model-invariant-id
+          in: query
+          description: the ASDC model id for this resource or service model.
+          required: false
+          type: string
+        - name: model-version-id
+          in: query
+          description: the ASDC model version for this resource or service model.
+          required: false
+          type: string
+        - name: widget-model-id
+          in: query
+          description: the ASDC data dictionary widget model. This maps directly to the A&AI widget.
+          required: false
+          type: string
+        - name: widget-model-version
+          in: query
+          description: the ASDC data dictionary version of the widget model.This maps directly to the A&AI version of the widget.
+          required: false
+          type: string
+        - name: nf-type
+          in: query
+          description: Generic description of the type of NF
+          required: false
+          type: string
+        - name: nf-function
+          in: query
+          description: English description of Network function that the specific VNF deployment is providing
+          required: false
+          type: string
+        - name: nf-role
+          in: query
+          description: role in the network that this model will be providing
+          required: false
+          type: string
+        - name: nf-naming-code
+          in: query
+          description: string assigned to this model used for naming purposes
+          required: false
+          type: string
+        - name: interface-id
+          in: query
+          description: ID of interface
+          required: false
+          type: string
+        - name: interface-role
+          in: query
+          description: Role assigned to this Interface, should use values as defined in ECOMP Yang models.
+          required: false
+          type: string
+        - name: interface-id
+          in: query
+          description: ID of interface
+          required: false
+          type: string
+        - name: macaddr
+          in: query
+          description: MAC address for the interface
+          required: false
+          type: string
+        - name: network-name
+          in: query
+          description: Name of the network
+          required: false
+          type: string
+        - name: vlan-id-inner
+          in: query
+          description: Inner VLAN tag
+          required: false
+          type: integer
+          format: int64
+        - name: neutron-network-id
+          in: query
+          description: Neutron network id of the interface that address belongs to
+          required: false
+          type: string
+        - name: neutron-subnet-id
+          in: query
+          description: Neutron id of subnet that address belongs to
+          required: false
+          type: string
+    put:
+      tags:
+        - Network
+      summary: create or update an existing l3-interface-ipv6-address-list
+      description: create or update an existing l3-interface-ipv6-address-list
+      operationId: createOrUpdateNetworkGenericVnfsGenericVnfLagInterfacesLagInterfaceLInterfacesLInterfaceL3InterfaceIpv6AddressList
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: vnf-id
+          in: path
+          description: Unique id of VNF.  This is unique across the graph.
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name that identifies the link aggregate interface
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name given to the interface
+          required: true
+          type: string
+        - name: l3-interface-ipv6-address
+          in: path
+          description: IP address
+          required: true
+          type: string
+        - name: body
+          in: body
+          description: l3-interface-ipv6-address-list object that needs to be created or updated
+          required: true
+          schema:
+            $ref: "#/definitions/l3-interface-ipv6-address-list"
+    delete:
+      tags:
+        - Network
+      summary: delete an existing l3-interface-ipv6-address-list
+      description: delete an existing l3-interface-ipv6-address-list
+      operationId: deleteNetworkGenericVnfsGenericVnfLagInterfacesLagInterfaceLInterfacesLInterfaceL3InterfaceIpv6AddressList
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: vnf-id
+          in: path
+          description: Unique id of VNF.  This is unique across the graph.
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name that identifies the link aggregate interface
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name given to the interface
+          required: true
+          type: string
+        - name: l3-interface-ipv6-address
+          in: path
+          description: IP address
+          required: true
+          type: string
+        - name: resource-version
+          in: query
+          description: resource-version for concurrency
+          required: true
+          type: string
+  /network/generic-vnfs/generic-vnf/{vnf-id}/lag-interfaces/lag-interface/{interface-name}/l-interfaces/l-interface/{interface-name}:
+    get:
+      tags:
+        - Network
+      summary: returns l-interface
+      description: returns l-interface
+      operationId: getNetworkGenericVnfsGenericVnfLagInterfacesLagInterfaceLInterfacesLInterface
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "200":
+          description: successful operation
+          schema:
+              $ref: "#/definitions/l-interface"
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: vnf-id
+          in: path
+          description: Unique id of VNF.  This is unique across the graph.
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name that identifies the link aggregate interface
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name given to the interface
+          required: true
+          type: string
+        - name: vnf-name
+          in: query
+          description: Name of VNF.
+          required: false
+          type: string
+        - name: vnf-name2
+          in: query
+          description: Alternate name of VNF.
+          required: false
+          type: string
+        - name: vnf-type
+          in: query
+          description: String capturing type of vnf, that was intended to identify the ASDC resource.  This field has been overloaded in service-specific ways and clients should expect changes to occur in the future to this field as ECOMP matures.
+          required: false
+          type: string
+        - name: service-id
+          in: query
+          description: Unique identifier of service, does not necessarily map to ASDC service models.  SOON TO BE DEPRECATED
+          required: false
+          type: string
+        - name: regional-resource-zone
+          in: query
+          description: Regional way of organizing pservers, source of truth should define values
+          required: false
+          type: string
+        - name: prov-status
+          in: query
+          description: Trigger for operational monitoring of this resource by Service Assurance systems.
+          required: false
+          type: string
+        - name: heat-stack-id
+          in: query
+          description: Heat stack id corresponding to this instance, managed by MSO
+          required: false
+          type: string
+        - name: in-maint
+          in: query
+          required: false
+          type: boolean
+        - name: is-closed-loop-disabled
+          in: query
+          required: false
+          type: boolean
+        - name: model-invariant-id
+          in: query
+          description: the ASDC model id for this resource or service model.
+          required: false
+          type: string
+        - name: model-version-id
+          in: query
+          description: the ASDC model version for this resource or service model.
+          required: false
+          type: string
+        - name: widget-model-id
+          in: query
+          description: the ASDC data dictionary widget model. This maps directly to the A&AI widget.
+          required: false
+          type: string
+        - name: widget-model-version
+          in: query
+          description: the ASDC data dictionary version of the widget model.This maps directly to the A&AI version of the widget.
+          required: false
+          type: string
+        - name: nf-type
+          in: query
+          description: Generic description of the type of NF
+          required: false
+          type: string
+        - name: nf-function
+          in: query
+          description: English description of Network function that the specific VNF deployment is providing
+          required: false
+          type: string
+        - name: nf-role
+          in: query
+          description: role in the network that this model will be providing
+          required: false
+          type: string
+        - name: nf-naming-code
+          in: query
+          description: string assigned to this model used for naming purposes
+          required: false
+          type: string
+        - name: interface-id
+          in: query
+          description: ID of interface
+          required: false
+          type: string
+        - name: interface-role
+          in: query
+          description: Role assigned to this Interface, should use values as defined in ECOMP Yang models.
+          required: false
+          type: string
+        - name: interface-id
+          in: query
+          description: ID of interface
+          required: false
+          type: string
+        - name: macaddr
+          in: query
+          description: MAC address for the interface
+          required: false
+          type: string
+        - name: network-name
+          in: query
+          description: Name of the network
+          required: false
+          type: string
+    put:
+      tags:
+        - Network
+      summary: create or update an existing l-interface
+      description: create or update an existing l-interface
+      operationId: createOrUpdateNetworkGenericVnfsGenericVnfLagInterfacesLagInterfaceLInterfacesLInterface
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: vnf-id
+          in: path
+          description: Unique id of VNF.  This is unique across the graph.
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name that identifies the link aggregate interface
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name given to the interface
+          required: true
+          type: string
+        - name: body
+          in: body
+          description: l-interface object that needs to be created or updated
+          required: true
+          schema:
+            $ref: "#/definitions/l-interface"
+    delete:
+      tags:
+        - Network
+      summary: delete an existing l-interface
+      description: delete an existing l-interface
+      operationId: deleteNetworkGenericVnfsGenericVnfLagInterfacesLagInterfaceLInterfacesLInterface
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: vnf-id
+          in: path
+          description: Unique id of VNF.  This is unique across the graph.
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name that identifies the link aggregate interface
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name given to the interface
+          required: true
+          type: string
+        - name: resource-version
+          in: query
+          description: resource-version for concurrency
+          required: true
+          type: string
+  /network/generic-vnfs/generic-vnf/{vnf-id}/lag-interfaces/lag-interface/{interface-name}/l-interfaces:
+    get:
+      tags:
+        - Network
+      summary: returns l-interfaces
+      description: returns l-interfaces
+      operationId: getNetworkGenericVnfsGenericVnfLagInterfacesLagInterfaceLInterfaces
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "200":
+          description: successful operation
+          schema:
+              $ref: "#/definitions/l-interfaces"
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: vnf-id
+          in: path
+          description: Unique id of VNF.  This is unique across the graph.
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name that identifies the link aggregate interface
+          required: true
+          type: string
+        - name: vnf-name
+          in: query
+          description: Name of VNF.
+          required: false
+          type: string
+        - name: vnf-name2
+          in: query
+          description: Alternate name of VNF.
+          required: false
+          type: string
+        - name: vnf-type
+          in: query
+          description: String capturing type of vnf, that was intended to identify the ASDC resource.  This field has been overloaded in service-specific ways and clients should expect changes to occur in the future to this field as ECOMP matures.
+          required: false
+          type: string
+        - name: service-id
+          in: query
+          description: Unique identifier of service, does not necessarily map to ASDC service models.  SOON TO BE DEPRECATED
+          required: false
+          type: string
+        - name: regional-resource-zone
+          in: query
+          description: Regional way of organizing pservers, source of truth should define values
+          required: false
+          type: string
+        - name: prov-status
+          in: query
+          description: Trigger for operational monitoring of this resource by Service Assurance systems.
+          required: false
+          type: string
+        - name: heat-stack-id
+          in: query
+          description: Heat stack id corresponding to this instance, managed by MSO
+          required: false
+          type: string
+        - name: in-maint
+          in: query
+          required: false
+          type: boolean
+        - name: is-closed-loop-disabled
+          in: query
+          required: false
+          type: boolean
+        - name: model-invariant-id
+          in: query
+          description: the ASDC model id for this resource or service model.
+          required: false
+          type: string
+        - name: model-version-id
+          in: query
+          description: the ASDC model version for this resource or service model.
+          required: false
+          type: string
+        - name: widget-model-id
+          in: query
+          description: the ASDC data dictionary widget model. This maps directly to the A&AI widget.
+          required: false
+          type: string
+        - name: widget-model-version
+          in: query
+          description: the ASDC data dictionary version of the widget model.This maps directly to the A&AI version of the widget.
+          required: false
+          type: string
+        - name: nf-type
+          in: query
+          description: Generic description of the type of NF
+          required: false
+          type: string
+        - name: nf-function
+          in: query
+          description: English description of Network function that the specific VNF deployment is providing
+          required: false
+          type: string
+        - name: nf-role
+          in: query
+          description: role in the network that this model will be providing
+          required: false
+          type: string
+        - name: nf-naming-code
+          in: query
+          description: string assigned to this model used for naming purposes
+          required: false
+          type: string
+        - name: interface-id
+          in: query
+          description: ID of interface
+          required: false
+          type: string
+        - name: interface-role
+          in: query
+          description: Role assigned to this Interface, should use values as defined in ECOMP Yang models.
+          required: false
+          type: string
+  /network/generic-vnfs/generic-vnf/{vnf-id}/lag-interfaces/lag-interface/{interface-name}:
+    get:
+      tags:
+        - Network
+      summary: returns lag-interface
+      description: returns lag-interface
+      operationId: getNetworkGenericVnfsGenericVnfLagInterfacesLagInterface
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "200":
+          description: successful operation
+          schema:
+              $ref: "#/definitions/lag-interface"
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: vnf-id
+          in: path
+          description: Unique id of VNF.  This is unique across the graph.
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name that identifies the link aggregate interface
+          required: true
+          type: string
+        - name: vnf-name
+          in: query
+          description: Name of VNF.
+          required: false
+          type: string
+        - name: vnf-name2
+          in: query
+          description: Alternate name of VNF.
+          required: false
+          type: string
+        - name: vnf-type
+          in: query
+          description: String capturing type of vnf, that was intended to identify the ASDC resource.  This field has been overloaded in service-specific ways and clients should expect changes to occur in the future to this field as ECOMP matures.
+          required: false
+          type: string
+        - name: service-id
+          in: query
+          description: Unique identifier of service, does not necessarily map to ASDC service models.  SOON TO BE DEPRECATED
+          required: false
+          type: string
+        - name: regional-resource-zone
+          in: query
+          description: Regional way of organizing pservers, source of truth should define values
+          required: false
+          type: string
+        - name: prov-status
+          in: query
+          description: Trigger for operational monitoring of this resource by Service Assurance systems.
+          required: false
+          type: string
+        - name: heat-stack-id
+          in: query
+          description: Heat stack id corresponding to this instance, managed by MSO
+          required: false
+          type: string
+        - name: in-maint
+          in: query
+          required: false
+          type: boolean
+        - name: is-closed-loop-disabled
+          in: query
+          required: false
+          type: boolean
+        - name: model-invariant-id
+          in: query
+          description: the ASDC model id for this resource or service model.
+          required: false
+          type: string
+        - name: model-version-id
+          in: query
+          description: the ASDC model version for this resource or service model.
+          required: false
+          type: string
+        - name: widget-model-id
+          in: query
+          description: the ASDC data dictionary widget model. This maps directly to the A&AI widget.
+          required: false
+          type: string
+        - name: widget-model-version
+          in: query
+          description: the ASDC data dictionary version of the widget model.This maps directly to the A&AI version of the widget.
+          required: false
+          type: string
+        - name: nf-type
+          in: query
+          description: Generic description of the type of NF
+          required: false
+          type: string
+        - name: nf-function
+          in: query
+          description: English description of Network function that the specific VNF deployment is providing
+          required: false
+          type: string
+        - name: nf-role
+          in: query
+          description: role in the network that this model will be providing
+          required: false
+          type: string
+        - name: nf-naming-code
+          in: query
+          description: string assigned to this model used for naming purposes
+          required: false
+          type: string
+        - name: interface-id
+          in: query
+          description: ID of interface
+          required: false
+          type: string
+        - name: interface-role
+          in: query
+          description: Role assigned to this Interface, should use values as defined in ECOMP Yang models.
+          required: false
+          type: string
+    put:
+      tags:
+        - Network
+      summary: create or update an existing lag-interface
+      description: create or update an existing lag-interface
+      operationId: createOrUpdateNetworkGenericVnfsGenericVnfLagInterfacesLagInterface
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: vnf-id
+          in: path
+          description: Unique id of VNF.  This is unique across the graph.
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name that identifies the link aggregate interface
+          required: true
+          type: string
+        - name: body
+          in: body
+          description: lag-interface object that needs to be created or updated
+          required: true
+          schema:
+            $ref: "#/definitions/lag-interface"
+    delete:
+      tags:
+        - Network
+      summary: delete an existing lag-interface
+      description: delete an existing lag-interface
+      operationId: deleteNetworkGenericVnfsGenericVnfLagInterfacesLagInterface
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: vnf-id
+          in: path
+          description: Unique id of VNF.  This is unique across the graph.
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name that identifies the link aggregate interface
+          required: true
+          type: string
+        - name: resource-version
+          in: query
+          description: resource-version for concurrency
+          required: true
+          type: string
+  /network/generic-vnfs/generic-vnf/{vnf-id}/lag-interfaces:
+    get:
+      tags:
+        - Network
+      summary: returns lag-interfaces
+      description: returns lag-interfaces
+      operationId: getNetworkGenericVnfsGenericVnfLagInterfaces
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "200":
+          description: successful operation
+          schema:
+              $ref: "#/definitions/lag-interfaces"
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: vnf-id
+          in: path
+          description: Unique id of VNF.  This is unique across the graph.
+          required: true
+          type: string
+        - name: vnf-name
+          in: query
+          description: Name of VNF.
+          required: false
+          type: string
+        - name: vnf-name2
+          in: query
+          description: Alternate name of VNF.
+          required: false
+          type: string
+        - name: vnf-type
+          in: query
+          description: String capturing type of vnf, that was intended to identify the ASDC resource.  This field has been overloaded in service-specific ways and clients should expect changes to occur in the future to this field as ECOMP matures.
+          required: false
+          type: string
+        - name: service-id
+          in: query
+          description: Unique identifier of service, does not necessarily map to ASDC service models.  SOON TO BE DEPRECATED
+          required: false
+          type: string
+        - name: regional-resource-zone
+          in: query
+          description: Regional way of organizing pservers, source of truth should define values
+          required: false
+          type: string
+        - name: prov-status
+          in: query
+          description: Trigger for operational monitoring of this resource by Service Assurance systems.
+          required: false
+          type: string
+        - name: heat-stack-id
+          in: query
+          description: Heat stack id corresponding to this instance, managed by MSO
+          required: false
+          type: string
+        - name: in-maint
+          in: query
+          required: false
+          type: boolean
+        - name: is-closed-loop-disabled
+          in: query
+          required: false
+          type: boolean
+        - name: model-invariant-id
+          in: query
+          description: the ASDC model id for this resource or service model.
+          required: false
+          type: string
+        - name: model-version-id
+          in: query
+          description: the ASDC model version for this resource or service model.
+          required: false
+          type: string
+        - name: widget-model-id
+          in: query
+          description: the ASDC data dictionary widget model. This maps directly to the A&AI widget.
+          required: false
+          type: string
+        - name: widget-model-version
+          in: query
+          description: the ASDC data dictionary version of the widget model.This maps directly to the A&AI version of the widget.
+          required: false
+          type: string
+        - name: nf-type
+          in: query
+          description: Generic description of the type of NF
+          required: false
+          type: string
+        - name: nf-function
+          in: query
+          description: English description of Network function that the specific VNF deployment is providing
+          required: false
+          type: string
+        - name: nf-role
+          in: query
+          description: role in the network that this model will be providing
+          required: false
+          type: string
+        - name: nf-naming-code
+          in: query
+          description: string assigned to this model used for naming purposes
+          required: false
+          type: string
+  /network/generic-vnfs/generic-vnf/{vnf-id}/vf-modules/vf-module/{vf-module-id}/relationship-list/relationship:
+    put:
+      tags:
+        - Network
+      summary: see node definition for valid relationships
+      operationId: createOrUpdateNetworkGenericVnfsGenericVnfVfModulesVfModuleRelationshipListRelationship
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: vnf-id
+          in: path
+          description: Unique id of VNF.  This is unique across the graph.
+          required: true
+          type: string
+        - name: vf-module-id
+          in: path
+          description: Unique ID of vf-module.
+          required: true
+          type: string
+        - name: body
+          in: body
+          description: relationship object that needs to be created or updated
+          required: true
+          schema:
+            $ref: "#/definitions/relationship"
+    delete:
+      tags:
+        - Network
+      summary: delete an existing relationship
+      description: delete an existing relationship
+      operationId: deleteNetworkGenericVnfsGenericVnfVfModulesVfModuleRelationshipListRelationship
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: vnf-id
+          in: path
+          description: Unique id of VNF.  This is unique across the graph.
+          required: true
+          type: string
+        - name: vf-module-id
+          in: path
+          description: Unique ID of vf-module.
+          required: true
+          type: string
+  /network/generic-vnfs/generic-vnf/{vnf-id}/vf-modules/vf-module/{vf-module-id}:
+    get:
+      tags:
+        - Network
+      summary: returns vf-module
+      description: returns vf-module
+      operationId: getNetworkGenericVnfsGenericVnfVfModulesVfModule
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "200":
+          description: successful operation
+          schema:
+              $ref: "#/definitions/vf-module"
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: vnf-id
+          in: path
+          description: Unique id of VNF.  This is unique across the graph.
+          required: true
+          type: string
+        - name: vf-module-id
+          in: path
+          description: Unique ID of vf-module.
+          required: true
+          type: string
+        - name: vnf-name
+          in: query
+          description: Name of VNF.
+          required: false
+          type: string
+        - name: vnf-name2
+          in: query
+          description: Alternate name of VNF.
+          required: false
+          type: string
+        - name: vnf-type
+          in: query
+          description: String capturing type of vnf, that was intended to identify the ASDC resource.  This field has been overloaded in service-specific ways and clients should expect changes to occur in the future to this field as ECOMP matures.
+          required: false
+          type: string
+        - name: service-id
+          in: query
+          description: Unique identifier of service, does not necessarily map to ASDC service models.  SOON TO BE DEPRECATED
+          required: false
+          type: string
+        - name: regional-resource-zone
+          in: query
+          description: Regional way of organizing pservers, source of truth should define values
+          required: false
+          type: string
+        - name: prov-status
+          in: query
+          description: Trigger for operational monitoring of this resource by Service Assurance systems.
+          required: false
+          type: string
+        - name: heat-stack-id
+          in: query
+          description: Heat stack id corresponding to this instance, managed by MSO
+          required: false
+          type: string
+        - name: in-maint
+          in: query
+          required: false
+          type: boolean
+        - name: is-closed-loop-disabled
+          in: query
+          required: false
+          type: boolean
+        - name: model-invariant-id
+          in: query
+          description: the ASDC model id for this resource or service model.
+          required: false
+          type: string
+        - name: model-version-id
+          in: query
+          description: the ASDC model version for this resource or service model.
+          required: false
+          type: string
+        - name: widget-model-id
+          in: query
+          description: the ASDC data dictionary widget model. This maps directly to the A&AI widget.
+          required: false
+          type: string
+        - name: widget-model-version
+          in: query
+          description: the ASDC data dictionary version of the widget model.This maps directly to the A&AI version of the widget.
+          required: false
+          type: string
+        - name: nf-type
+          in: query
+          description: Generic description of the type of NF
+          required: false
+          type: string
+        - name: nf-function
+          in: query
+          description: English description of Network function that the specific VNF deployment is providing
+          required: false
+          type: string
+        - name: nf-role
+          in: query
+          description: role in the network that this model will be providing
+          required: false
+          type: string
+        - name: nf-naming-code
+          in: query
+          description: string assigned to this model used for naming purposes
+          required: false
+          type: string
+        - name: vf-module-name
+          in: query
+          description: Name of vf-module
+          required: false
+          type: string
+        - name: heat-stack-id
+          in: query
+          description: Heat stack id corresponding to this instance.
+          required: false
+          type: string
+        - name: model-invariant-id
+          in: query
+          description: the ASDC model id for this resource or service model.
+          required: false
+          type: string
+        - name: model-version-id
+          in: query
+          description: the ASDC model version for this resource or service model.
+          required: false
+          type: string
+        - name: widget-model-id
+          in: query
+          description: the ASDC data dictionary widget model. This maps directly to the A&AI widget.
+          required: false
+          type: string
+        - name: widget-model-version
+          in: query
+          description: the ASDC data dictionary version of the widget model.This maps directly to the A&AI version of the widget.
+          required: false
+          type: string
+        - name: contrail-service-instance-fqdn
+          in: query
+          description: the Contrail unique ID for a service-instance
+          required: false
+          type: string
+    put:
+      tags:
+        - Network
+      summary: create or update an existing vf-module
+      description: create or update an existing vf-module
+      operationId: createOrUpdateNetworkGenericVnfsGenericVnfVfModulesVfModule
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: vnf-id
+          in: path
+          description: Unique id of VNF.  This is unique across the graph.
+          required: true
+          type: string
+        - name: vf-module-id
+          in: path
+          description: Unique ID of vf-module.
+          required: true
+          type: string
+        - name: body
+          in: body
+          description: vf-module object that needs to be created or updated
+          required: true
+          schema:
+            $ref: "#/definitions/vf-module"
+    delete:
+      tags:
+        - Network
+      summary: delete an existing vf-module
+      description: delete an existing vf-module
+      operationId: deleteNetworkGenericVnfsGenericVnfVfModulesVfModule
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: vnf-id
+          in: path
+          description: Unique id of VNF.  This is unique across the graph.
+          required: true
+          type: string
+        - name: vf-module-id
+          in: path
+          description: Unique ID of vf-module.
+          required: true
+          type: string
+        - name: resource-version
+          in: query
+          description: resource-version for concurrency
+          required: true
+          type: string
+  /network/generic-vnfs/generic-vnf/{vnf-id}/vf-modules:
+    get:
+      tags:
+        - Network
+      summary: returns vf-modules
+      description: returns vf-modules
+      operationId: getNetworkGenericVnfsGenericVnfVfModules
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "200":
+          description: successful operation
+          schema:
+              $ref: "#/definitions/vf-modules"
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: vnf-id
+          in: path
+          description: Unique id of VNF.  This is unique across the graph.
+          required: true
+          type: string
+        - name: vnf-name
+          in: query
+          description: Name of VNF.
+          required: false
+          type: string
+        - name: vnf-name2
+          in: query
+          description: Alternate name of VNF.
+          required: false
+          type: string
+        - name: vnf-type
+          in: query
+          description: String capturing type of vnf, that was intended to identify the ASDC resource.  This field has been overloaded in service-specific ways and clients should expect changes to occur in the future to this field as ECOMP matures.
+          required: false
+          type: string
+        - name: service-id
+          in: query
+          description: Unique identifier of service, does not necessarily map to ASDC service models.  SOON TO BE DEPRECATED
+          required: false
+          type: string
+        - name: regional-resource-zone
+          in: query
+          description: Regional way of organizing pservers, source of truth should define values
+          required: false
+          type: string
+        - name: prov-status
+          in: query
+          description: Trigger for operational monitoring of this resource by Service Assurance systems.
+          required: false
+          type: string
+        - name: heat-stack-id
+          in: query
+          description: Heat stack id corresponding to this instance, managed by MSO
+          required: false
+          type: string
+        - name: in-maint
+          in: query
+          required: false
+          type: boolean
+        - name: is-closed-loop-disabled
+          in: query
+          required: false
+          type: boolean
+        - name: model-invariant-id
+          in: query
+          description: the ASDC model id for this resource or service model.
+          required: false
+          type: string
+        - name: model-version-id
+          in: query
+          description: the ASDC model version for this resource or service model.
+          required: false
+          type: string
+        - name: widget-model-id
+          in: query
+          description: the ASDC data dictionary widget model. This maps directly to the A&AI widget.
+          required: false
+          type: string
+        - name: widget-model-version
+          in: query
+          description: the ASDC data dictionary version of the widget model.This maps directly to the A&AI version of the widget.
+          required: false
+          type: string
+        - name: nf-type
+          in: query
+          description: Generic description of the type of NF
+          required: false
+          type: string
+        - name: nf-function
+          in: query
+          description: English description of Network function that the specific VNF deployment is providing
+          required: false
+          type: string
+        - name: nf-role
+          in: query
+          description: role in the network that this model will be providing
+          required: false
+          type: string
+        - name: nf-naming-code
+          in: query
+          description: string assigned to this model used for naming purposes
+          required: false
+          type: string
+  /network/generic-vnfs/generic-vnf/{vnf-id}/licenses/license/{group-uuid}/{resource-uuid}/relationship-list/relationship:
+    put:
+      tags:
+        - Network
+      summary: see node definition for valid relationships
+      operationId: createOrUpdateNetworkGenericVnfsGenericVnfLicensesLicenseRelationshipListRelationship
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: vnf-id
+          in: path
+          description: Unique id of VNF.  This is unique across the graph.
+          required: true
+          type: string
+        - name: group-uuid
+          in: path
+          description: Unique ID for the license group the resource belongs to, should be uuid.
+          required: true
+          type: string
+        - name: resource-uuid
+          in: path
+          description: Unique ID of a license resource. 
+          required: true
+          type: string
+        - name: body
+          in: body
+          description: relationship object that needs to be created or updated
+          required: true
+          schema:
+            $ref: "#/definitions/relationship"
+    delete:
+      tags:
+        - Network
+      summary: delete an existing relationship
+      description: delete an existing relationship
+      operationId: deleteNetworkGenericVnfsGenericVnfLicensesLicenseRelationshipListRelationship
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: vnf-id
+          in: path
+          description: Unique id of VNF.  This is unique across the graph.
+          required: true
+          type: string
+        - name: group-uuid
+          in: path
+          description: Unique ID for the license group the resource belongs to, should be uuid.
+          required: true
+          type: string
+        - name: resource-uuid
+          in: path
+          description: Unique ID of a license resource. 
+          required: true
+          type: string
+  /network/generic-vnfs/generic-vnf/{vnf-id}/licenses/license/{group-uuid}/{resource-uuid}:
+    get:
+      tags:
+        - Network
+      summary: returns license
+      description: returns license
+      operationId: getNetworkGenericVnfsGenericVnfLicensesLicense
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "200":
+          description: successful operation
+          schema:
+              $ref: "#/definitions/license"
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: vnf-id
+          in: path
+          description: Unique id of VNF.  This is unique across the graph.
+          required: true
+          type: string
+        - name: group-uuid
+          in: path
+          description: Unique ID for the license group the resource belongs to, should be uuid.
+          required: true
+          type: string
+        - name: resource-uuid
+          in: path
+          description: Unique ID of a license resource. 
+          required: true
+          type: string
+        - name: vnf-name
+          in: query
+          description: Name of VNF.
+          required: false
+          type: string
+        - name: vnf-name2
+          in: query
+          description: Alternate name of VNF.
+          required: false
+          type: string
+        - name: vnf-type
+          in: query
+          description: String capturing type of vnf, that was intended to identify the ASDC resource.  This field has been overloaded in service-specific ways and clients should expect changes to occur in the future to this field as ECOMP matures.
+          required: false
+          type: string
+        - name: service-id
+          in: query
+          description: Unique identifier of service, does not necessarily map to ASDC service models.  SOON TO BE DEPRECATED
+          required: false
+          type: string
+        - name: regional-resource-zone
+          in: query
+          description: Regional way of organizing pservers, source of truth should define values
+          required: false
+          type: string
+        - name: prov-status
+          in: query
+          description: Trigger for operational monitoring of this resource by Service Assurance systems.
+          required: false
+          type: string
+        - name: heat-stack-id
+          in: query
+          description: Heat stack id corresponding to this instance, managed by MSO
+          required: false
+          type: string
+        - name: in-maint
+          in: query
+          required: false
+          type: boolean
+        - name: is-closed-loop-disabled
+          in: query
+          required: false
+          type: boolean
+        - name: model-invariant-id
+          in: query
+          description: the ASDC model id for this resource or service model.
+          required: false
+          type: string
+        - name: model-version-id
+          in: query
+          description: the ASDC model version for this resource or service model.
+          required: false
+          type: string
+        - name: widget-model-id
+          in: query
+          description: the ASDC data dictionary widget model. This maps directly to the A&AI widget.
+          required: false
+          type: string
+        - name: widget-model-version
+          in: query
+          description: the ASDC data dictionary version of the widget model.This maps directly to the A&AI version of the widget.
+          required: false
+          type: string
+        - name: nf-type
+          in: query
+          description: Generic description of the type of NF
+          required: false
+          type: string
+        - name: nf-function
+          in: query
+          description: English description of Network function that the specific VNF deployment is providing
+          required: false
+          type: string
+        - name: nf-role
+          in: query
+          description: role in the network that this model will be providing
+          required: false
+          type: string
+        - name: nf-naming-code
+          in: query
+          description: string assigned to this model used for naming purposes
+          required: false
+          type: string
+    put:
+      tags:
+        - Network
+      summary: create or update an existing license
+      description: create or update an existing license
+      operationId: createOrUpdateNetworkGenericVnfsGenericVnfLicensesLicense
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: vnf-id
+          in: path
+          description: Unique id of VNF.  This is unique across the graph.
+          required: true
+          type: string
+        - name: group-uuid
+          in: path
+          description: Unique ID for the license group the resource belongs to, should be uuid.
+          required: true
+          type: string
+        - name: resource-uuid
+          in: path
+          description: Unique ID of a license resource. 
+          required: true
+          type: string
+        - name: body
+          in: body
+          description: license object that needs to be created or updated
+          required: true
+          schema:
+            $ref: "#/definitions/license"
+    delete:
+      tags:
+        - Network
+      summary: delete an existing license
+      description: delete an existing license
+      operationId: deleteNetworkGenericVnfsGenericVnfLicensesLicense
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: vnf-id
+          in: path
+          description: Unique id of VNF.  This is unique across the graph.
+          required: true
+          type: string
+        - name: group-uuid
+          in: path
+          description: Unique ID for the license group the resource belongs to, should be uuid.
+          required: true
+          type: string
+        - name: resource-uuid
+          in: path
+          description: Unique ID of a license resource. 
+          required: true
+          type: string
+        - name: resource-version
+          in: query
+          description: resource-version for concurrency
+          required: true
+          type: string
+  /network/generic-vnfs/generic-vnf/{vnf-id}/licenses:
+    get:
+      tags:
+        - Network
+      summary: returns licenses
+      description: returns licenses
+      operationId: getNetworkGenericVnfsGenericVnfLicenses
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "200":
+          description: successful operation
+          schema:
+              $ref: "#/definitions/licenses"
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: vnf-id
+          in: path
+          description: Unique id of VNF.  This is unique across the graph.
+          required: true
+          type: string
+        - name: vnf-name
+          in: query
+          description: Name of VNF.
+          required: false
+          type: string
+        - name: vnf-name2
+          in: query
+          description: Alternate name of VNF.
+          required: false
+          type: string
+        - name: vnf-type
+          in: query
+          description: String capturing type of vnf, that was intended to identify the ASDC resource.  This field has been overloaded in service-specific ways and clients should expect changes to occur in the future to this field as ECOMP matures.
+          required: false
+          type: string
+        - name: service-id
+          in: query
+          description: Unique identifier of service, does not necessarily map to ASDC service models.  SOON TO BE DEPRECATED
+          required: false
+          type: string
+        - name: regional-resource-zone
+          in: query
+          description: Regional way of organizing pservers, source of truth should define values
+          required: false
+          type: string
+        - name: prov-status
+          in: query
+          description: Trigger for operational monitoring of this resource by Service Assurance systems.
+          required: false
+          type: string
+        - name: heat-stack-id
+          in: query
+          description: Heat stack id corresponding to this instance, managed by MSO
+          required: false
+          type: string
+        - name: in-maint
+          in: query
+          required: false
+          type: boolean
+        - name: is-closed-loop-disabled
+          in: query
+          required: false
+          type: boolean
+        - name: model-invariant-id
+          in: query
+          description: the ASDC model id for this resource or service model.
+          required: false
+          type: string
+        - name: model-version-id
+          in: query
+          description: the ASDC model version for this resource or service model.
+          required: false
+          type: string
+        - name: widget-model-id
+          in: query
+          description: the ASDC data dictionary widget model. This maps directly to the A&AI widget.
+          required: false
+          type: string
+        - name: widget-model-version
+          in: query
+          description: the ASDC data dictionary version of the widget model.This maps directly to the A&AI version of the widget.
+          required: false
+          type: string
+        - name: nf-type
+          in: query
+          description: Generic description of the type of NF
+          required: false
+          type: string
+        - name: nf-function
+          in: query
+          description: English description of Network function that the specific VNF deployment is providing
+          required: false
+          type: string
+        - name: nf-role
+          in: query
+          description: role in the network that this model will be providing
+          required: false
+          type: string
+        - name: nf-naming-code
+          in: query
+          description: string assigned to this model used for naming purposes
+          required: false
+          type: string
+  /network/generic-vnfs/generic-vnf/{vnf-id}/entitlements/entitlement/{group-uuid}/{resource-uuid}/relationship-list/relationship:
+    put:
+      tags:
+        - Network
+      summary: see node definition for valid relationships
+      operationId: createOrUpdateNetworkGenericVnfsGenericVnfEntitlementsEntitlementRelationshipListRelationship
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: vnf-id
+          in: path
+          description: Unique id of VNF.  This is unique across the graph.
+          required: true
+          type: string
+        - name: group-uuid
+          in: path
+          description: Unique ID for the entitlement group the resource comes from, should be uuid.
+          required: true
+          type: string
+        - name: resource-uuid
+          in: path
+          description: Unique ID of an entitlement resource. 
+          required: true
+          type: string
+        - name: body
+          in: body
+          description: relationship object that needs to be created or updated
+          required: true
+          schema:
+            $ref: "#/definitions/relationship"
+    delete:
+      tags:
+        - Network
+      summary: delete an existing relationship
+      description: delete an existing relationship
+      operationId: deleteNetworkGenericVnfsGenericVnfEntitlementsEntitlementRelationshipListRelationship
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: vnf-id
+          in: path
+          description: Unique id of VNF.  This is unique across the graph.
+          required: true
+          type: string
+        - name: group-uuid
+          in: path
+          description: Unique ID for the entitlement group the resource comes from, should be uuid.
+          required: true
+          type: string
+        - name: resource-uuid
+          in: path
+          description: Unique ID of an entitlement resource. 
+          required: true
+          type: string
+  /network/generic-vnfs/generic-vnf/{vnf-id}/entitlements/entitlement/{group-uuid}/{resource-uuid}:
+    get:
+      tags:
+        - Network
+      summary: returns entitlement
+      description: returns entitlement
+      operationId: getNetworkGenericVnfsGenericVnfEntitlementsEntitlement
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "200":
+          description: successful operation
+          schema:
+              $ref: "#/definitions/entitlement"
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: vnf-id
+          in: path
+          description: Unique id of VNF.  This is unique across the graph.
+          required: true
+          type: string
+        - name: group-uuid
+          in: path
+          description: Unique ID for the entitlement group the resource comes from, should be uuid.
+          required: true
+          type: string
+        - name: resource-uuid
+          in: path
+          description: Unique ID of an entitlement resource. 
+          required: true
+          type: string
+        - name: vnf-name
+          in: query
+          description: Name of VNF.
+          required: false
+          type: string
+        - name: vnf-name2
+          in: query
+          description: Alternate name of VNF.
+          required: false
+          type: string
+        - name: vnf-type
+          in: query
+          description: String capturing type of vnf, that was intended to identify the ASDC resource.  This field has been overloaded in service-specific ways and clients should expect changes to occur in the future to this field as ECOMP matures.
+          required: false
+          type: string
+        - name: service-id
+          in: query
+          description: Unique identifier of service, does not necessarily map to ASDC service models.  SOON TO BE DEPRECATED
+          required: false
+          type: string
+        - name: regional-resource-zone
+          in: query
+          description: Regional way of organizing pservers, source of truth should define values
+          required: false
+          type: string
+        - name: prov-status
+          in: query
+          description: Trigger for operational monitoring of this resource by Service Assurance systems.
+          required: false
+          type: string
+        - name: heat-stack-id
+          in: query
+          description: Heat stack id corresponding to this instance, managed by MSO
+          required: false
+          type: string
+        - name: in-maint
+          in: query
+          required: false
+          type: boolean
+        - name: is-closed-loop-disabled
+          in: query
+          required: false
+          type: boolean
+        - name: model-invariant-id
+          in: query
+          description: the ASDC model id for this resource or service model.
+          required: false
+          type: string
+        - name: model-version-id
+          in: query
+          description: the ASDC model version for this resource or service model.
+          required: false
+          type: string
+        - name: widget-model-id
+          in: query
+          description: the ASDC data dictionary widget model. This maps directly to the A&AI widget.
+          required: false
+          type: string
+        - name: widget-model-version
+          in: query
+          description: the ASDC data dictionary version of the widget model.This maps directly to the A&AI version of the widget.
+          required: false
+          type: string
+        - name: nf-type
+          in: query
+          description: Generic description of the type of NF
+          required: false
+          type: string
+        - name: nf-function
+          in: query
+          description: English description of Network function that the specific VNF deployment is providing
+          required: false
+          type: string
+        - name: nf-role
+          in: query
+          description: role in the network that this model will be providing
+          required: false
+          type: string
+        - name: nf-naming-code
+          in: query
+          description: string assigned to this model used for naming purposes
+          required: false
+          type: string
+    put:
+      tags:
+        - Network
+      summary: create or update an existing entitlement
+      description: create or update an existing entitlement
+      operationId: createOrUpdateNetworkGenericVnfsGenericVnfEntitlementsEntitlement
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: vnf-id
+          in: path
+          description: Unique id of VNF.  This is unique across the graph.
+          required: true
+          type: string
+        - name: group-uuid
+          in: path
+          description: Unique ID for the entitlement group the resource comes from, should be uuid.
+          required: true
+          type: string
+        - name: resource-uuid
+          in: path
+          description: Unique ID of an entitlement resource. 
+          required: true
+          type: string
+        - name: body
+          in: body
+          description: entitlement object that needs to be created or updated
+          required: true
+          schema:
+            $ref: "#/definitions/entitlement"
+    delete:
+      tags:
+        - Network
+      summary: delete an existing entitlement
+      description: delete an existing entitlement
+      operationId: deleteNetworkGenericVnfsGenericVnfEntitlementsEntitlement
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: vnf-id
+          in: path
+          description: Unique id of VNF.  This is unique across the graph.
+          required: true
+          type: string
+        - name: group-uuid
+          in: path
+          description: Unique ID for the entitlement group the resource comes from, should be uuid.
+          required: true
+          type: string
+        - name: resource-uuid
+          in: path
+          description: Unique ID of an entitlement resource. 
+          required: true
+          type: string
+        - name: resource-version
+          in: query
+          description: resource-version for concurrency
+          required: true
+          type: string
+  /network/generic-vnfs/generic-vnf/{vnf-id}/entitlements:
+    get:
+      tags:
+        - Network
+      summary: returns entitlements
+      description: returns entitlements
+      operationId: getNetworkGenericVnfsGenericVnfEntitlements
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "200":
+          description: successful operation
+          schema:
+              $ref: "#/definitions/entitlements"
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: vnf-id
+          in: path
+          description: Unique id of VNF.  This is unique across the graph.
+          required: true
+          type: string
+        - name: vnf-name
+          in: query
+          description: Name of VNF.
+          required: false
+          type: string
+        - name: vnf-name2
+          in: query
+          description: Alternate name of VNF.
+          required: false
+          type: string
+        - name: vnf-type
+          in: query
+          description: String capturing type of vnf, that was intended to identify the ASDC resource.  This field has been overloaded in service-specific ways and clients should expect changes to occur in the future to this field as ECOMP matures.
+          required: false
+          type: string
+        - name: service-id
+          in: query
+          description: Unique identifier of service, does not necessarily map to ASDC service models.  SOON TO BE DEPRECATED
+          required: false
+          type: string
+        - name: regional-resource-zone
+          in: query
+          description: Regional way of organizing pservers, source of truth should define values
+          required: false
+          type: string
+        - name: prov-status
+          in: query
+          description: Trigger for operational monitoring of this resource by Service Assurance systems.
+          required: false
+          type: string
+        - name: heat-stack-id
+          in: query
+          description: Heat stack id corresponding to this instance, managed by MSO
+          required: false
+          type: string
+        - name: in-maint
+          in: query
+          required: false
+          type: boolean
+        - name: is-closed-loop-disabled
+          in: query
+          required: false
+          type: boolean
+        - name: model-invariant-id
+          in: query
+          description: the ASDC model id for this resource or service model.
+          required: false
+          type: string
+        - name: model-version-id
+          in: query
+          description: the ASDC model version for this resource or service model.
+          required: false
+          type: string
+        - name: widget-model-id
+          in: query
+          description: the ASDC data dictionary widget model. This maps directly to the A&AI widget.
+          required: false
+          type: string
+        - name: widget-model-version
+          in: query
+          description: the ASDC data dictionary version of the widget model.This maps directly to the A&AI version of the widget.
+          required: false
+          type: string
+        - name: nf-type
+          in: query
+          description: Generic description of the type of NF
+          required: false
+          type: string
+        - name: nf-function
+          in: query
+          description: English description of Network function that the specific VNF deployment is providing
+          required: false
+          type: string
+        - name: nf-role
+          in: query
+          description: role in the network that this model will be providing
+          required: false
+          type: string
+        - name: nf-naming-code
+          in: query
+          description: string assigned to this model used for naming purposes
+          required: false
+          type: string
+  /network/generic-vnfs/generic-vnf/{vnf-id}:
+    get:
+      tags:
+        - Network
+      summary: returns generic-vnf
+      description: returns generic-vnf
+      operationId: getNetworkGenericVnfsGenericVnf
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "200":
+          description: successful operation
+          schema:
+              $ref: "#/definitions/generic-vnf"
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: vnf-id
+          in: path
+          description: Unique id of VNF.  This is unique across the graph.
+          required: true
+          type: string
+        - name: vnf-name
+          in: query
+          description: Name of VNF.
+          required: false
+          type: string
+        - name: vnf-name2
+          in: query
+          description: Alternate name of VNF.
+          required: false
+          type: string
+        - name: vnf-type
+          in: query
+          description: String capturing type of vnf, that was intended to identify the ASDC resource.  This field has been overloaded in service-specific ways and clients should expect changes to occur in the future to this field as ECOMP matures.
+          required: false
+          type: string
+        - name: service-id
+          in: query
+          description: Unique identifier of service, does not necessarily map to ASDC service models.  SOON TO BE DEPRECATED
+          required: false
+          type: string
+        - name: regional-resource-zone
+          in: query
+          description: Regional way of organizing pservers, source of truth should define values
+          required: false
+          type: string
+        - name: prov-status
+          in: query
+          description: Trigger for operational monitoring of this resource by Service Assurance systems.
+          required: false
+          type: string
+        - name: heat-stack-id
+          in: query
+          description: Heat stack id corresponding to this instance, managed by MSO
+          required: false
+          type: string
+        - name: in-maint
+          in: query
+          required: false
+          type: boolean
+        - name: is-closed-loop-disabled
+          in: query
+          required: false
+          type: boolean
+        - name: model-invariant-id
+          in: query
+          description: the ASDC model id for this resource or service model.
+          required: false
+          type: string
+        - name: model-version-id
+          in: query
+          description: the ASDC model version for this resource or service model.
+          required: false
+          type: string
+        - name: widget-model-id
+          in: query
+          description: the ASDC data dictionary widget model. This maps directly to the A&AI widget.
+          required: false
+          type: string
+        - name: widget-model-version
+          in: query
+          description: the ASDC data dictionary version of the widget model.This maps directly to the A&AI version of the widget.
+          required: false
+          type: string
+        - name: nf-type
+          in: query
+          description: Generic description of the type of NF
+          required: false
+          type: string
+        - name: nf-function
+          in: query
+          description: English description of Network function that the specific VNF deployment is providing
+          required: false
+          type: string
+        - name: nf-role
+          in: query
+          description: role in the network that this model will be providing
+          required: false
+          type: string
+        - name: nf-naming-code
+          in: query
+          description: string assigned to this model used for naming purposes
+          required: false
+          type: string
+    put:
+      tags:
+        - Network
+      summary: create or update an existing generic-vnf
+      description: create or update an existing generic-vnf
+      operationId: createOrUpdateNetworkGenericVnfsGenericVnf
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: vnf-id
+          in: path
+          description: Unique id of VNF.  This is unique across the graph.
+          required: true
+          type: string
+        - name: body
+          in: body
+          description: generic-vnf object that needs to be created or updated
+          required: true
+          schema:
+            $ref: "#/definitions/generic-vnf"
+    delete:
+      tags:
+        - Network
+      summary: delete an existing generic-vnf
+      description: delete an existing generic-vnf
+      operationId: deleteNetworkGenericVnfsGenericVnf
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: vnf-id
+          in: path
+          description: Unique id of VNF.  This is unique across the graph.
+          required: true
+          type: string
+        - name: resource-version
+          in: query
+          description: resource-version for concurrency
+          required: true
+          type: string
+  /network/generic-vnfs:
+    get:
+      tags:
+        - Network
+      summary: returns generic-vnfs
+      description: returns generic-vnfs
+      operationId: getNetworkGenericVnfs
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "200":
+          description: successful operation
+          schema:
+              $ref: "#/definitions/generic-vnfs"
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+  /network/lag-links/lag-link/{link-name}/relationship-list/relationship:
+    put:
+      tags:
+        - Network
+      summary: see node definition for valid relationships
+      operationId: createOrUpdateNetworkLagLinksLagLinkRelationshipListRelationship
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: link-name
+          in: path
+          description: Alphabetical concatenation of lag-interface names
+          required: true
+          type: string
+        - name: body
+          in: body
+          description: relationship object that needs to be created or updated
+          required: true
+          schema:
+            $ref: "#/definitions/relationship"
+    delete:
+      tags:
+        - Network
+      summary: delete an existing relationship
+      description: delete an existing relationship
+      operationId: deleteNetworkLagLinksLagLinkRelationshipListRelationship
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: link-name
+          in: path
+          description: Alphabetical concatenation of lag-interface names
+          required: true
+          type: string
+  /network/lag-links/lag-link/{link-name}:
+    get:
+      tags:
+        - Network
+      summary: returns lag-link
+      description: returns lag-link
+      operationId: getNetworkLagLinksLagLink
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "200":
+          description: successful operation
+          schema:
+              $ref: "#/definitions/lag-link"
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: link-name
+          in: path
+          description: Alphabetical concatenation of lag-interface names
+          required: true
+          type: string
+    put:
+      tags:
+        - Network
+      summary: create or update an existing lag-link
+      description: create or update an existing lag-link
+      operationId: createOrUpdateNetworkLagLinksLagLink
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: link-name
+          in: path
+          description: Alphabetical concatenation of lag-interface names
+          required: true
+          type: string
+        - name: body
+          in: body
+          description: lag-link object that needs to be created or updated
+          required: true
+          schema:
+            $ref: "#/definitions/lag-link"
+    delete:
+      tags:
+        - Network
+      summary: delete an existing lag-link
+      description: delete an existing lag-link
+      operationId: deleteNetworkLagLinksLagLink
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: link-name
+          in: path
+          description: Alphabetical concatenation of lag-interface names
+          required: true
+          type: string
+        - name: resource-version
+          in: query
+          description: resource-version for concurrency
+          required: true
+          type: string
+  /network/lag-links:
+    get:
+      tags:
+        - Network
+      summary: returns lag-links
+      description: returns lag-links
+      operationId: getNetworkLagLinks
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "200":
+          description: successful operation
+          schema:
+              $ref: "#/definitions/lag-links"
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+  /network/newvces/newvce/{vnf-id2}/relationship-list/relationship:
+    put:
+      tags:
+        - Network
+      summary: see node definition for valid relationships
+      operationId: createOrUpdateNetworkNewvcesNewvceRelationshipListRelationship
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: vnf-id2
+          in: path
+          description: Unique id of VNF, can't use same attribute name right now until we promote this new object
+          required: true
+          type: string
+        - name: body
+          in: body
+          description: relationship object that needs to be created or updated
+          required: true
+          schema:
+            $ref: "#/definitions/relationship"
+    delete:
+      tags:
+        - Network
+      summary: delete an existing relationship
+      description: delete an existing relationship
+      operationId: deleteNetworkNewvcesNewvceRelationshipListRelationship
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: vnf-id2
+          in: path
+          description: Unique id of VNF, can't use same attribute name right now until we promote this new object
+          required: true
+          type: string
+  /network/newvces/newvce/{vnf-id2}/l-interfaces/l-interface/{interface-name}/vlans/vlan/{vlan-interface}/relationship-list/relationship:
+    put:
+      tags:
+        - Network
+      summary: see node definition for valid relationships
+      operationId: createOrUpdateNetworkNewvcesNewvceLInterfacesLInterfaceVlansVlanRelationshipListRelationship
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: vnf-id2
+          in: path
+          description: Unique id of VNF, can't use same attribute name right now until we promote this new object
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name given to the interface
+          required: true
+          type: string
+        - name: vlan-interface
+          in: path
+          description: String that identifies the interface
+          required: true
+          type: string
+        - name: body
+          in: body
+          description: relationship object that needs to be created or updated
+          required: true
+          schema:
+            $ref: "#/definitions/relationship"
+    delete:
+      tags:
+        - Network
+      summary: delete an existing relationship
+      description: delete an existing relationship
+      operationId: deleteNetworkNewvcesNewvceLInterfacesLInterfaceVlansVlanRelationshipListRelationship
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: vnf-id2
+          in: path
+          description: Unique id of VNF, can't use same attribute name right now until we promote this new object
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name given to the interface
+          required: true
+          type: string
+        - name: vlan-interface
+          in: path
+          description: String that identifies the interface
+          required: true
+          type: string
+  /network/newvces/newvce/{vnf-id2}/l-interfaces/l-interface/{interface-name}/vlans/vlan/{vlan-interface}/l3-interface-ipv4-address-list/{l3-interface-ipv4-address}/relationship-list/relationship:
+    put:
+      tags:
+        - Network
+      summary: see node definition for valid relationships
+      operationId: createOrUpdateNetworkNewvcesNewvceLInterfacesLInterfaceVlansVlanL3InterfaceIpv4AddressListRelationshipListRelationship
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: vnf-id2
+          in: path
+          description: Unique id of VNF, can't use same attribute name right now until we promote this new object
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name given to the interface
+          required: true
+          type: string
+        - name: vlan-interface
+          in: path
+          description: String that identifies the interface
+          required: true
+          type: string
+        - name: l3-interface-ipv4-address
+          in: path
+          description: IP address
+          required: true
+          type: string
+        - name: body
+          in: body
+          description: relationship object that needs to be created or updated
+          required: true
+          schema:
+            $ref: "#/definitions/relationship"
+    delete:
+      tags:
+        - Network
+      summary: delete an existing relationship
+      description: delete an existing relationship
+      operationId: deleteNetworkNewvcesNewvceLInterfacesLInterfaceVlansVlanL3InterfaceIpv4AddressListRelationshipListRelationship
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: vnf-id2
+          in: path
+          description: Unique id of VNF, can't use same attribute name right now until we promote this new object
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name given to the interface
+          required: true
+          type: string
+        - name: vlan-interface
+          in: path
+          description: String that identifies the interface
+          required: true
+          type: string
+        - name: l3-interface-ipv4-address
+          in: path
+          description: IP address
+          required: true
+          type: string
+  /network/newvces/newvce/{vnf-id2}/l-interfaces/l-interface/{interface-name}/vlans/vlan/{vlan-interface}/l3-interface-ipv4-address-list/{l3-interface-ipv4-address}:
+    get:
+      tags:
+        - Network
+      summary: returns l3-interface-ipv4-address-list
+      description: returns l3-interface-ipv4-address-list
+      operationId: getNetworkNewvcesNewvceLInterfacesLInterfaceVlansVlanL3InterfaceIpv4AddressList
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "200":
+          description: successful operation
+          schema:
+              $ref: "#/definitions/l3-interface-ipv4-address-list"
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: vnf-id2
+          in: path
+          description: Unique id of VNF, can't use same attribute name right now until we promote this new object
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name given to the interface
+          required: true
+          type: string
+        - name: vlan-interface
+          in: path
+          description: String that identifies the interface
+          required: true
+          type: string
+        - name: l3-interface-ipv4-address
+          in: path
+          description: IP address
+          required: true
+          type: string
+        - name: vnf-name
+          in: query
+          description: Name of VNF.
+          required: false
+          type: string
+        - name: vnf-name2
+          in: query
+          description: Alternate name of VNF.
+          required: false
+          type: string
+        - name: vnf-type
+          in: query
+          description: String capturing type of vnf, that was intended to identify the ASDC resource.  This field has been overloaded in service-specific ways and clients should expect changes to occur in the future to this field as ECOMP matures.
+          required: false
+          type: string
+        - name: prov-status
+          in: query
+          description: Trigger for operational monitoring of this VNF by BAU Service Assurance systems.
+          required: false
+          type: string
+        - name: heat-stack-id
+          in: query
+          description: Heat stack id corresponding to this instance, managed by MSO
+          required: false
+          type: string
+        - name: interface-id
+          in: query
+          description: ID of interface
+          required: false
+          type: string
+        - name: macaddr
+          in: query
+          description: MAC address for the interface
+          required: false
+          type: string
+        - name: network-name
+          in: query
+          description: Name of the network
+          required: false
+          type: string
+        - name: vlan-id-inner
+          in: query
+          description: Inner VLAN tag
+          required: false
+          type: integer
+          format: int64
+        - name: vpn-key
+          in: query
+          description: This indicates the customers VPN ID associated with this vlan
+          required: false
+          type: string
+        - name: vlan-id-inner
+          in: query
+          description: Inner VLAN tag
+          required: false
+          type: integer
+          format: int64
+        - name: neutron-network-id
+          in: query
+          description: Neutron network id of the interface that address belongs to
+          required: false
+          type: string
+        - name: neutron-subnet-id
+          in: query
+          description: Neutron id of subnet that address belongs to
+          required: false
+          type: string
+    put:
+      tags:
+        - Network
+      summary: create or update an existing l3-interface-ipv4-address-list
+      description: create or update an existing l3-interface-ipv4-address-list
+      operationId: createOrUpdateNetworkNewvcesNewvceLInterfacesLInterfaceVlansVlanL3InterfaceIpv4AddressList
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: vnf-id2
+          in: path
+          description: Unique id of VNF, can't use same attribute name right now until we promote this new object
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name given to the interface
+          required: true
+          type: string
+        - name: vlan-interface
+          in: path
+          description: String that identifies the interface
+          required: true
+          type: string
+        - name: l3-interface-ipv4-address
+          in: path
+          description: IP address
+          required: true
+          type: string
+        - name: body
+          in: body
+          description: l3-interface-ipv4-address-list object that needs to be created or updated
+          required: true
+          schema:
+            $ref: "#/definitions/l3-interface-ipv4-address-list"
+    delete:
+      tags:
+        - Network
+      summary: delete an existing l3-interface-ipv4-address-list
+      description: delete an existing l3-interface-ipv4-address-list
+      operationId: deleteNetworkNewvcesNewvceLInterfacesLInterfaceVlansVlanL3InterfaceIpv4AddressList
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: vnf-id2
+          in: path
+          description: Unique id of VNF, can't use same attribute name right now until we promote this new object
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name given to the interface
+          required: true
+          type: string
+        - name: vlan-interface
+          in: path
+          description: String that identifies the interface
+          required: true
+          type: string
+        - name: l3-interface-ipv4-address
+          in: path
+          description: IP address
+          required: true
+          type: string
+        - name: resource-version
+          in: query
+          description: resource-version for concurrency
+          required: true
+          type: string
+  /network/newvces/newvce/{vnf-id2}/l-interfaces/l-interface/{interface-name}/vlans/vlan/{vlan-interface}/l3-interface-ipv6-address-list/{l3-interface-ipv6-address}/relationship-list/relationship:
+    put:
+      tags:
+        - Network
+      summary: see node definition for valid relationships
+      operationId: createOrUpdateNetworkNewvcesNewvceLInterfacesLInterfaceVlansVlanL3InterfaceIpv6AddressListRelationshipListRelationship
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: vnf-id2
+          in: path
+          description: Unique id of VNF, can't use same attribute name right now until we promote this new object
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name given to the interface
+          required: true
+          type: string
+        - name: vlan-interface
+          in: path
+          description: String that identifies the interface
+          required: true
+          type: string
+        - name: l3-interface-ipv6-address
+          in: path
+          description: IP address
+          required: true
+          type: string
+        - name: body
+          in: body
+          description: relationship object that needs to be created or updated
+          required: true
+          schema:
+            $ref: "#/definitions/relationship"
+    delete:
+      tags:
+        - Network
+      summary: delete an existing relationship
+      description: delete an existing relationship
+      operationId: deleteNetworkNewvcesNewvceLInterfacesLInterfaceVlansVlanL3InterfaceIpv6AddressListRelationshipListRelationship
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: vnf-id2
+          in: path
+          description: Unique id of VNF, can't use same attribute name right now until we promote this new object
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name given to the interface
+          required: true
+          type: string
+        - name: vlan-interface
+          in: path
+          description: String that identifies the interface
+          required: true
+          type: string
+        - name: l3-interface-ipv6-address
+          in: path
+          description: IP address
+          required: true
+          type: string
+  /network/newvces/newvce/{vnf-id2}/l-interfaces/l-interface/{interface-name}/vlans/vlan/{vlan-interface}/l3-interface-ipv6-address-list/{l3-interface-ipv6-address}:
+    get:
+      tags:
+        - Network
+      summary: returns l3-interface-ipv6-address-list
+      description: returns l3-interface-ipv6-address-list
+      operationId: getNetworkNewvcesNewvceLInterfacesLInterfaceVlansVlanL3InterfaceIpv6AddressList
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "200":
+          description: successful operation
+          schema:
+              $ref: "#/definitions/l3-interface-ipv6-address-list"
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: vnf-id2
+          in: path
+          description: Unique id of VNF, can't use same attribute name right now until we promote this new object
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name given to the interface
+          required: true
+          type: string
+        - name: vlan-interface
+          in: path
+          description: String that identifies the interface
+          required: true
+          type: string
+        - name: l3-interface-ipv6-address
+          in: path
+          description: IP address
+          required: true
+          type: string
+        - name: vnf-name
+          in: query
+          description: Name of VNF.
+          required: false
+          type: string
+        - name: vnf-name2
+          in: query
+          description: Alternate name of VNF.
+          required: false
+          type: string
+        - name: vnf-type
+          in: query
+          description: String capturing type of vnf, that was intended to identify the ASDC resource.  This field has been overloaded in service-specific ways and clients should expect changes to occur in the future to this field as ECOMP matures.
+          required: false
+          type: string
+        - name: prov-status
+          in: query
+          description: Trigger for operational monitoring of this VNF by BAU Service Assurance systems.
+          required: false
+          type: string
+        - name: heat-stack-id
+          in: query
+          description: Heat stack id corresponding to this instance, managed by MSO
+          required: false
+          type: string
+        - name: interface-id
+          in: query
+          description: ID of interface
+          required: false
+          type: string
+        - name: macaddr
+          in: query
+          description: MAC address for the interface
+          required: false
+          type: string
+        - name: network-name
+          in: query
+          description: Name of the network
+          required: false
+          type: string
+        - name: vlan-id-inner
+          in: query
+          description: Inner VLAN tag
+          required: false
+          type: integer
+          format: int64
+        - name: vpn-key
+          in: query
+          description: This indicates the customers VPN ID associated with this vlan
+          required: false
+          type: string
+        - name: vlan-id-inner
+          in: query
+          description: Inner VLAN tag
+          required: false
+          type: integer
+          format: int64
+        - name: neutron-network-id
+          in: query
+          description: Neutron network id of the interface that address belongs to
+          required: false
+          type: string
+        - name: neutron-subnet-id
+          in: query
+          description: Neutron id of subnet that address belongs to
+          required: false
+          type: string
+    put:
+      tags:
+        - Network
+      summary: create or update an existing l3-interface-ipv6-address-list
+      description: create or update an existing l3-interface-ipv6-address-list
+      operationId: createOrUpdateNetworkNewvcesNewvceLInterfacesLInterfaceVlansVlanL3InterfaceIpv6AddressList
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: vnf-id2
+          in: path
+          description: Unique id of VNF, can't use same attribute name right now until we promote this new object
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name given to the interface
+          required: true
+          type: string
+        - name: vlan-interface
+          in: path
+          description: String that identifies the interface
+          required: true
+          type: string
+        - name: l3-interface-ipv6-address
+          in: path
+          description: IP address
+          required: true
+          type: string
+        - name: body
+          in: body
+          description: l3-interface-ipv6-address-list object that needs to be created or updated
+          required: true
+          schema:
+            $ref: "#/definitions/l3-interface-ipv6-address-list"
+    delete:
+      tags:
+        - Network
+      summary: delete an existing l3-interface-ipv6-address-list
+      description: delete an existing l3-interface-ipv6-address-list
+      operationId: deleteNetworkNewvcesNewvceLInterfacesLInterfaceVlansVlanL3InterfaceIpv6AddressList
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: vnf-id2
+          in: path
+          description: Unique id of VNF, can't use same attribute name right now until we promote this new object
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name given to the interface
+          required: true
+          type: string
+        - name: vlan-interface
+          in: path
+          description: String that identifies the interface
+          required: true
+          type: string
+        - name: l3-interface-ipv6-address
+          in: path
+          description: IP address
+          required: true
+          type: string
+        - name: resource-version
+          in: query
+          description: resource-version for concurrency
+          required: true
+          type: string
+  /network/newvces/newvce/{vnf-id2}/l-interfaces/l-interface/{interface-name}/vlans/vlan/{vlan-interface}:
+    get:
+      tags:
+        - Network
+      summary: returns vlan
+      description: returns vlan
+      operationId: getNetworkNewvcesNewvceLInterfacesLInterfaceVlansVlan
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "200":
+          description: successful operation
+          schema:
+              $ref: "#/definitions/vlan"
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: vnf-id2
+          in: path
+          description: Unique id of VNF, can't use same attribute name right now until we promote this new object
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name given to the interface
+          required: true
+          type: string
+        - name: vlan-interface
+          in: path
+          description: String that identifies the interface
+          required: true
+          type: string
+        - name: vnf-name
+          in: query
+          description: Name of VNF.
+          required: false
+          type: string
+        - name: vnf-name2
+          in: query
+          description: Alternate name of VNF.
+          required: false
+          type: string
+        - name: vnf-type
+          in: query
+          description: String capturing type of vnf, that was intended to identify the ASDC resource.  This field has been overloaded in service-specific ways and clients should expect changes to occur in the future to this field as ECOMP matures.
+          required: false
+          type: string
+        - name: prov-status
+          in: query
+          description: Trigger for operational monitoring of this VNF by BAU Service Assurance systems.
+          required: false
+          type: string
+        - name: heat-stack-id
+          in: query
+          description: Heat stack id corresponding to this instance, managed by MSO
+          required: false
+          type: string
+        - name: interface-id
+          in: query
+          description: ID of interface
+          required: false
+          type: string
+        - name: macaddr
+          in: query
+          description: MAC address for the interface
+          required: false
+          type: string
+        - name: network-name
+          in: query
+          description: Name of the network
+          required: false
+          type: string
+        - name: vlan-id-inner
+          in: query
+          description: Inner VLAN tag
+          required: false
+          type: integer
+          format: int64
+        - name: vpn-key
+          in: query
+          description: This indicates the customers VPN ID associated with this vlan
+          required: false
+          type: string
+    put:
+      tags:
+        - Network
+      summary: create or update an existing vlan
+      description: create or update an existing vlan
+      operationId: createOrUpdateNetworkNewvcesNewvceLInterfacesLInterfaceVlansVlan
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: vnf-id2
+          in: path
+          description: Unique id of VNF, can't use same attribute name right now until we promote this new object
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name given to the interface
+          required: true
+          type: string
+        - name: vlan-interface
+          in: path
+          description: String that identifies the interface
+          required: true
+          type: string
+        - name: body
+          in: body
+          description: vlan object that needs to be created or updated
+          required: true
+          schema:
+            $ref: "#/definitions/vlan"
+    delete:
+      tags:
+        - Network
+      summary: delete an existing vlan
+      description: delete an existing vlan
+      operationId: deleteNetworkNewvcesNewvceLInterfacesLInterfaceVlansVlan
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: vnf-id2
+          in: path
+          description: Unique id of VNF, can't use same attribute name right now until we promote this new object
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name given to the interface
+          required: true
+          type: string
+        - name: vlan-interface
+          in: path
+          description: String that identifies the interface
+          required: true
+          type: string
+        - name: resource-version
+          in: query
+          description: resource-version for concurrency
+          required: true
+          type: string
+  /network/newvces/newvce/{vnf-id2}/l-interfaces/l-interface/{interface-name}/vlans:
+    get:
+      tags:
+        - Network
+      summary: returns vlans
+      description: returns vlans
+      operationId: getNetworkNewvcesNewvceLInterfacesLInterfaceVlans
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "200":
+          description: successful operation
+          schema:
+              $ref: "#/definitions/vlans"
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: vnf-id2
+          in: path
+          description: Unique id of VNF, can't use same attribute name right now until we promote this new object
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name given to the interface
+          required: true
+          type: string
+        - name: vnf-name
+          in: query
+          description: Name of VNF.
+          required: false
+          type: string
+        - name: vnf-name2
+          in: query
+          description: Alternate name of VNF.
+          required: false
+          type: string
+        - name: vnf-type
+          in: query
+          description: String capturing type of vnf, that was intended to identify the ASDC resource.  This field has been overloaded in service-specific ways and clients should expect changes to occur in the future to this field as ECOMP matures.
+          required: false
+          type: string
+        - name: prov-status
+          in: query
+          description: Trigger for operational monitoring of this VNF by BAU Service Assurance systems.
+          required: false
+          type: string
+        - name: heat-stack-id
+          in: query
+          description: Heat stack id corresponding to this instance, managed by MSO
+          required: false
+          type: string
+        - name: interface-id
+          in: query
+          description: ID of interface
+          required: false
+          type: string
+        - name: macaddr
+          in: query
+          description: MAC address for the interface
+          required: false
+          type: string
+        - name: network-name
+          in: query
+          description: Name of the network
+          required: false
+          type: string
+  /network/newvces/newvce/{vnf-id2}/l-interfaces/l-interface/{interface-name}/sriov-vfs/sriov-vf/{pci-id}/relationship-list/relationship:
+    put:
+      tags:
+        - Network
+      summary: see node definition for valid relationships
+      operationId: createOrUpdateNetworkNewvcesNewvceLInterfacesLInterfaceSriovVfsSriovVfRelationshipListRelationship
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: vnf-id2
+          in: path
+          description: Unique id of VNF, can't use same attribute name right now until we promote this new object
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name given to the interface
+          required: true
+          type: string
+        - name: pci-id
+          in: path
+          description: PCI ID used to identify the sriov-vf
+          required: true
+          type: string
+        - name: body
+          in: body
+          description: relationship object that needs to be created or updated
+          required: true
+          schema:
+            $ref: "#/definitions/relationship"
+    delete:
+      tags:
+        - Network
+      summary: delete an existing relationship
+      description: delete an existing relationship
+      operationId: deleteNetworkNewvcesNewvceLInterfacesLInterfaceSriovVfsSriovVfRelationshipListRelationship
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: vnf-id2
+          in: path
+          description: Unique id of VNF, can't use same attribute name right now until we promote this new object
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name given to the interface
+          required: true
+          type: string
+        - name: pci-id
+          in: path
+          description: PCI ID used to identify the sriov-vf
+          required: true
+          type: string
+  /network/newvces/newvce/{vnf-id2}/l-interfaces/l-interface/{interface-name}/sriov-vfs/sriov-vf/{pci-id}:
+    get:
+      tags:
+        - Network
+      summary: returns sriov-vf
+      description: returns sriov-vf
+      operationId: getNetworkNewvcesNewvceLInterfacesLInterfaceSriovVfsSriovVf
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "200":
+          description: successful operation
+          schema:
+              $ref: "#/definitions/sriov-vf"
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: vnf-id2
+          in: path
+          description: Unique id of VNF, can't use same attribute name right now until we promote this new object
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name given to the interface
+          required: true
+          type: string
+        - name: pci-id
+          in: path
+          description: PCI ID used to identify the sriov-vf
+          required: true
+          type: string
+        - name: vnf-name
+          in: query
+          description: Name of VNF.
+          required: false
+          type: string
+        - name: vnf-name2
+          in: query
+          description: Alternate name of VNF.
+          required: false
+          type: string
+        - name: vnf-type
+          in: query
+          description: String capturing type of vnf, that was intended to identify the ASDC resource.  This field has been overloaded in service-specific ways and clients should expect changes to occur in the future to this field as ECOMP matures.
+          required: false
+          type: string
+        - name: prov-status
+          in: query
+          description: Trigger for operational monitoring of this VNF by BAU Service Assurance systems.
+          required: false
+          type: string
+        - name: heat-stack-id
+          in: query
+          description: Heat stack id corresponding to this instance, managed by MSO
+          required: false
+          type: string
+        - name: interface-id
+          in: query
+          description: ID of interface
+          required: false
+          type: string
+        - name: macaddr
+          in: query
+          description: MAC address for the interface
+          required: false
+          type: string
+        - name: network-name
+          in: query
+          description: Name of the network
+          required: false
+          type: string
+        - name: vf-vlan-filter
+          in: query
+          description: This metadata provides option to specify list of VLAN filters applied on VF to pass the traffic to VM.
+          required: false
+          type: string
+        - name: vf-mac-filter
+          in: query
+          description: When MAC filters are specified, VF-agent service configures VFs to do MAC level filtering before the traffic is passed to VM.
+          required: false
+          type: string
+        - name: vf-vlan-strip
+          in: query
+          description: When this field is set to true, VF will configured to strip the outer TAG before the traffic is passed to VM.
+          required: false
+          type: boolean
+        - name: neutron-network-id
+          in: query
+          description: Neutron network id of the interface
+          required: false
+          type: string
+    put:
+      tags:
+        - Network
+      summary: create or update an existing sriov-vf
+      description: create or update an existing sriov-vf
+      operationId: createOrUpdateNetworkNewvcesNewvceLInterfacesLInterfaceSriovVfsSriovVf
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: vnf-id2
+          in: path
+          description: Unique id of VNF, can't use same attribute name right now until we promote this new object
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name given to the interface
+          required: true
+          type: string
+        - name: pci-id
+          in: path
+          description: PCI ID used to identify the sriov-vf
+          required: true
+          type: string
+        - name: body
+          in: body
+          description: sriov-vf object that needs to be created or updated
+          required: true
+          schema:
+            $ref: "#/definitions/sriov-vf"
+    delete:
+      tags:
+        - Network
+      summary: delete an existing sriov-vf
+      description: delete an existing sriov-vf
+      operationId: deleteNetworkNewvcesNewvceLInterfacesLInterfaceSriovVfsSriovVf
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: vnf-id2
+          in: path
+          description: Unique id of VNF, can't use same attribute name right now until we promote this new object
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name given to the interface
+          required: true
+          type: string
+        - name: pci-id
+          in: path
+          description: PCI ID used to identify the sriov-vf
+          required: true
+          type: string
+        - name: resource-version
+          in: query
+          description: resource-version for concurrency
+          required: true
+          type: string
+  /network/newvces/newvce/{vnf-id2}/l-interfaces/l-interface/{interface-name}/sriov-vfs:
+    get:
+      tags:
+        - Network
+      summary: returns sriov-vfs
+      description: returns sriov-vfs
+      operationId: getNetworkNewvcesNewvceLInterfacesLInterfaceSriovVfs
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "200":
+          description: successful operation
+          schema:
+              $ref: "#/definitions/sriov-vfs"
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: vnf-id2
+          in: path
+          description: Unique id of VNF, can't use same attribute name right now until we promote this new object
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name given to the interface
+          required: true
+          type: string
+        - name: vnf-name
+          in: query
+          description: Name of VNF.
+          required: false
+          type: string
+        - name: vnf-name2
+          in: query
+          description: Alternate name of VNF.
+          required: false
+          type: string
+        - name: vnf-type
+          in: query
+          description: String capturing type of vnf, that was intended to identify the ASDC resource.  This field has been overloaded in service-specific ways and clients should expect changes to occur in the future to this field as ECOMP matures.
+          required: false
+          type: string
+        - name: prov-status
+          in: query
+          description: Trigger for operational monitoring of this VNF by BAU Service Assurance systems.
+          required: false
+          type: string
+        - name: heat-stack-id
+          in: query
+          description: Heat stack id corresponding to this instance, managed by MSO
+          required: false
+          type: string
+        - name: interface-id
+          in: query
+          description: ID of interface
+          required: false
+          type: string
+        - name: macaddr
+          in: query
+          description: MAC address for the interface
+          required: false
+          type: string
+        - name: network-name
+          in: query
+          description: Name of the network
+          required: false
+          type: string
+  /network/newvces/newvce/{vnf-id2}/l-interfaces/l-interface/{interface-name}/relationship-list/relationship:
+    put:
+      tags:
+        - Network
+      summary: see node definition for valid relationships
+      operationId: createOrUpdateNetworkNewvcesNewvceLInterfacesLInterfaceRelationshipListRelationship
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: vnf-id2
+          in: path
+          description: Unique id of VNF, can't use same attribute name right now until we promote this new object
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name given to the interface
+          required: true
+          type: string
+        - name: body
+          in: body
+          description: relationship object that needs to be created or updated
+          required: true
+          schema:
+            $ref: "#/definitions/relationship"
+    delete:
+      tags:
+        - Network
+      summary: delete an existing relationship
+      description: delete an existing relationship
+      operationId: deleteNetworkNewvcesNewvceLInterfacesLInterfaceRelationshipListRelationship
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: vnf-id2
+          in: path
+          description: Unique id of VNF, can't use same attribute name right now until we promote this new object
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name given to the interface
+          required: true
+          type: string
+  /network/newvces/newvce/{vnf-id2}/l-interfaces/l-interface/{interface-name}/l3-interface-ipv4-address-list/{l3-interface-ipv4-address}/relationship-list/relationship:
+    put:
+      tags:
+        - Network
+      summary: see node definition for valid relationships
+      operationId: createOrUpdateNetworkNewvcesNewvceLInterfacesLInterfaceL3InterfaceIpv4AddressListRelationshipListRelationship
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: vnf-id2
+          in: path
+          description: Unique id of VNF, can't use same attribute name right now until we promote this new object
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name given to the interface
+          required: true
+          type: string
+        - name: l3-interface-ipv4-address
+          in: path
+          description: IP address
+          required: true
+          type: string
+        - name: body
+          in: body
+          description: relationship object that needs to be created or updated
+          required: true
+          schema:
+            $ref: "#/definitions/relationship"
+    delete:
+      tags:
+        - Network
+      summary: delete an existing relationship
+      description: delete an existing relationship
+      operationId: deleteNetworkNewvcesNewvceLInterfacesLInterfaceL3InterfaceIpv4AddressListRelationshipListRelationship
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: vnf-id2
+          in: path
+          description: Unique id of VNF, can't use same attribute name right now until we promote this new object
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name given to the interface
+          required: true
+          type: string
+        - name: l3-interface-ipv4-address
+          in: path
+          description: IP address
+          required: true
+          type: string
+  /network/newvces/newvce/{vnf-id2}/l-interfaces/l-interface/{interface-name}/l3-interface-ipv4-address-list/{l3-interface-ipv4-address}:
+    get:
+      tags:
+        - Network
+      summary: returns l3-interface-ipv4-address-list
+      description: returns l3-interface-ipv4-address-list
+      operationId: getNetworkNewvcesNewvceLInterfacesLInterfaceL3InterfaceIpv4AddressList
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "200":
+          description: successful operation
+          schema:
+              $ref: "#/definitions/l3-interface-ipv4-address-list"
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: vnf-id2
+          in: path
+          description: Unique id of VNF, can't use same attribute name right now until we promote this new object
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name given to the interface
+          required: true
+          type: string
+        - name: l3-interface-ipv4-address
+          in: path
+          description: IP address
+          required: true
+          type: string
+        - name: vnf-name
+          in: query
+          description: Name of VNF.
+          required: false
+          type: string
+        - name: vnf-name2
+          in: query
+          description: Alternate name of VNF.
+          required: false
+          type: string
+        - name: vnf-type
+          in: query
+          description: String capturing type of vnf, that was intended to identify the ASDC resource.  This field has been overloaded in service-specific ways and clients should expect changes to occur in the future to this field as ECOMP matures.
+          required: false
+          type: string
+        - name: prov-status
+          in: query
+          description: Trigger for operational monitoring of this VNF by BAU Service Assurance systems.
+          required: false
+          type: string
+        - name: heat-stack-id
+          in: query
+          description: Heat stack id corresponding to this instance, managed by MSO
+          required: false
+          type: string
+        - name: interface-id
+          in: query
+          description: ID of interface
+          required: false
+          type: string
+        - name: macaddr
+          in: query
+          description: MAC address for the interface
+          required: false
+          type: string
+        - name: network-name
+          in: query
+          description: Name of the network
+          required: false
+          type: string
+        - name: vlan-id-inner
+          in: query
+          description: Inner VLAN tag
+          required: false
+          type: integer
+          format: int64
+        - name: neutron-network-id
+          in: query
+          description: Neutron network id of the interface that address belongs to
+          required: false
+          type: string
+        - name: neutron-subnet-id
+          in: query
+          description: Neutron id of subnet that address belongs to
+          required: false
+          type: string
+    put:
+      tags:
+        - Network
+      summary: create or update an existing l3-interface-ipv4-address-list
+      description: create or update an existing l3-interface-ipv4-address-list
+      operationId: createOrUpdateNetworkNewvcesNewvceLInterfacesLInterfaceL3InterfaceIpv4AddressList
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: vnf-id2
+          in: path
+          description: Unique id of VNF, can't use same attribute name right now until we promote this new object
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name given to the interface
+          required: true
+          type: string
+        - name: l3-interface-ipv4-address
+          in: path
+          description: IP address
+          required: true
+          type: string
+        - name: body
+          in: body
+          description: l3-interface-ipv4-address-list object that needs to be created or updated
+          required: true
+          schema:
+            $ref: "#/definitions/l3-interface-ipv4-address-list"
+    delete:
+      tags:
+        - Network
+      summary: delete an existing l3-interface-ipv4-address-list
+      description: delete an existing l3-interface-ipv4-address-list
+      operationId: deleteNetworkNewvcesNewvceLInterfacesLInterfaceL3InterfaceIpv4AddressList
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: vnf-id2
+          in: path
+          description: Unique id of VNF, can't use same attribute name right now until we promote this new object
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name given to the interface
+          required: true
+          type: string
+        - name: l3-interface-ipv4-address
+          in: path
+          description: IP address
+          required: true
+          type: string
+        - name: resource-version
+          in: query
+          description: resource-version for concurrency
+          required: true
+          type: string
+  /network/newvces/newvce/{vnf-id2}/l-interfaces/l-interface/{interface-name}/l3-interface-ipv6-address-list/{l3-interface-ipv6-address}/relationship-list/relationship:
+    put:
+      tags:
+        - Network
+      summary: see node definition for valid relationships
+      operationId: createOrUpdateNetworkNewvcesNewvceLInterfacesLInterfaceL3InterfaceIpv6AddressListRelationshipListRelationship
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: vnf-id2
+          in: path
+          description: Unique id of VNF, can't use same attribute name right now until we promote this new object
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name given to the interface
+          required: true
+          type: string
+        - name: l3-interface-ipv6-address
+          in: path
+          description: IP address
+          required: true
+          type: string
+        - name: body
+          in: body
+          description: relationship object that needs to be created or updated
+          required: true
+          schema:
+            $ref: "#/definitions/relationship"
+    delete:
+      tags:
+        - Network
+      summary: delete an existing relationship
+      description: delete an existing relationship
+      operationId: deleteNetworkNewvcesNewvceLInterfacesLInterfaceL3InterfaceIpv6AddressListRelationshipListRelationship
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: vnf-id2
+          in: path
+          description: Unique id of VNF, can't use same attribute name right now until we promote this new object
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name given to the interface
+          required: true
+          type: string
+        - name: l3-interface-ipv6-address
+          in: path
+          description: IP address
+          required: true
+          type: string
+  /network/newvces/newvce/{vnf-id2}/l-interfaces/l-interface/{interface-name}/l3-interface-ipv6-address-list/{l3-interface-ipv6-address}:
+    get:
+      tags:
+        - Network
+      summary: returns l3-interface-ipv6-address-list
+      description: returns l3-interface-ipv6-address-list
+      operationId: getNetworkNewvcesNewvceLInterfacesLInterfaceL3InterfaceIpv6AddressList
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "200":
+          description: successful operation
+          schema:
+              $ref: "#/definitions/l3-interface-ipv6-address-list"
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: vnf-id2
+          in: path
+          description: Unique id of VNF, can't use same attribute name right now until we promote this new object
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name given to the interface
+          required: true
+          type: string
+        - name: l3-interface-ipv6-address
+          in: path
+          description: IP address
+          required: true
+          type: string
+        - name: vnf-name
+          in: query
+          description: Name of VNF.
+          required: false
+          type: string
+        - name: vnf-name2
+          in: query
+          description: Alternate name of VNF.
+          required: false
+          type: string
+        - name: vnf-type
+          in: query
+          description: String capturing type of vnf, that was intended to identify the ASDC resource.  This field has been overloaded in service-specific ways and clients should expect changes to occur in the future to this field as ECOMP matures.
+          required: false
+          type: string
+        - name: prov-status
+          in: query
+          description: Trigger for operational monitoring of this VNF by BAU Service Assurance systems.
+          required: false
+          type: string
+        - name: heat-stack-id
+          in: query
+          description: Heat stack id corresponding to this instance, managed by MSO
+          required: false
+          type: string
+        - name: interface-id
+          in: query
+          description: ID of interface
+          required: false
+          type: string
+        - name: macaddr
+          in: query
+          description: MAC address for the interface
+          required: false
+          type: string
+        - name: network-name
+          in: query
+          description: Name of the network
+          required: false
+          type: string
+        - name: vlan-id-inner
+          in: query
+          description: Inner VLAN tag
+          required: false
+          type: integer
+          format: int64
+        - name: neutron-network-id
+          in: query
+          description: Neutron network id of the interface that address belongs to
+          required: false
+          type: string
+        - name: neutron-subnet-id
+          in: query
+          description: Neutron id of subnet that address belongs to
+          required: false
+          type: string
+    put:
+      tags:
+        - Network
+      summary: create or update an existing l3-interface-ipv6-address-list
+      description: create or update an existing l3-interface-ipv6-address-list
+      operationId: createOrUpdateNetworkNewvcesNewvceLInterfacesLInterfaceL3InterfaceIpv6AddressList
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: vnf-id2
+          in: path
+          description: Unique id of VNF, can't use same attribute name right now until we promote this new object
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name given to the interface
+          required: true
+          type: string
+        - name: l3-interface-ipv6-address
+          in: path
+          description: IP address
+          required: true
+          type: string
+        - name: body
+          in: body
+          description: l3-interface-ipv6-address-list object that needs to be created or updated
+          required: true
+          schema:
+            $ref: "#/definitions/l3-interface-ipv6-address-list"
+    delete:
+      tags:
+        - Network
+      summary: delete an existing l3-interface-ipv6-address-list
+      description: delete an existing l3-interface-ipv6-address-list
+      operationId: deleteNetworkNewvcesNewvceLInterfacesLInterfaceL3InterfaceIpv6AddressList
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: vnf-id2
+          in: path
+          description: Unique id of VNF, can't use same attribute name right now until we promote this new object
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name given to the interface
+          required: true
+          type: string
+        - name: l3-interface-ipv6-address
+          in: path
+          description: IP address
+          required: true
+          type: string
+        - name: resource-version
+          in: query
+          description: resource-version for concurrency
+          required: true
+          type: string
+  /network/newvces/newvce/{vnf-id2}/l-interfaces/l-interface/{interface-name}:
+    get:
+      tags:
+        - Network
+      summary: returns l-interface
+      description: returns l-interface
+      operationId: getNetworkNewvcesNewvceLInterfacesLInterface
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "200":
+          description: successful operation
+          schema:
+              $ref: "#/definitions/l-interface"
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: vnf-id2
+          in: path
+          description: Unique id of VNF, can't use same attribute name right now until we promote this new object
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name given to the interface
+          required: true
+          type: string
+        - name: vnf-name
+          in: query
+          description: Name of VNF.
+          required: false
+          type: string
+        - name: vnf-name2
+          in: query
+          description: Alternate name of VNF.
+          required: false
+          type: string
+        - name: vnf-type
+          in: query
+          description: String capturing type of vnf, that was intended to identify the ASDC resource.  This field has been overloaded in service-specific ways and clients should expect changes to occur in the future to this field as ECOMP matures.
+          required: false
+          type: string
+        - name: prov-status
+          in: query
+          description: Trigger for operational monitoring of this VNF by BAU Service Assurance systems.
+          required: false
+          type: string
+        - name: heat-stack-id
+          in: query
+          description: Heat stack id corresponding to this instance, managed by MSO
+          required: false
+          type: string
+        - name: interface-id
+          in: query
+          description: ID of interface
+          required: false
+          type: string
+        - name: macaddr
+          in: query
+          description: MAC address for the interface
+          required: false
+          type: string
+        - name: network-name
+          in: query
+          description: Name of the network
+          required: false
+          type: string
+    put:
+      tags:
+        - Network
+      summary: create or update an existing l-interface
+      description: create or update an existing l-interface
+      operationId: createOrUpdateNetworkNewvcesNewvceLInterfacesLInterface
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: vnf-id2
+          in: path
+          description: Unique id of VNF, can't use same attribute name right now until we promote this new object
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name given to the interface
+          required: true
+          type: string
+        - name: body
+          in: body
+          description: l-interface object that needs to be created or updated
+          required: true
+          schema:
+            $ref: "#/definitions/l-interface"
+    delete:
+      tags:
+        - Network
+      summary: delete an existing l-interface
+      description: delete an existing l-interface
+      operationId: deleteNetworkNewvcesNewvceLInterfacesLInterface
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: vnf-id2
+          in: path
+          description: Unique id of VNF, can't use same attribute name right now until we promote this new object
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name given to the interface
+          required: true
+          type: string
+        - name: resource-version
+          in: query
+          description: resource-version for concurrency
+          required: true
+          type: string
+  /network/newvces/newvce/{vnf-id2}/l-interfaces:
+    get:
+      tags:
+        - Network
+      summary: returns l-interfaces
+      description: returns l-interfaces
+      operationId: getNetworkNewvcesNewvceLInterfaces
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "200":
+          description: successful operation
+          schema:
+              $ref: "#/definitions/l-interfaces"
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: vnf-id2
+          in: path
+          description: Unique id of VNF, can't use same attribute name right now until we promote this new object
+          required: true
+          type: string
+        - name: vnf-name
+          in: query
+          description: Name of VNF.
+          required: false
+          type: string
+        - name: vnf-name2
+          in: query
+          description: Alternate name of VNF.
+          required: false
+          type: string
+        - name: vnf-type
+          in: query
+          description: String capturing type of vnf, that was intended to identify the ASDC resource.  This field has been overloaded in service-specific ways and clients should expect changes to occur in the future to this field as ECOMP matures.
+          required: false
+          type: string
+        - name: prov-status
+          in: query
+          description: Trigger for operational monitoring of this VNF by BAU Service Assurance systems.
+          required: false
+          type: string
+        - name: heat-stack-id
+          in: query
+          description: Heat stack id corresponding to this instance, managed by MSO
+          required: false
+          type: string
+  /network/newvces/newvce/{vnf-id2}:
+    get:
+      tags:
+        - Network
+      summary: returns newvce
+      description: returns newvce
+      operationId: getNetworkNewvcesNewvce
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "200":
+          description: successful operation
+          schema:
+              $ref: "#/definitions/newvce"
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: vnf-id2
+          in: path
+          description: Unique id of VNF, can't use same attribute name right now until we promote this new object
+          required: true
+          type: string
+        - name: vnf-name
+          in: query
+          description: Name of VNF.
+          required: false
+          type: string
+        - name: vnf-name2
+          in: query
+          description: Alternate name of VNF.
+          required: false
+          type: string
+        - name: vnf-type
+          in: query
+          description: String capturing type of vnf, that was intended to identify the ASDC resource.  This field has been overloaded in service-specific ways and clients should expect changes to occur in the future to this field as ECOMP matures.
+          required: false
+          type: string
+        - name: prov-status
+          in: query
+          description: Trigger for operational monitoring of this VNF by BAU Service Assurance systems.
+          required: false
+          type: string
+        - name: heat-stack-id
+          in: query
+          description: Heat stack id corresponding to this instance, managed by MSO
+          required: false
+          type: string
+    put:
+      tags:
+        - Network
+      summary: create or update an existing newvce
+      description: create or update an existing newvce
+      operationId: createOrUpdateNetworkNewvcesNewvce
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: vnf-id2
+          in: path
+          description: Unique id of VNF, can't use same attribute name right now until we promote this new object
+          required: true
+          type: string
+        - name: body
+          in: body
+          description: newvce object that needs to be created or updated
+          required: true
+          schema:
+            $ref: "#/definitions/newvce"
+    delete:
+      tags:
+        - Network
+      summary: delete an existing newvce
+      description: delete an existing newvce
+      operationId: deleteNetworkNewvcesNewvce
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: vnf-id2
+          in: path
+          description: Unique id of VNF, can't use same attribute name right now until we promote this new object
+          required: true
+          type: string
+        - name: resource-version
+          in: query
+          description: resource-version for concurrency
+          required: true
+          type: string
+  /network/newvces:
+    get:
+      tags:
+        - Network
+      summary: returns newvces
+      description: returns newvces
+      operationId: getNetworkNewvces
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "200":
+          description: successful operation
+          schema:
+              $ref: "#/definitions/newvces"
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+  /network/pnfs/pnf/{pnf-name}/relationship-list/relationship:
+    put:
+      tags:
+        - Network
+      summary: see node definition for valid relationships
+      operationId: createOrUpdateNetworkPnfsPnfRelationshipListRelationship
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: pnf-name
+          in: path
+          description: unique name of Physical Network Function.
+          required: true
+          type: string
+        - name: body
+          in: body
+          description: relationship object that needs to be created or updated
+          required: true
+          schema:
+            $ref: "#/definitions/relationship"
+    delete:
+      tags:
+        - Network
+      summary: delete an existing relationship
+      description: delete an existing relationship
+      operationId: deleteNetworkPnfsPnfRelationshipListRelationship
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: pnf-name
+          in: path
+          description: unique name of Physical Network Function.
+          required: true
+          type: string
+  /network/pnfs/pnf/{pnf-name}/p-interfaces/p-interface/{interface-name}/relationship-list/relationship:
+    put:
+      tags:
+        - Network
+      summary: see node definition for valid relationships
+      operationId: createOrUpdateNetworkPnfsPnfPInterfacesPInterfaceRelationshipListRelationship
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: pnf-name
+          in: path
+          description: unique name of Physical Network Function.
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name that identifies the physical interface
+          required: true
+          type: string
+        - name: body
+          in: body
+          description: relationship object that needs to be created or updated
+          required: true
+          schema:
+            $ref: "#/definitions/relationship"
+    delete:
+      tags:
+        - Network
+      summary: delete an existing relationship
+      description: delete an existing relationship
+      operationId: deleteNetworkPnfsPnfPInterfacesPInterfaceRelationshipListRelationship
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: pnf-name
+          in: path
+          description: unique name of Physical Network Function.
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name that identifies the physical interface
+          required: true
+          type: string
+  /network/pnfs/pnf/{pnf-name}/p-interfaces/p-interface/{interface-name}/sriov-pfs/sriov-pf/{pf-pci-id}/relationship-list/relationship:
+    put:
+      tags:
+        - Network
+      summary: see node definition for valid relationships
+      operationId: createOrUpdateNetworkPnfsPnfPInterfacesPInterfaceSriovPfsSriovPfRelationshipListRelationship
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: pnf-name
+          in: path
+          description: unique name of Physical Network Function.
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name that identifies the physical interface
+          required: true
+          type: string
+        - name: pf-pci-id
+          in: path
+          description: Identifier for the sriov-pf
+          required: true
+          type: string
+        - name: body
+          in: body
+          description: relationship object that needs to be created or updated
+          required: true
+          schema:
+            $ref: "#/definitions/relationship"
+    delete:
+      tags:
+        - Network
+      summary: delete an existing relationship
+      description: delete an existing relationship
+      operationId: deleteNetworkPnfsPnfPInterfacesPInterfaceSriovPfsSriovPfRelationshipListRelationship
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: pnf-name
+          in: path
+          description: unique name of Physical Network Function.
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name that identifies the physical interface
+          required: true
+          type: string
+        - name: pf-pci-id
+          in: path
+          description: Identifier for the sriov-pf
+          required: true
+          type: string
+  /network/pnfs/pnf/{pnf-name}/p-interfaces/p-interface/{interface-name}/sriov-pfs/sriov-pf/{pf-pci-id}:
+    get:
+      tags:
+        - Network
+      summary: returns sriov-pf
+      description: returns sriov-pf
+      operationId: getNetworkPnfsPnfPInterfacesPInterfaceSriovPfsSriovPf
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "200":
+          description: successful operation
+          schema:
+              $ref: "#/definitions/sriov-pf"
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: pnf-name
+          in: path
+          description: unique name of Physical Network Function.
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name that identifies the physical interface
+          required: true
+          type: string
+        - name: pf-pci-id
+          in: path
+          description: Identifier for the sriov-pf
+          required: true
+          type: string
+        - name: inv-status
+          in: query
+          description: CANOPI's inventory status.  Only set with values exactly as defined by CANOPI.
+          required: false
+          type: string
+        - name: prov-status
+          in: query
+          description: Trigger for operational monitoring of this resource by Service Assurance systems.
+          required: false
+          type: string
+    put:
+      tags:
+        - Network
+      summary: create or update an existing sriov-pf
+      description: create or update an existing sriov-pf
+      operationId: createOrUpdateNetworkPnfsPnfPInterfacesPInterfaceSriovPfsSriovPf
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: pnf-name
+          in: path
+          description: unique name of Physical Network Function.
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name that identifies the physical interface
+          required: true
+          type: string
+        - name: pf-pci-id
+          in: path
+          description: Identifier for the sriov-pf
+          required: true
+          type: string
+        - name: body
+          in: body
+          description: sriov-pf object that needs to be created or updated
+          required: true
+          schema:
+            $ref: "#/definitions/sriov-pf"
+    delete:
+      tags:
+        - Network
+      summary: delete an existing sriov-pf
+      description: delete an existing sriov-pf
+      operationId: deleteNetworkPnfsPnfPInterfacesPInterfaceSriovPfsSriovPf
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: pnf-name
+          in: path
+          description: unique name of Physical Network Function.
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name that identifies the physical interface
+          required: true
+          type: string
+        - name: pf-pci-id
+          in: path
+          description: Identifier for the sriov-pf
+          required: true
+          type: string
+        - name: resource-version
+          in: query
+          description: resource-version for concurrency
+          required: true
+          type: string
+  /network/pnfs/pnf/{pnf-name}/p-interfaces/p-interface/{interface-name}/sriov-pfs:
+    get:
+      tags:
+        - Network
+      summary: returns sriov-pfs
+      description: returns sriov-pfs
+      operationId: getNetworkPnfsPnfPInterfacesPInterfaceSriovPfs
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "200":
+          description: successful operation
+          schema:
+              $ref: "#/definitions/sriov-pfs"
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: pnf-name
+          in: path
+          description: unique name of Physical Network Function.
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name that identifies the physical interface
+          required: true
+          type: string
+        - name: inv-status
+          in: query
+          description: CANOPI's inventory status.  Only set with values exactly as defined by CANOPI.
+          required: false
+          type: string
+        - name: prov-status
+          in: query
+          description: Trigger for operational monitoring of this resource by Service Assurance systems.
+          required: false
+          type: string
+  /network/pnfs/pnf/{pnf-name}/p-interfaces/p-interface/{interface-name}/l-interfaces/l-interface/{interface-name}/vlans/vlan/{vlan-interface}/relationship-list/relationship:
+    put:
+      tags:
+        - Network
+      summary: see node definition for valid relationships
+      operationId: createOrUpdateNetworkPnfsPnfPInterfacesPInterfaceLInterfacesLInterfaceVlansVlanRelationshipListRelationship
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: pnf-name
+          in: path
+          description: unique name of Physical Network Function.
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name that identifies the physical interface
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name given to the interface
+          required: true
+          type: string
+        - name: vlan-interface
+          in: path
+          description: String that identifies the interface
+          required: true
+          type: string
+        - name: body
+          in: body
+          description: relationship object that needs to be created or updated
+          required: true
+          schema:
+            $ref: "#/definitions/relationship"
+    delete:
+      tags:
+        - Network
+      summary: delete an existing relationship
+      description: delete an existing relationship
+      operationId: deleteNetworkPnfsPnfPInterfacesPInterfaceLInterfacesLInterfaceVlansVlanRelationshipListRelationship
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: pnf-name
+          in: path
+          description: unique name of Physical Network Function.
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name that identifies the physical interface
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name given to the interface
+          required: true
+          type: string
+        - name: vlan-interface
+          in: path
+          description: String that identifies the interface
+          required: true
+          type: string
+  /network/pnfs/pnf/{pnf-name}/p-interfaces/p-interface/{interface-name}/l-interfaces/l-interface/{interface-name}/vlans/vlan/{vlan-interface}/l3-interface-ipv4-address-list/{l3-interface-ipv4-address}/relationship-list/relationship:
+    put:
+      tags:
+        - Network
+      summary: see node definition for valid relationships
+      operationId: createOrUpdateNetworkPnfsPnfPInterfacesPInterfaceLInterfacesLInterfaceVlansVlanL3InterfaceIpv4AddressListRelationshipListRelationship
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: pnf-name
+          in: path
+          description: unique name of Physical Network Function.
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name that identifies the physical interface
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name given to the interface
+          required: true
+          type: string
+        - name: vlan-interface
+          in: path
+          description: String that identifies the interface
+          required: true
+          type: string
+        - name: l3-interface-ipv4-address
+          in: path
+          description: IP address
+          required: true
+          type: string
+        - name: body
+          in: body
+          description: relationship object that needs to be created or updated
+          required: true
+          schema:
+            $ref: "#/definitions/relationship"
+    delete:
+      tags:
+        - Network
+      summary: delete an existing relationship
+      description: delete an existing relationship
+      operationId: deleteNetworkPnfsPnfPInterfacesPInterfaceLInterfacesLInterfaceVlansVlanL3InterfaceIpv4AddressListRelationshipListRelationship
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: pnf-name
+          in: path
+          description: unique name of Physical Network Function.
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name that identifies the physical interface
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name given to the interface
+          required: true
+          type: string
+        - name: vlan-interface
+          in: path
+          description: String that identifies the interface
+          required: true
+          type: string
+        - name: l3-interface-ipv4-address
+          in: path
+          description: IP address
+          required: true
+          type: string
+  /network/pnfs/pnf/{pnf-name}/p-interfaces/p-interface/{interface-name}/l-interfaces/l-interface/{interface-name}/vlans/vlan/{vlan-interface}/l3-interface-ipv4-address-list/{l3-interface-ipv4-address}:
+    get:
+      tags:
+        - Network
+      summary: returns l3-interface-ipv4-address-list
+      description: returns l3-interface-ipv4-address-list
+      operationId: getNetworkPnfsPnfPInterfacesPInterfaceLInterfacesLInterfaceVlansVlanL3InterfaceIpv4AddressList
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "200":
+          description: successful operation
+          schema:
+              $ref: "#/definitions/l3-interface-ipv4-address-list"
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: pnf-name
+          in: path
+          description: unique name of Physical Network Function.
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name that identifies the physical interface
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name given to the interface
+          required: true
+          type: string
+        - name: vlan-interface
+          in: path
+          description: String that identifies the interface
+          required: true
+          type: string
+        - name: l3-interface-ipv4-address
+          in: path
+          description: IP address
+          required: true
+          type: string
+        - name: inv-status
+          in: query
+          description: CANOPI's inventory status.  Only set with values exactly as defined by CANOPI.
+          required: false
+          type: string
+        - name: prov-status
+          in: query
+          description: Trigger for operational monitoring of this resource by Service Assurance systems.
+          required: false
+          type: string
+        - name: interface-id
+          in: query
+          description: ID of interface
+          required: false
+          type: string
+        - name: macaddr
+          in: query
+          description: MAC address for the interface
+          required: false
+          type: string
+        - name: network-name
+          in: query
+          description: Name of the network
+          required: false
+          type: string
+        - name: vlan-id-inner
+          in: query
+          description: Inner VLAN tag
+          required: false
+          type: integer
+          format: int64
+        - name: vpn-key
+          in: query
+          description: This indicates the customers VPN ID associated with this vlan
+          required: false
+          type: string
+        - name: vlan-id-inner
+          in: query
+          description: Inner VLAN tag
+          required: false
+          type: integer
+          format: int64
+        - name: neutron-network-id
+          in: query
+          description: Neutron network id of the interface that address belongs to
+          required: false
+          type: string
+        - name: neutron-subnet-id
+          in: query
+          description: Neutron id of subnet that address belongs to
+          required: false
+          type: string
+    put:
+      tags:
+        - Network
+      summary: create or update an existing l3-interface-ipv4-address-list
+      description: create or update an existing l3-interface-ipv4-address-list
+      operationId: createOrUpdateNetworkPnfsPnfPInterfacesPInterfaceLInterfacesLInterfaceVlansVlanL3InterfaceIpv4AddressList
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: pnf-name
+          in: path
+          description: unique name of Physical Network Function.
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name that identifies the physical interface
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name given to the interface
+          required: true
+          type: string
+        - name: vlan-interface
+          in: path
+          description: String that identifies the interface
+          required: true
+          type: string
+        - name: l3-interface-ipv4-address
+          in: path
+          description: IP address
+          required: true
+          type: string
+        - name: body
+          in: body
+          description: l3-interface-ipv4-address-list object that needs to be created or updated
+          required: true
+          schema:
+            $ref: "#/definitions/l3-interface-ipv4-address-list"
+    delete:
+      tags:
+        - Network
+      summary: delete an existing l3-interface-ipv4-address-list
+      description: delete an existing l3-interface-ipv4-address-list
+      operationId: deleteNetworkPnfsPnfPInterfacesPInterfaceLInterfacesLInterfaceVlansVlanL3InterfaceIpv4AddressList
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: pnf-name
+          in: path
+          description: unique name of Physical Network Function.
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name that identifies the physical interface
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name given to the interface
+          required: true
+          type: string
+        - name: vlan-interface
+          in: path
+          description: String that identifies the interface
+          required: true
+          type: string
+        - name: l3-interface-ipv4-address
+          in: path
+          description: IP address
+          required: true
+          type: string
+        - name: resource-version
+          in: query
+          description: resource-version for concurrency
+          required: true
+          type: string
+  /network/pnfs/pnf/{pnf-name}/p-interfaces/p-interface/{interface-name}/l-interfaces/l-interface/{interface-name}/vlans/vlan/{vlan-interface}/l3-interface-ipv6-address-list/{l3-interface-ipv6-address}/relationship-list/relationship:
+    put:
+      tags:
+        - Network
+      summary: see node definition for valid relationships
+      operationId: createOrUpdateNetworkPnfsPnfPInterfacesPInterfaceLInterfacesLInterfaceVlansVlanL3InterfaceIpv6AddressListRelationshipListRelationship
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: pnf-name
+          in: path
+          description: unique name of Physical Network Function.
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name that identifies the physical interface
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name given to the interface
+          required: true
+          type: string
+        - name: vlan-interface
+          in: path
+          description: String that identifies the interface
+          required: true
+          type: string
+        - name: l3-interface-ipv6-address
+          in: path
+          description: IP address
+          required: true
+          type: string
+        - name: body
+          in: body
+          description: relationship object that needs to be created or updated
+          required: true
+          schema:
+            $ref: "#/definitions/relationship"
+    delete:
+      tags:
+        - Network
+      summary: delete an existing relationship
+      description: delete an existing relationship
+      operationId: deleteNetworkPnfsPnfPInterfacesPInterfaceLInterfacesLInterfaceVlansVlanL3InterfaceIpv6AddressListRelationshipListRelationship
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: pnf-name
+          in: path
+          description: unique name of Physical Network Function.
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name that identifies the physical interface
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name given to the interface
+          required: true
+          type: string
+        - name: vlan-interface
+          in: path
+          description: String that identifies the interface
+          required: true
+          type: string
+        - name: l3-interface-ipv6-address
+          in: path
+          description: IP address
+          required: true
+          type: string
+  /network/pnfs/pnf/{pnf-name}/p-interfaces/p-interface/{interface-name}/l-interfaces/l-interface/{interface-name}/vlans/vlan/{vlan-interface}/l3-interface-ipv6-address-list/{l3-interface-ipv6-address}:
+    get:
+      tags:
+        - Network
+      summary: returns l3-interface-ipv6-address-list
+      description: returns l3-interface-ipv6-address-list
+      operationId: getNetworkPnfsPnfPInterfacesPInterfaceLInterfacesLInterfaceVlansVlanL3InterfaceIpv6AddressList
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "200":
+          description: successful operation
+          schema:
+              $ref: "#/definitions/l3-interface-ipv6-address-list"
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: pnf-name
+          in: path
+          description: unique name of Physical Network Function.
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name that identifies the physical interface
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name given to the interface
+          required: true
+          type: string
+        - name: vlan-interface
+          in: path
+          description: String that identifies the interface
+          required: true
+          type: string
+        - name: l3-interface-ipv6-address
+          in: path
+          description: IP address
+          required: true
+          type: string
+        - name: inv-status
+          in: query
+          description: CANOPI's inventory status.  Only set with values exactly as defined by CANOPI.
+          required: false
+          type: string
+        - name: prov-status
+          in: query
+          description: Trigger for operational monitoring of this resource by Service Assurance systems.
+          required: false
+          type: string
+        - name: interface-id
+          in: query
+          description: ID of interface
+          required: false
+          type: string
+        - name: macaddr
+          in: query
+          description: MAC address for the interface
+          required: false
+          type: string
+        - name: network-name
+          in: query
+          description: Name of the network
+          required: false
+          type: string
+        - name: vlan-id-inner
+          in: query
+          description: Inner VLAN tag
+          required: false
+          type: integer
+          format: int64
+        - name: vpn-key
+          in: query
+          description: This indicates the customers VPN ID associated with this vlan
+          required: false
+          type: string
+        - name: vlan-id-inner
+          in: query
+          description: Inner VLAN tag
+          required: false
+          type: integer
+          format: int64
+        - name: neutron-network-id
+          in: query
+          description: Neutron network id of the interface that address belongs to
+          required: false
+          type: string
+        - name: neutron-subnet-id
+          in: query
+          description: Neutron id of subnet that address belongs to
+          required: false
+          type: string
+    put:
+      tags:
+        - Network
+      summary: create or update an existing l3-interface-ipv6-address-list
+      description: create or update an existing l3-interface-ipv6-address-list
+      operationId: createOrUpdateNetworkPnfsPnfPInterfacesPInterfaceLInterfacesLInterfaceVlansVlanL3InterfaceIpv6AddressList
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: pnf-name
+          in: path
+          description: unique name of Physical Network Function.
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name that identifies the physical interface
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name given to the interface
+          required: true
+          type: string
+        - name: vlan-interface
+          in: path
+          description: String that identifies the interface
+          required: true
+          type: string
+        - name: l3-interface-ipv6-address
+          in: path
+          description: IP address
+          required: true
+          type: string
+        - name: body
+          in: body
+          description: l3-interface-ipv6-address-list object that needs to be created or updated
+          required: true
+          schema:
+            $ref: "#/definitions/l3-interface-ipv6-address-list"
+    delete:
+      tags:
+        - Network
+      summary: delete an existing l3-interface-ipv6-address-list
+      description: delete an existing l3-interface-ipv6-address-list
+      operationId: deleteNetworkPnfsPnfPInterfacesPInterfaceLInterfacesLInterfaceVlansVlanL3InterfaceIpv6AddressList
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: pnf-name
+          in: path
+          description: unique name of Physical Network Function.
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name that identifies the physical interface
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name given to the interface
+          required: true
+          type: string
+        - name: vlan-interface
+          in: path
+          description: String that identifies the interface
+          required: true
+          type: string
+        - name: l3-interface-ipv6-address
+          in: path
+          description: IP address
+          required: true
+          type: string
+        - name: resource-version
+          in: query
+          description: resource-version for concurrency
+          required: true
+          type: string
+  /network/pnfs/pnf/{pnf-name}/p-interfaces/p-interface/{interface-name}/l-interfaces/l-interface/{interface-name}/vlans/vlan/{vlan-interface}:
+    get:
+      tags:
+        - Network
+      summary: returns vlan
+      description: returns vlan
+      operationId: getNetworkPnfsPnfPInterfacesPInterfaceLInterfacesLInterfaceVlansVlan
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "200":
+          description: successful operation
+          schema:
+              $ref: "#/definitions/vlan"
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: pnf-name
+          in: path
+          description: unique name of Physical Network Function.
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name that identifies the physical interface
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name given to the interface
+          required: true
+          type: string
+        - name: vlan-interface
+          in: path
+          description: String that identifies the interface
+          required: true
+          type: string
+        - name: inv-status
+          in: query
+          description: CANOPI's inventory status.  Only set with values exactly as defined by CANOPI.
+          required: false
+          type: string
+        - name: prov-status
+          in: query
+          description: Trigger for operational monitoring of this resource by Service Assurance systems.
+          required: false
+          type: string
+        - name: interface-id
+          in: query
+          description: ID of interface
+          required: false
+          type: string
+        - name: macaddr
+          in: query
+          description: MAC address for the interface
+          required: false
+          type: string
+        - name: network-name
+          in: query
+          description: Name of the network
+          required: false
+          type: string
+        - name: vlan-id-inner
+          in: query
+          description: Inner VLAN tag
+          required: false
+          type: integer
+          format: int64
+        - name: vpn-key
+          in: query
+          description: This indicates the customers VPN ID associated with this vlan
+          required: false
+          type: string
+    put:
+      tags:
+        - Network
+      summary: create or update an existing vlan
+      description: create or update an existing vlan
+      operationId: createOrUpdateNetworkPnfsPnfPInterfacesPInterfaceLInterfacesLInterfaceVlansVlan
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: pnf-name
+          in: path
+          description: unique name of Physical Network Function.
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name that identifies the physical interface
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name given to the interface
+          required: true
+          type: string
+        - name: vlan-interface
+          in: path
+          description: String that identifies the interface
+          required: true
+          type: string
+        - name: body
+          in: body
+          description: vlan object that needs to be created or updated
+          required: true
+          schema:
+            $ref: "#/definitions/vlan"
+    delete:
+      tags:
+        - Network
+      summary: delete an existing vlan
+      description: delete an existing vlan
+      operationId: deleteNetworkPnfsPnfPInterfacesPInterfaceLInterfacesLInterfaceVlansVlan
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: pnf-name
+          in: path
+          description: unique name of Physical Network Function.
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name that identifies the physical interface
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name given to the interface
+          required: true
+          type: string
+        - name: vlan-interface
+          in: path
+          description: String that identifies the interface
+          required: true
+          type: string
+        - name: resource-version
+          in: query
+          description: resource-version for concurrency
+          required: true
+          type: string
+  /network/pnfs/pnf/{pnf-name}/p-interfaces/p-interface/{interface-name}/l-interfaces/l-interface/{interface-name}/vlans:
+    get:
+      tags:
+        - Network
+      summary: returns vlans
+      description: returns vlans
+      operationId: getNetworkPnfsPnfPInterfacesPInterfaceLInterfacesLInterfaceVlans
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "200":
+          description: successful operation
+          schema:
+              $ref: "#/definitions/vlans"
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: pnf-name
+          in: path
+          description: unique name of Physical Network Function.
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name that identifies the physical interface
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name given to the interface
+          required: true
+          type: string
+        - name: inv-status
+          in: query
+          description: CANOPI's inventory status.  Only set with values exactly as defined by CANOPI.
+          required: false
+          type: string
+        - name: prov-status
+          in: query
+          description: Trigger for operational monitoring of this resource by Service Assurance systems.
+          required: false
+          type: string
+        - name: interface-id
+          in: query
+          description: ID of interface
+          required: false
+          type: string
+        - name: macaddr
+          in: query
+          description: MAC address for the interface
+          required: false
+          type: string
+        - name: network-name
+          in: query
+          description: Name of the network
+          required: false
+          type: string
+  /network/pnfs/pnf/{pnf-name}/p-interfaces/p-interface/{interface-name}/l-interfaces/l-interface/{interface-name}/sriov-vfs/sriov-vf/{pci-id}/relationship-list/relationship:
+    put:
+      tags:
+        - Network
+      summary: see node definition for valid relationships
+      operationId: createOrUpdateNetworkPnfsPnfPInterfacesPInterfaceLInterfacesLInterfaceSriovVfsSriovVfRelationshipListRelationship
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: pnf-name
+          in: path
+          description: unique name of Physical Network Function.
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name that identifies the physical interface
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name given to the interface
+          required: true
+          type: string
+        - name: pci-id
+          in: path
+          description: PCI ID used to identify the sriov-vf
+          required: true
+          type: string
+        - name: body
+          in: body
+          description: relationship object that needs to be created or updated
+          required: true
+          schema:
+            $ref: "#/definitions/relationship"
+    delete:
+      tags:
+        - Network
+      summary: delete an existing relationship
+      description: delete an existing relationship
+      operationId: deleteNetworkPnfsPnfPInterfacesPInterfaceLInterfacesLInterfaceSriovVfsSriovVfRelationshipListRelationship
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: pnf-name
+          in: path
+          description: unique name of Physical Network Function.
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name that identifies the physical interface
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name given to the interface
+          required: true
+          type: string
+        - name: pci-id
+          in: path
+          description: PCI ID used to identify the sriov-vf
+          required: true
+          type: string
+  /network/pnfs/pnf/{pnf-name}/p-interfaces/p-interface/{interface-name}/l-interfaces/l-interface/{interface-name}/sriov-vfs/sriov-vf/{pci-id}:
+    get:
+      tags:
+        - Network
+      summary: returns sriov-vf
+      description: returns sriov-vf
+      operationId: getNetworkPnfsPnfPInterfacesPInterfaceLInterfacesLInterfaceSriovVfsSriovVf
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "200":
+          description: successful operation
+          schema:
+              $ref: "#/definitions/sriov-vf"
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: pnf-name
+          in: path
+          description: unique name of Physical Network Function.
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name that identifies the physical interface
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name given to the interface
+          required: true
+          type: string
+        - name: pci-id
+          in: path
+          description: PCI ID used to identify the sriov-vf
+          required: true
+          type: string
+        - name: inv-status
+          in: query
+          description: CANOPI's inventory status.  Only set with values exactly as defined by CANOPI.
+          required: false
+          type: string
+        - name: prov-status
+          in: query
+          description: Trigger for operational monitoring of this resource by Service Assurance systems.
+          required: false
+          type: string
+        - name: interface-id
+          in: query
+          description: ID of interface
+          required: false
+          type: string
+        - name: macaddr
+          in: query
+          description: MAC address for the interface
+          required: false
+          type: string
+        - name: network-name
+          in: query
+          description: Name of the network
+          required: false
+          type: string
+        - name: vf-vlan-filter
+          in: query
+          description: This metadata provides option to specify list of VLAN filters applied on VF to pass the traffic to VM.
+          required: false
+          type: string
+        - name: vf-mac-filter
+          in: query
+          description: When MAC filters are specified, VF-agent service configures VFs to do MAC level filtering before the traffic is passed to VM.
+          required: false
+          type: string
+        - name: vf-vlan-strip
+          in: query
+          description: When this field is set to true, VF will configured to strip the outer TAG before the traffic is passed to VM.
+          required: false
+          type: boolean
+        - name: neutron-network-id
+          in: query
+          description: Neutron network id of the interface
+          required: false
+          type: string
+    put:
+      tags:
+        - Network
+      summary: create or update an existing sriov-vf
+      description: create or update an existing sriov-vf
+      operationId: createOrUpdateNetworkPnfsPnfPInterfacesPInterfaceLInterfacesLInterfaceSriovVfsSriovVf
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: pnf-name
+          in: path
+          description: unique name of Physical Network Function.
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name that identifies the physical interface
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name given to the interface
+          required: true
+          type: string
+        - name: pci-id
+          in: path
+          description: PCI ID used to identify the sriov-vf
+          required: true
+          type: string
+        - name: body
+          in: body
+          description: sriov-vf object that needs to be created or updated
+          required: true
+          schema:
+            $ref: "#/definitions/sriov-vf"
+    delete:
+      tags:
+        - Network
+      summary: delete an existing sriov-vf
+      description: delete an existing sriov-vf
+      operationId: deleteNetworkPnfsPnfPInterfacesPInterfaceLInterfacesLInterfaceSriovVfsSriovVf
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: pnf-name
+          in: path
+          description: unique name of Physical Network Function.
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name that identifies the physical interface
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name given to the interface
+          required: true
+          type: string
+        - name: pci-id
+          in: path
+          description: PCI ID used to identify the sriov-vf
+          required: true
+          type: string
+        - name: resource-version
+          in: query
+          description: resource-version for concurrency
+          required: true
+          type: string
+  /network/pnfs/pnf/{pnf-name}/p-interfaces/p-interface/{interface-name}/l-interfaces/l-interface/{interface-name}/sriov-vfs:
+    get:
+      tags:
+        - Network
+      summary: returns sriov-vfs
+      description: returns sriov-vfs
+      operationId: getNetworkPnfsPnfPInterfacesPInterfaceLInterfacesLInterfaceSriovVfs
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "200":
+          description: successful operation
+          schema:
+              $ref: "#/definitions/sriov-vfs"
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: pnf-name
+          in: path
+          description: unique name of Physical Network Function.
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name that identifies the physical interface
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name given to the interface
+          required: true
+          type: string
+        - name: inv-status
+          in: query
+          description: CANOPI's inventory status.  Only set with values exactly as defined by CANOPI.
+          required: false
+          type: string
+        - name: prov-status
+          in: query
+          description: Trigger for operational monitoring of this resource by Service Assurance systems.
+          required: false
+          type: string
+        - name: interface-id
+          in: query
+          description: ID of interface
+          required: false
+          type: string
+        - name: macaddr
+          in: query
+          description: MAC address for the interface
+          required: false
+          type: string
+        - name: network-name
+          in: query
+          description: Name of the network
+          required: false
+          type: string
+  /network/pnfs/pnf/{pnf-name}/p-interfaces/p-interface/{interface-name}/l-interfaces/l-interface/{interface-name}/relationship-list/relationship:
+    put:
+      tags:
+        - Network
+      summary: see node definition for valid relationships
+      operationId: createOrUpdateNetworkPnfsPnfPInterfacesPInterfaceLInterfacesLInterfaceRelationshipListRelationship
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: pnf-name
+          in: path
+          description: unique name of Physical Network Function.
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name that identifies the physical interface
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name given to the interface
+          required: true
+          type: string
+        - name: body
+          in: body
+          description: relationship object that needs to be created or updated
+          required: true
+          schema:
+            $ref: "#/definitions/relationship"
+    delete:
+      tags:
+        - Network
+      summary: delete an existing relationship
+      description: delete an existing relationship
+      operationId: deleteNetworkPnfsPnfPInterfacesPInterfaceLInterfacesLInterfaceRelationshipListRelationship
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: pnf-name
+          in: path
+          description: unique name of Physical Network Function.
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name that identifies the physical interface
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name given to the interface
+          required: true
+          type: string
+  /network/pnfs/pnf/{pnf-name}/p-interfaces/p-interface/{interface-name}/l-interfaces/l-interface/{interface-name}/l3-interface-ipv4-address-list/{l3-interface-ipv4-address}/relationship-list/relationship:
+    put:
+      tags:
+        - Network
+      summary: see node definition for valid relationships
+      operationId: createOrUpdateNetworkPnfsPnfPInterfacesPInterfaceLInterfacesLInterfaceL3InterfaceIpv4AddressListRelationshipListRelationship
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: pnf-name
+          in: path
+          description: unique name of Physical Network Function.
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name that identifies the physical interface
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name given to the interface
+          required: true
+          type: string
+        - name: l3-interface-ipv4-address
+          in: path
+          description: IP address
+          required: true
+          type: string
+        - name: body
+          in: body
+          description: relationship object that needs to be created or updated
+          required: true
+          schema:
+            $ref: "#/definitions/relationship"
+    delete:
+      tags:
+        - Network
+      summary: delete an existing relationship
+      description: delete an existing relationship
+      operationId: deleteNetworkPnfsPnfPInterfacesPInterfaceLInterfacesLInterfaceL3InterfaceIpv4AddressListRelationshipListRelationship
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: pnf-name
+          in: path
+          description: unique name of Physical Network Function.
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name that identifies the physical interface
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name given to the interface
+          required: true
+          type: string
+        - name: l3-interface-ipv4-address
+          in: path
+          description: IP address
+          required: true
+          type: string
+  /network/pnfs/pnf/{pnf-name}/p-interfaces/p-interface/{interface-name}/l-interfaces/l-interface/{interface-name}/l3-interface-ipv4-address-list/{l3-interface-ipv4-address}:
+    get:
+      tags:
+        - Network
+      summary: returns l3-interface-ipv4-address-list
+      description: returns l3-interface-ipv4-address-list
+      operationId: getNetworkPnfsPnfPInterfacesPInterfaceLInterfacesLInterfaceL3InterfaceIpv4AddressList
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "200":
+          description: successful operation
+          schema:
+              $ref: "#/definitions/l3-interface-ipv4-address-list"
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: pnf-name
+          in: path
+          description: unique name of Physical Network Function.
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name that identifies the physical interface
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name given to the interface
+          required: true
+          type: string
+        - name: l3-interface-ipv4-address
+          in: path
+          description: IP address
+          required: true
+          type: string
+        - name: inv-status
+          in: query
+          description: CANOPI's inventory status.  Only set with values exactly as defined by CANOPI.
+          required: false
+          type: string
+        - name: prov-status
+          in: query
+          description: Trigger for operational monitoring of this resource by Service Assurance systems.
+          required: false
+          type: string
+        - name: interface-id
+          in: query
+          description: ID of interface
+          required: false
+          type: string
+        - name: macaddr
+          in: query
+          description: MAC address for the interface
+          required: false
+          type: string
+        - name: network-name
+          in: query
+          description: Name of the network
+          required: false
+          type: string
+        - name: vlan-id-inner
+          in: query
+          description: Inner VLAN tag
+          required: false
+          type: integer
+          format: int64
+        - name: neutron-network-id
+          in: query
+          description: Neutron network id of the interface that address belongs to
+          required: false
+          type: string
+        - name: neutron-subnet-id
+          in: query
+          description: Neutron id of subnet that address belongs to
+          required: false
+          type: string
+    put:
+      tags:
+        - Network
+      summary: create or update an existing l3-interface-ipv4-address-list
+      description: create or update an existing l3-interface-ipv4-address-list
+      operationId: createOrUpdateNetworkPnfsPnfPInterfacesPInterfaceLInterfacesLInterfaceL3InterfaceIpv4AddressList
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: pnf-name
+          in: path
+          description: unique name of Physical Network Function.
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name that identifies the physical interface
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name given to the interface
+          required: true
+          type: string
+        - name: l3-interface-ipv4-address
+          in: path
+          description: IP address
+          required: true
+          type: string
+        - name: body
+          in: body
+          description: l3-interface-ipv4-address-list object that needs to be created or updated
+          required: true
+          schema:
+            $ref: "#/definitions/l3-interface-ipv4-address-list"
+    delete:
+      tags:
+        - Network
+      summary: delete an existing l3-interface-ipv4-address-list
+      description: delete an existing l3-interface-ipv4-address-list
+      operationId: deleteNetworkPnfsPnfPInterfacesPInterfaceLInterfacesLInterfaceL3InterfaceIpv4AddressList
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: pnf-name
+          in: path
+          description: unique name of Physical Network Function.
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name that identifies the physical interface
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name given to the interface
+          required: true
+          type: string
+        - name: l3-interface-ipv4-address
+          in: path
+          description: IP address
+          required: true
+          type: string
+        - name: resource-version
+          in: query
+          description: resource-version for concurrency
+          required: true
+          type: string
+  /network/pnfs/pnf/{pnf-name}/p-interfaces/p-interface/{interface-name}/l-interfaces/l-interface/{interface-name}/l3-interface-ipv6-address-list/{l3-interface-ipv6-address}/relationship-list/relationship:
+    put:
+      tags:
+        - Network
+      summary: see node definition for valid relationships
+      operationId: createOrUpdateNetworkPnfsPnfPInterfacesPInterfaceLInterfacesLInterfaceL3InterfaceIpv6AddressListRelationshipListRelationship
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: pnf-name
+          in: path
+          description: unique name of Physical Network Function.
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name that identifies the physical interface
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name given to the interface
+          required: true
+          type: string
+        - name: l3-interface-ipv6-address
+          in: path
+          description: IP address
+          required: true
+          type: string
+        - name: body
+          in: body
+          description: relationship object that needs to be created or updated
+          required: true
+          schema:
+            $ref: "#/definitions/relationship"
+    delete:
+      tags:
+        - Network
+      summary: delete an existing relationship
+      description: delete an existing relationship
+      operationId: deleteNetworkPnfsPnfPInterfacesPInterfaceLInterfacesLInterfaceL3InterfaceIpv6AddressListRelationshipListRelationship
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: pnf-name
+          in: path
+          description: unique name of Physical Network Function.
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name that identifies the physical interface
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name given to the interface
+          required: true
+          type: string
+        - name: l3-interface-ipv6-address
+          in: path
+          description: IP address
+          required: true
+          type: string
+  /network/pnfs/pnf/{pnf-name}/p-interfaces/p-interface/{interface-name}/l-interfaces/l-interface/{interface-name}/l3-interface-ipv6-address-list/{l3-interface-ipv6-address}:
+    get:
+      tags:
+        - Network
+      summary: returns l3-interface-ipv6-address-list
+      description: returns l3-interface-ipv6-address-list
+      operationId: getNetworkPnfsPnfPInterfacesPInterfaceLInterfacesLInterfaceL3InterfaceIpv6AddressList
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "200":
+          description: successful operation
+          schema:
+              $ref: "#/definitions/l3-interface-ipv6-address-list"
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: pnf-name
+          in: path
+          description: unique name of Physical Network Function.
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name that identifies the physical interface
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name given to the interface
+          required: true
+          type: string
+        - name: l3-interface-ipv6-address
+          in: path
+          description: IP address
+          required: true
+          type: string
+        - name: inv-status
+          in: query
+          description: CANOPI's inventory status.  Only set with values exactly as defined by CANOPI.
+          required: false
+          type: string
+        - name: prov-status
+          in: query
+          description: Trigger for operational monitoring of this resource by Service Assurance systems.
+          required: false
+          type: string
+        - name: interface-id
+          in: query
+          description: ID of interface
+          required: false
+          type: string
+        - name: macaddr
+          in: query
+          description: MAC address for the interface
+          required: false
+          type: string
+        - name: network-name
+          in: query
+          description: Name of the network
+          required: false
+          type: string
+        - name: vlan-id-inner
+          in: query
+          description: Inner VLAN tag
+          required: false
+          type: integer
+          format: int64
+        - name: neutron-network-id
+          in: query
+          description: Neutron network id of the interface that address belongs to
+          required: false
+          type: string
+        - name: neutron-subnet-id
+          in: query
+          description: Neutron id of subnet that address belongs to
+          required: false
+          type: string
+    put:
+      tags:
+        - Network
+      summary: create or update an existing l3-interface-ipv6-address-list
+      description: create or update an existing l3-interface-ipv6-address-list
+      operationId: createOrUpdateNetworkPnfsPnfPInterfacesPInterfaceLInterfacesLInterfaceL3InterfaceIpv6AddressList
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: pnf-name
+          in: path
+          description: unique name of Physical Network Function.
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name that identifies the physical interface
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name given to the interface
+          required: true
+          type: string
+        - name: l3-interface-ipv6-address
+          in: path
+          description: IP address
+          required: true
+          type: string
+        - name: body
+          in: body
+          description: l3-interface-ipv6-address-list object that needs to be created or updated
+          required: true
+          schema:
+            $ref: "#/definitions/l3-interface-ipv6-address-list"
+    delete:
+      tags:
+        - Network
+      summary: delete an existing l3-interface-ipv6-address-list
+      description: delete an existing l3-interface-ipv6-address-list
+      operationId: deleteNetworkPnfsPnfPInterfacesPInterfaceLInterfacesLInterfaceL3InterfaceIpv6AddressList
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: pnf-name
+          in: path
+          description: unique name of Physical Network Function.
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name that identifies the physical interface
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name given to the interface
+          required: true
+          type: string
+        - name: l3-interface-ipv6-address
+          in: path
+          description: IP address
+          required: true
+          type: string
+        - name: resource-version
+          in: query
+          description: resource-version for concurrency
+          required: true
+          type: string
+  /network/pnfs/pnf/{pnf-name}/p-interfaces/p-interface/{interface-name}/l-interfaces/l-interface/{interface-name}:
+    get:
+      tags:
+        - Network
+      summary: returns l-interface
+      description: returns l-interface
+      operationId: getNetworkPnfsPnfPInterfacesPInterfaceLInterfacesLInterface
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "200":
+          description: successful operation
+          schema:
+              $ref: "#/definitions/l-interface"
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: pnf-name
+          in: path
+          description: unique name of Physical Network Function.
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name that identifies the physical interface
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name given to the interface
+          required: true
+          type: string
+        - name: inv-status
+          in: query
+          description: CANOPI's inventory status.  Only set with values exactly as defined by CANOPI.
+          required: false
+          type: string
+        - name: prov-status
+          in: query
+          description: Trigger for operational monitoring of this resource by Service Assurance systems.
+          required: false
+          type: string
+        - name: interface-id
+          in: query
+          description: ID of interface
+          required: false
+          type: string
+        - name: macaddr
+          in: query
+          description: MAC address for the interface
+          required: false
+          type: string
+        - name: network-name
+          in: query
+          description: Name of the network
+          required: false
+          type: string
+    put:
+      tags:
+        - Network
+      summary: create or update an existing l-interface
+      description: create or update an existing l-interface
+      operationId: createOrUpdateNetworkPnfsPnfPInterfacesPInterfaceLInterfacesLInterface
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: pnf-name
+          in: path
+          description: unique name of Physical Network Function.
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name that identifies the physical interface
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name given to the interface
+          required: true
+          type: string
+        - name: body
+          in: body
+          description: l-interface object that needs to be created or updated
+          required: true
+          schema:
+            $ref: "#/definitions/l-interface"
+    delete:
+      tags:
+        - Network
+      summary: delete an existing l-interface
+      description: delete an existing l-interface
+      operationId: deleteNetworkPnfsPnfPInterfacesPInterfaceLInterfacesLInterface
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: pnf-name
+          in: path
+          description: unique name of Physical Network Function.
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name that identifies the physical interface
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name given to the interface
+          required: true
+          type: string
+        - name: resource-version
+          in: query
+          description: resource-version for concurrency
+          required: true
+          type: string
+  /network/pnfs/pnf/{pnf-name}/p-interfaces/p-interface/{interface-name}/l-interfaces:
+    get:
+      tags:
+        - Network
+      summary: returns l-interfaces
+      description: returns l-interfaces
+      operationId: getNetworkPnfsPnfPInterfacesPInterfaceLInterfaces
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "200":
+          description: successful operation
+          schema:
+              $ref: "#/definitions/l-interfaces"
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: pnf-name
+          in: path
+          description: unique name of Physical Network Function.
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name that identifies the physical interface
+          required: true
+          type: string
+        - name: inv-status
+          in: query
+          description: CANOPI's inventory status.  Only set with values exactly as defined by CANOPI.
+          required: false
+          type: string
+        - name: prov-status
+          in: query
+          description: Trigger for operational monitoring of this resource by Service Assurance systems.
+          required: false
+          type: string
+  /network/pnfs/pnf/{pnf-name}/p-interfaces/p-interface/{interface-name}:
+    get:
+      tags:
+        - Network
+      summary: returns p-interface
+      description: returns p-interface
+      operationId: getNetworkPnfsPnfPInterfacesPInterface
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "200":
+          description: successful operation
+          schema:
+              $ref: "#/definitions/p-interface"
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: pnf-name
+          in: path
+          description: unique name of Physical Network Function.
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name that identifies the physical interface
+          required: true
+          type: string
+        - name: inv-status
+          in: query
+          description: CANOPI's inventory status.  Only set with values exactly as defined by CANOPI.
+          required: false
+          type: string
+        - name: prov-status
+          in: query
+          description: Trigger for operational monitoring of this resource by Service Assurance systems.
+          required: false
+          type: string
+    put:
+      tags:
+        - Network
+      summary: create or update an existing p-interface
+      description: create or update an existing p-interface
+      operationId: createOrUpdateNetworkPnfsPnfPInterfacesPInterface
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: pnf-name
+          in: path
+          description: unique name of Physical Network Function.
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name that identifies the physical interface
+          required: true
+          type: string
+        - name: body
+          in: body
+          description: p-interface object that needs to be created or updated
+          required: true
+          schema:
+            $ref: "#/definitions/p-interface"
+    delete:
+      tags:
+        - Network
+      summary: delete an existing p-interface
+      description: delete an existing p-interface
+      operationId: deleteNetworkPnfsPnfPInterfacesPInterface
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: pnf-name
+          in: path
+          description: unique name of Physical Network Function.
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name that identifies the physical interface
+          required: true
+          type: string
+        - name: resource-version
+          in: query
+          description: resource-version for concurrency
+          required: true
+          type: string
+  /network/pnfs/pnf/{pnf-name}/p-interfaces:
+    get:
+      tags:
+        - Network
+      summary: returns p-interfaces
+      description: returns p-interfaces
+      operationId: getNetworkPnfsPnfPInterfaces
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "200":
+          description: successful operation
+          schema:
+              $ref: "#/definitions/p-interfaces"
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: pnf-name
+          in: path
+          description: unique name of Physical Network Function.
+          required: true
+          type: string
+        - name: inv-status
+          in: query
+          description: CANOPI's inventory status.  Only set with values exactly as defined by CANOPI.
+          required: false
+          type: string
+  /network/pnfs/pnf/{pnf-name}/lag-interfaces/lag-interface/{interface-name}/relationship-list/relationship:
+    put:
+      tags:
+        - Network
+      summary: see node definition for valid relationships
+      operationId: createOrUpdateNetworkPnfsPnfLagInterfacesLagInterfaceRelationshipListRelationship
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: pnf-name
+          in: path
+          description: unique name of Physical Network Function.
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name that identifies the link aggregate interface
+          required: true
+          type: string
+        - name: body
+          in: body
+          description: relationship object that needs to be created or updated
+          required: true
+          schema:
+            $ref: "#/definitions/relationship"
+    delete:
+      tags:
+        - Network
+      summary: delete an existing relationship
+      description: delete an existing relationship
+      operationId: deleteNetworkPnfsPnfLagInterfacesLagInterfaceRelationshipListRelationship
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: pnf-name
+          in: path
+          description: unique name of Physical Network Function.
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name that identifies the link aggregate interface
+          required: true
+          type: string
+  /network/pnfs/pnf/{pnf-name}/lag-interfaces/lag-interface/{interface-name}/l-interfaces/l-interface/{interface-name}/vlans/vlan/{vlan-interface}/relationship-list/relationship:
+    put:
+      tags:
+        - Network
+      summary: see node definition for valid relationships
+      operationId: createOrUpdateNetworkPnfsPnfLagInterfacesLagInterfaceLInterfacesLInterfaceVlansVlanRelationshipListRelationship
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: pnf-name
+          in: path
+          description: unique name of Physical Network Function.
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name that identifies the link aggregate interface
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name given to the interface
+          required: true
+          type: string
+        - name: vlan-interface
+          in: path
+          description: String that identifies the interface
+          required: true
+          type: string
+        - name: body
+          in: body
+          description: relationship object that needs to be created or updated
+          required: true
+          schema:
+            $ref: "#/definitions/relationship"
+    delete:
+      tags:
+        - Network
+      summary: delete an existing relationship
+      description: delete an existing relationship
+      operationId: deleteNetworkPnfsPnfLagInterfacesLagInterfaceLInterfacesLInterfaceVlansVlanRelationshipListRelationship
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: pnf-name
+          in: path
+          description: unique name of Physical Network Function.
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name that identifies the link aggregate interface
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name given to the interface
+          required: true
+          type: string
+        - name: vlan-interface
+          in: path
+          description: String that identifies the interface
+          required: true
+          type: string
+  /network/pnfs/pnf/{pnf-name}/lag-interfaces/lag-interface/{interface-name}/l-interfaces/l-interface/{interface-name}/vlans/vlan/{vlan-interface}/l3-interface-ipv4-address-list/{l3-interface-ipv4-address}/relationship-list/relationship:
+    put:
+      tags:
+        - Network
+      summary: see node definition for valid relationships
+      operationId: createOrUpdateNetworkPnfsPnfLagInterfacesLagInterfaceLInterfacesLInterfaceVlansVlanL3InterfaceIpv4AddressListRelationshipListRelationship
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: pnf-name
+          in: path
+          description: unique name of Physical Network Function.
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name that identifies the link aggregate interface
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name given to the interface
+          required: true
+          type: string
+        - name: vlan-interface
+          in: path
+          description: String that identifies the interface
+          required: true
+          type: string
+        - name: l3-interface-ipv4-address
+          in: path
+          description: IP address
+          required: true
+          type: string
+        - name: body
+          in: body
+          description: relationship object that needs to be created or updated
+          required: true
+          schema:
+            $ref: "#/definitions/relationship"
+    delete:
+      tags:
+        - Network
+      summary: delete an existing relationship
+      description: delete an existing relationship
+      operationId: deleteNetworkPnfsPnfLagInterfacesLagInterfaceLInterfacesLInterfaceVlansVlanL3InterfaceIpv4AddressListRelationshipListRelationship
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: pnf-name
+          in: path
+          description: unique name of Physical Network Function.
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name that identifies the link aggregate interface
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name given to the interface
+          required: true
+          type: string
+        - name: vlan-interface
+          in: path
+          description: String that identifies the interface
+          required: true
+          type: string
+        - name: l3-interface-ipv4-address
+          in: path
+          description: IP address
+          required: true
+          type: string
+  /network/pnfs/pnf/{pnf-name}/lag-interfaces/lag-interface/{interface-name}/l-interfaces/l-interface/{interface-name}/vlans/vlan/{vlan-interface}/l3-interface-ipv4-address-list/{l3-interface-ipv4-address}:
+    get:
+      tags:
+        - Network
+      summary: returns l3-interface-ipv4-address-list
+      description: returns l3-interface-ipv4-address-list
+      operationId: getNetworkPnfsPnfLagInterfacesLagInterfaceLInterfacesLInterfaceVlansVlanL3InterfaceIpv4AddressList
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "200":
+          description: successful operation
+          schema:
+              $ref: "#/definitions/l3-interface-ipv4-address-list"
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: pnf-name
+          in: path
+          description: unique name of Physical Network Function.
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name that identifies the link aggregate interface
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name given to the interface
+          required: true
+          type: string
+        - name: vlan-interface
+          in: path
+          description: String that identifies the interface
+          required: true
+          type: string
+        - name: l3-interface-ipv4-address
+          in: path
+          description: IP address
+          required: true
+          type: string
+        - name: inv-status
+          in: query
+          description: CANOPI's inventory status.  Only set with values exactly as defined by CANOPI.
+          required: false
+          type: string
+        - name: interface-id
+          in: query
+          description: ID of interface
+          required: false
+          type: string
+        - name: interface-role
+          in: query
+          description: Role assigned to this Interface, should use values as defined in ECOMP Yang models.
+          required: false
+          type: string
+        - name: interface-id
+          in: query
+          description: ID of interface
+          required: false
+          type: string
+        - name: macaddr
+          in: query
+          description: MAC address for the interface
+          required: false
+          type: string
+        - name: network-name
+          in: query
+          description: Name of the network
+          required: false
+          type: string
+        - name: vlan-id-inner
+          in: query
+          description: Inner VLAN tag
+          required: false
+          type: integer
+          format: int64
+        - name: vpn-key
+          in: query
+          description: This indicates the customers VPN ID associated with this vlan
+          required: false
+          type: string
+        - name: vlan-id-inner
+          in: query
+          description: Inner VLAN tag
+          required: false
+          type: integer
+          format: int64
+        - name: neutron-network-id
+          in: query
+          description: Neutron network id of the interface that address belongs to
+          required: false
+          type: string
+        - name: neutron-subnet-id
+          in: query
+          description: Neutron id of subnet that address belongs to
+          required: false
+          type: string
+    put:
+      tags:
+        - Network
+      summary: create or update an existing l3-interface-ipv4-address-list
+      description: create or update an existing l3-interface-ipv4-address-list
+      operationId: createOrUpdateNetworkPnfsPnfLagInterfacesLagInterfaceLInterfacesLInterfaceVlansVlanL3InterfaceIpv4AddressList
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: pnf-name
+          in: path
+          description: unique name of Physical Network Function.
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name that identifies the link aggregate interface
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name given to the interface
+          required: true
+          type: string
+        - name: vlan-interface
+          in: path
+          description: String that identifies the interface
+          required: true
+          type: string
+        - name: l3-interface-ipv4-address
+          in: path
+          description: IP address
+          required: true
+          type: string
+        - name: body
+          in: body
+          description: l3-interface-ipv4-address-list object that needs to be created or updated
+          required: true
+          schema:
+            $ref: "#/definitions/l3-interface-ipv4-address-list"
+    delete:
+      tags:
+        - Network
+      summary: delete an existing l3-interface-ipv4-address-list
+      description: delete an existing l3-interface-ipv4-address-list
+      operationId: deleteNetworkPnfsPnfLagInterfacesLagInterfaceLInterfacesLInterfaceVlansVlanL3InterfaceIpv4AddressList
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: pnf-name
+          in: path
+          description: unique name of Physical Network Function.
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name that identifies the link aggregate interface
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name given to the interface
+          required: true
+          type: string
+        - name: vlan-interface
+          in: path
+          description: String that identifies the interface
+          required: true
+          type: string
+        - name: l3-interface-ipv4-address
+          in: path
+          description: IP address
+          required: true
+          type: string
+        - name: resource-version
+          in: query
+          description: resource-version for concurrency
+          required: true
+          type: string
+  /network/pnfs/pnf/{pnf-name}/lag-interfaces/lag-interface/{interface-name}/l-interfaces/l-interface/{interface-name}/vlans/vlan/{vlan-interface}/l3-interface-ipv6-address-list/{l3-interface-ipv6-address}/relationship-list/relationship:
+    put:
+      tags:
+        - Network
+      summary: see node definition for valid relationships
+      operationId: createOrUpdateNetworkPnfsPnfLagInterfacesLagInterfaceLInterfacesLInterfaceVlansVlanL3InterfaceIpv6AddressListRelationshipListRelationship
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: pnf-name
+          in: path
+          description: unique name of Physical Network Function.
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name that identifies the link aggregate interface
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name given to the interface
+          required: true
+          type: string
+        - name: vlan-interface
+          in: path
+          description: String that identifies the interface
+          required: true
+          type: string
+        - name: l3-interface-ipv6-address
+          in: path
+          description: IP address
+          required: true
+          type: string
+        - name: body
+          in: body
+          description: relationship object that needs to be created or updated
+          required: true
+          schema:
+            $ref: "#/definitions/relationship"
+    delete:
+      tags:
+        - Network
+      summary: delete an existing relationship
+      description: delete an existing relationship
+      operationId: deleteNetworkPnfsPnfLagInterfacesLagInterfaceLInterfacesLInterfaceVlansVlanL3InterfaceIpv6AddressListRelationshipListRelationship
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: pnf-name
+          in: path
+          description: unique name of Physical Network Function.
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name that identifies the link aggregate interface
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name given to the interface
+          required: true
+          type: string
+        - name: vlan-interface
+          in: path
+          description: String that identifies the interface
+          required: true
+          type: string
+        - name: l3-interface-ipv6-address
+          in: path
+          description: IP address
+          required: true
+          type: string
+  /network/pnfs/pnf/{pnf-name}/lag-interfaces/lag-interface/{interface-name}/l-interfaces/l-interface/{interface-name}/vlans/vlan/{vlan-interface}/l3-interface-ipv6-address-list/{l3-interface-ipv6-address}:
+    get:
+      tags:
+        - Network
+      summary: returns l3-interface-ipv6-address-list
+      description: returns l3-interface-ipv6-address-list
+      operationId: getNetworkPnfsPnfLagInterfacesLagInterfaceLInterfacesLInterfaceVlansVlanL3InterfaceIpv6AddressList
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "200":
+          description: successful operation
+          schema:
+              $ref: "#/definitions/l3-interface-ipv6-address-list"
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: pnf-name
+          in: path
+          description: unique name of Physical Network Function.
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name that identifies the link aggregate interface
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name given to the interface
+          required: true
+          type: string
+        - name: vlan-interface
+          in: path
+          description: String that identifies the interface
+          required: true
+          type: string
+        - name: l3-interface-ipv6-address
+          in: path
+          description: IP address
+          required: true
+          type: string
+        - name: inv-status
+          in: query
+          description: CANOPI's inventory status.  Only set with values exactly as defined by CANOPI.
+          required: false
+          type: string
+        - name: interface-id
+          in: query
+          description: ID of interface
+          required: false
+          type: string
+        - name: interface-role
+          in: query
+          description: Role assigned to this Interface, should use values as defined in ECOMP Yang models.
+          required: false
+          type: string
+        - name: interface-id
+          in: query
+          description: ID of interface
+          required: false
+          type: string
+        - name: macaddr
+          in: query
+          description: MAC address for the interface
+          required: false
+          type: string
+        - name: network-name
+          in: query
+          description: Name of the network
+          required: false
+          type: string
+        - name: vlan-id-inner
+          in: query
+          description: Inner VLAN tag
+          required: false
+          type: integer
+          format: int64
+        - name: vpn-key
+          in: query
+          description: This indicates the customers VPN ID associated with this vlan
+          required: false
+          type: string
+        - name: vlan-id-inner
+          in: query
+          description: Inner VLAN tag
+          required: false
+          type: integer
+          format: int64
+        - name: neutron-network-id
+          in: query
+          description: Neutron network id of the interface that address belongs to
+          required: false
+          type: string
+        - name: neutron-subnet-id
+          in: query
+          description: Neutron id of subnet that address belongs to
+          required: false
+          type: string
+    put:
+      tags:
+        - Network
+      summary: create or update an existing l3-interface-ipv6-address-list
+      description: create or update an existing l3-interface-ipv6-address-list
+      operationId: createOrUpdateNetworkPnfsPnfLagInterfacesLagInterfaceLInterfacesLInterfaceVlansVlanL3InterfaceIpv6AddressList
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: pnf-name
+          in: path
+          description: unique name of Physical Network Function.
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name that identifies the link aggregate interface
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name given to the interface
+          required: true
+          type: string
+        - name: vlan-interface
+          in: path
+          description: String that identifies the interface
+          required: true
+          type: string
+        - name: l3-interface-ipv6-address
+          in: path
+          description: IP address
+          required: true
+          type: string
+        - name: body
+          in: body
+          description: l3-interface-ipv6-address-list object that needs to be created or updated
+          required: true
+          schema:
+            $ref: "#/definitions/l3-interface-ipv6-address-list"
+    delete:
+      tags:
+        - Network
+      summary: delete an existing l3-interface-ipv6-address-list
+      description: delete an existing l3-interface-ipv6-address-list
+      operationId: deleteNetworkPnfsPnfLagInterfacesLagInterfaceLInterfacesLInterfaceVlansVlanL3InterfaceIpv6AddressList
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: pnf-name
+          in: path
+          description: unique name of Physical Network Function.
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name that identifies the link aggregate interface
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name given to the interface
+          required: true
+          type: string
+        - name: vlan-interface
+          in: path
+          description: String that identifies the interface
+          required: true
+          type: string
+        - name: l3-interface-ipv6-address
+          in: path
+          description: IP address
+          required: true
+          type: string
+        - name: resource-version
+          in: query
+          description: resource-version for concurrency
+          required: true
+          type: string
+  /network/pnfs/pnf/{pnf-name}/lag-interfaces/lag-interface/{interface-name}/l-interfaces/l-interface/{interface-name}/vlans/vlan/{vlan-interface}:
+    get:
+      tags:
+        - Network
+      summary: returns vlan
+      description: returns vlan
+      operationId: getNetworkPnfsPnfLagInterfacesLagInterfaceLInterfacesLInterfaceVlansVlan
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "200":
+          description: successful operation
+          schema:
+              $ref: "#/definitions/vlan"
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: pnf-name
+          in: path
+          description: unique name of Physical Network Function.
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name that identifies the link aggregate interface
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name given to the interface
+          required: true
+          type: string
+        - name: vlan-interface
+          in: path
+          description: String that identifies the interface
+          required: true
+          type: string
+        - name: inv-status
+          in: query
+          description: CANOPI's inventory status.  Only set with values exactly as defined by CANOPI.
+          required: false
+          type: string
+        - name: interface-id
+          in: query
+          description: ID of interface
+          required: false
+          type: string
+        - name: interface-role
+          in: query
+          description: Role assigned to this Interface, should use values as defined in ECOMP Yang models.
+          required: false
+          type: string
+        - name: interface-id
+          in: query
+          description: ID of interface
+          required: false
+          type: string
+        - name: macaddr
+          in: query
+          description: MAC address for the interface
+          required: false
+          type: string
+        - name: network-name
+          in: query
+          description: Name of the network
+          required: false
+          type: string
+        - name: vlan-id-inner
+          in: query
+          description: Inner VLAN tag
+          required: false
+          type: integer
+          format: int64
+        - name: vpn-key
+          in: query
+          description: This indicates the customers VPN ID associated with this vlan
+          required: false
+          type: string
+    put:
+      tags:
+        - Network
+      summary: create or update an existing vlan
+      description: create or update an existing vlan
+      operationId: createOrUpdateNetworkPnfsPnfLagInterfacesLagInterfaceLInterfacesLInterfaceVlansVlan
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: pnf-name
+          in: path
+          description: unique name of Physical Network Function.
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name that identifies the link aggregate interface
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name given to the interface
+          required: true
+          type: string
+        - name: vlan-interface
+          in: path
+          description: String that identifies the interface
+          required: true
+          type: string
+        - name: body
+          in: body
+          description: vlan object that needs to be created or updated
+          required: true
+          schema:
+            $ref: "#/definitions/vlan"
+    delete:
+      tags:
+        - Network
+      summary: delete an existing vlan
+      description: delete an existing vlan
+      operationId: deleteNetworkPnfsPnfLagInterfacesLagInterfaceLInterfacesLInterfaceVlansVlan
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: pnf-name
+          in: path
+          description: unique name of Physical Network Function.
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name that identifies the link aggregate interface
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name given to the interface
+          required: true
+          type: string
+        - name: vlan-interface
+          in: path
+          description: String that identifies the interface
+          required: true
+          type: string
+        - name: resource-version
+          in: query
+          description: resource-version for concurrency
+          required: true
+          type: string
+  /network/pnfs/pnf/{pnf-name}/lag-interfaces/lag-interface/{interface-name}/l-interfaces/l-interface/{interface-name}/vlans:
+    get:
+      tags:
+        - Network
+      summary: returns vlans
+      description: returns vlans
+      operationId: getNetworkPnfsPnfLagInterfacesLagInterfaceLInterfacesLInterfaceVlans
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "200":
+          description: successful operation
+          schema:
+              $ref: "#/definitions/vlans"
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: pnf-name
+          in: path
+          description: unique name of Physical Network Function.
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name that identifies the link aggregate interface
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name given to the interface
+          required: true
+          type: string
+        - name: inv-status
+          in: query
+          description: CANOPI's inventory status.  Only set with values exactly as defined by CANOPI.
+          required: false
+          type: string
+        - name: interface-id
+          in: query
+          description: ID of interface
+          required: false
+          type: string
+        - name: interface-role
+          in: query
+          description: Role assigned to this Interface, should use values as defined in ECOMP Yang models.
+          required: false
+          type: string
+        - name: interface-id
+          in: query
+          description: ID of interface
+          required: false
+          type: string
+        - name: macaddr
+          in: query
+          description: MAC address for the interface
+          required: false
+          type: string
+        - name: network-name
+          in: query
+          description: Name of the network
+          required: false
+          type: string
+  /network/pnfs/pnf/{pnf-name}/lag-interfaces/lag-interface/{interface-name}/l-interfaces/l-interface/{interface-name}/sriov-vfs/sriov-vf/{pci-id}/relationship-list/relationship:
+    put:
+      tags:
+        - Network
+      summary: see node definition for valid relationships
+      operationId: createOrUpdateNetworkPnfsPnfLagInterfacesLagInterfaceLInterfacesLInterfaceSriovVfsSriovVfRelationshipListRelationship
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: pnf-name
+          in: path
+          description: unique name of Physical Network Function.
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name that identifies the link aggregate interface
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name given to the interface
+          required: true
+          type: string
+        - name: pci-id
+          in: path
+          description: PCI ID used to identify the sriov-vf
+          required: true
+          type: string
+        - name: body
+          in: body
+          description: relationship object that needs to be created or updated
+          required: true
+          schema:
+            $ref: "#/definitions/relationship"
+    delete:
+      tags:
+        - Network
+      summary: delete an existing relationship
+      description: delete an existing relationship
+      operationId: deleteNetworkPnfsPnfLagInterfacesLagInterfaceLInterfacesLInterfaceSriovVfsSriovVfRelationshipListRelationship
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: pnf-name
+          in: path
+          description: unique name of Physical Network Function.
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name that identifies the link aggregate interface
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name given to the interface
+          required: true
+          type: string
+        - name: pci-id
+          in: path
+          description: PCI ID used to identify the sriov-vf
+          required: true
+          type: string
+  /network/pnfs/pnf/{pnf-name}/lag-interfaces/lag-interface/{interface-name}/l-interfaces/l-interface/{interface-name}/sriov-vfs/sriov-vf/{pci-id}:
+    get:
+      tags:
+        - Network
+      summary: returns sriov-vf
+      description: returns sriov-vf
+      operationId: getNetworkPnfsPnfLagInterfacesLagInterfaceLInterfacesLInterfaceSriovVfsSriovVf
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "200":
+          description: successful operation
+          schema:
+              $ref: "#/definitions/sriov-vf"
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: pnf-name
+          in: path
+          description: unique name of Physical Network Function.
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name that identifies the link aggregate interface
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name given to the interface
+          required: true
+          type: string
+        - name: pci-id
+          in: path
+          description: PCI ID used to identify the sriov-vf
+          required: true
+          type: string
+        - name: inv-status
+          in: query
+          description: CANOPI's inventory status.  Only set with values exactly as defined by CANOPI.
+          required: false
+          type: string
+        - name: interface-id
+          in: query
+          description: ID of interface
+          required: false
+          type: string
+        - name: interface-role
+          in: query
+          description: Role assigned to this Interface, should use values as defined in ECOMP Yang models.
+          required: false
+          type: string
+        - name: interface-id
+          in: query
+          description: ID of interface
+          required: false
+          type: string
+        - name: macaddr
+          in: query
+          description: MAC address for the interface
+          required: false
+          type: string
+        - name: network-name
+          in: query
+          description: Name of the network
+          required: false
+          type: string
+        - name: vf-vlan-filter
+          in: query
+          description: This metadata provides option to specify list of VLAN filters applied on VF to pass the traffic to VM.
+          required: false
+          type: string
+        - name: vf-mac-filter
+          in: query
+          description: When MAC filters are specified, VF-agent service configures VFs to do MAC level filtering before the traffic is passed to VM.
+          required: false
+          type: string
+        - name: vf-vlan-strip
+          in: query
+          description: When this field is set to true, VF will configured to strip the outer TAG before the traffic is passed to VM.
+          required: false
+          type: boolean
+        - name: neutron-network-id
+          in: query
+          description: Neutron network id of the interface
+          required: false
+          type: string
+    put:
+      tags:
+        - Network
+      summary: create or update an existing sriov-vf
+      description: create or update an existing sriov-vf
+      operationId: createOrUpdateNetworkPnfsPnfLagInterfacesLagInterfaceLInterfacesLInterfaceSriovVfsSriovVf
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: pnf-name
+          in: path
+          description: unique name of Physical Network Function.
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name that identifies the link aggregate interface
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name given to the interface
+          required: true
+          type: string
+        - name: pci-id
+          in: path
+          description: PCI ID used to identify the sriov-vf
+          required: true
+          type: string
+        - name: body
+          in: body
+          description: sriov-vf object that needs to be created or updated
+          required: true
+          schema:
+            $ref: "#/definitions/sriov-vf"
+    delete:
+      tags:
+        - Network
+      summary: delete an existing sriov-vf
+      description: delete an existing sriov-vf
+      operationId: deleteNetworkPnfsPnfLagInterfacesLagInterfaceLInterfacesLInterfaceSriovVfsSriovVf
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: pnf-name
+          in: path
+          description: unique name of Physical Network Function.
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name that identifies the link aggregate interface
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name given to the interface
+          required: true
+          type: string
+        - name: pci-id
+          in: path
+          description: PCI ID used to identify the sriov-vf
+          required: true
+          type: string
+        - name: resource-version
+          in: query
+          description: resource-version for concurrency
+          required: true
+          type: string
+  /network/pnfs/pnf/{pnf-name}/lag-interfaces/lag-interface/{interface-name}/l-interfaces/l-interface/{interface-name}/sriov-vfs:
+    get:
+      tags:
+        - Network
+      summary: returns sriov-vfs
+      description: returns sriov-vfs
+      operationId: getNetworkPnfsPnfLagInterfacesLagInterfaceLInterfacesLInterfaceSriovVfs
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "200":
+          description: successful operation
+          schema:
+              $ref: "#/definitions/sriov-vfs"
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: pnf-name
+          in: path
+          description: unique name of Physical Network Function.
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name that identifies the link aggregate interface
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name given to the interface
+          required: true
+          type: string
+        - name: inv-status
+          in: query
+          description: CANOPI's inventory status.  Only set with values exactly as defined by CANOPI.
+          required: false
+          type: string
+        - name: interface-id
+          in: query
+          description: ID of interface
+          required: false
+          type: string
+        - name: interface-role
+          in: query
+          description: Role assigned to this Interface, should use values as defined in ECOMP Yang models.
+          required: false
+          type: string
+        - name: interface-id
+          in: query
+          description: ID of interface
+          required: false
+          type: string
+        - name: macaddr
+          in: query
+          description: MAC address for the interface
+          required: false
+          type: string
+        - name: network-name
+          in: query
+          description: Name of the network
+          required: false
+          type: string
+  /network/pnfs/pnf/{pnf-name}/lag-interfaces/lag-interface/{interface-name}/l-interfaces/l-interface/{interface-name}/relationship-list/relationship:
+    put:
+      tags:
+        - Network
+      summary: see node definition for valid relationships
+      operationId: createOrUpdateNetworkPnfsPnfLagInterfacesLagInterfaceLInterfacesLInterfaceRelationshipListRelationship
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: pnf-name
+          in: path
+          description: unique name of Physical Network Function.
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name that identifies the link aggregate interface
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name given to the interface
+          required: true
+          type: string
+        - name: body
+          in: body
+          description: relationship object that needs to be created or updated
+          required: true
+          schema:
+            $ref: "#/definitions/relationship"
+    delete:
+      tags:
+        - Network
+      summary: delete an existing relationship
+      description: delete an existing relationship
+      operationId: deleteNetworkPnfsPnfLagInterfacesLagInterfaceLInterfacesLInterfaceRelationshipListRelationship
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: pnf-name
+          in: path
+          description: unique name of Physical Network Function.
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name that identifies the link aggregate interface
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name given to the interface
+          required: true
+          type: string
+  /network/pnfs/pnf/{pnf-name}/lag-interfaces/lag-interface/{interface-name}/l-interfaces/l-interface/{interface-name}/l3-interface-ipv4-address-list/{l3-interface-ipv4-address}/relationship-list/relationship:
+    put:
+      tags:
+        - Network
+      summary: see node definition for valid relationships
+      operationId: createOrUpdateNetworkPnfsPnfLagInterfacesLagInterfaceLInterfacesLInterfaceL3InterfaceIpv4AddressListRelationshipListRelationship
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: pnf-name
+          in: path
+          description: unique name of Physical Network Function.
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name that identifies the link aggregate interface
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name given to the interface
+          required: true
+          type: string
+        - name: l3-interface-ipv4-address
+          in: path
+          description: IP address
+          required: true
+          type: string
+        - name: body
+          in: body
+          description: relationship object that needs to be created or updated
+          required: true
+          schema:
+            $ref: "#/definitions/relationship"
+    delete:
+      tags:
+        - Network
+      summary: delete an existing relationship
+      description: delete an existing relationship
+      operationId: deleteNetworkPnfsPnfLagInterfacesLagInterfaceLInterfacesLInterfaceL3InterfaceIpv4AddressListRelationshipListRelationship
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: pnf-name
+          in: path
+          description: unique name of Physical Network Function.
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name that identifies the link aggregate interface
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name given to the interface
+          required: true
+          type: string
+        - name: l3-interface-ipv4-address
+          in: path
+          description: IP address
+          required: true
+          type: string
+  /network/pnfs/pnf/{pnf-name}/lag-interfaces/lag-interface/{interface-name}/l-interfaces/l-interface/{interface-name}/l3-interface-ipv4-address-list/{l3-interface-ipv4-address}:
+    get:
+      tags:
+        - Network
+      summary: returns l3-interface-ipv4-address-list
+      description: returns l3-interface-ipv4-address-list
+      operationId: getNetworkPnfsPnfLagInterfacesLagInterfaceLInterfacesLInterfaceL3InterfaceIpv4AddressList
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "200":
+          description: successful operation
+          schema:
+              $ref: "#/definitions/l3-interface-ipv4-address-list"
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: pnf-name
+          in: path
+          description: unique name of Physical Network Function.
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name that identifies the link aggregate interface
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name given to the interface
+          required: true
+          type: string
+        - name: l3-interface-ipv4-address
+          in: path
+          description: IP address
+          required: true
+          type: string
+        - name: inv-status
+          in: query
+          description: CANOPI's inventory status.  Only set with values exactly as defined by CANOPI.
+          required: false
+          type: string
+        - name: interface-id
+          in: query
+          description: ID of interface
+          required: false
+          type: string
+        - name: interface-role
+          in: query
+          description: Role assigned to this Interface, should use values as defined in ECOMP Yang models.
+          required: false
+          type: string
+        - name: interface-id
+          in: query
+          description: ID of interface
+          required: false
+          type: string
+        - name: macaddr
+          in: query
+          description: MAC address for the interface
+          required: false
+          type: string
+        - name: network-name
+          in: query
+          description: Name of the network
+          required: false
+          type: string
+        - name: vlan-id-inner
+          in: query
+          description: Inner VLAN tag
+          required: false
+          type: integer
+          format: int64
+        - name: neutron-network-id
+          in: query
+          description: Neutron network id of the interface that address belongs to
+          required: false
+          type: string
+        - name: neutron-subnet-id
+          in: query
+          description: Neutron id of subnet that address belongs to
+          required: false
+          type: string
+    put:
+      tags:
+        - Network
+      summary: create or update an existing l3-interface-ipv4-address-list
+      description: create or update an existing l3-interface-ipv4-address-list
+      operationId: createOrUpdateNetworkPnfsPnfLagInterfacesLagInterfaceLInterfacesLInterfaceL3InterfaceIpv4AddressList
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: pnf-name
+          in: path
+          description: unique name of Physical Network Function.
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name that identifies the link aggregate interface
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name given to the interface
+          required: true
+          type: string
+        - name: l3-interface-ipv4-address
+          in: path
+          description: IP address
+          required: true
+          type: string
+        - name: body
+          in: body
+          description: l3-interface-ipv4-address-list object that needs to be created or updated
+          required: true
+          schema:
+            $ref: "#/definitions/l3-interface-ipv4-address-list"
+    delete:
+      tags:
+        - Network
+      summary: delete an existing l3-interface-ipv4-address-list
+      description: delete an existing l3-interface-ipv4-address-list
+      operationId: deleteNetworkPnfsPnfLagInterfacesLagInterfaceLInterfacesLInterfaceL3InterfaceIpv4AddressList
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: pnf-name
+          in: path
+          description: unique name of Physical Network Function.
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name that identifies the link aggregate interface
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name given to the interface
+          required: true
+          type: string
+        - name: l3-interface-ipv4-address
+          in: path
+          description: IP address
+          required: true
+          type: string
+        - name: resource-version
+          in: query
+          description: resource-version for concurrency
+          required: true
+          type: string
+  /network/pnfs/pnf/{pnf-name}/lag-interfaces/lag-interface/{interface-name}/l-interfaces/l-interface/{interface-name}/l3-interface-ipv6-address-list/{l3-interface-ipv6-address}/relationship-list/relationship:
+    put:
+      tags:
+        - Network
+      summary: see node definition for valid relationships
+      operationId: createOrUpdateNetworkPnfsPnfLagInterfacesLagInterfaceLInterfacesLInterfaceL3InterfaceIpv6AddressListRelationshipListRelationship
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: pnf-name
+          in: path
+          description: unique name of Physical Network Function.
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name that identifies the link aggregate interface
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name given to the interface
+          required: true
+          type: string
+        - name: l3-interface-ipv6-address
+          in: path
+          description: IP address
+          required: true
+          type: string
+        - name: body
+          in: body
+          description: relationship object that needs to be created or updated
+          required: true
+          schema:
+            $ref: "#/definitions/relationship"
+    delete:
+      tags:
+        - Network
+      summary: delete an existing relationship
+      description: delete an existing relationship
+      operationId: deleteNetworkPnfsPnfLagInterfacesLagInterfaceLInterfacesLInterfaceL3InterfaceIpv6AddressListRelationshipListRelationship
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: pnf-name
+          in: path
+          description: unique name of Physical Network Function.
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name that identifies the link aggregate interface
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name given to the interface
+          required: true
+          type: string
+        - name: l3-interface-ipv6-address
+          in: path
+          description: IP address
+          required: true
+          type: string
+  /network/pnfs/pnf/{pnf-name}/lag-interfaces/lag-interface/{interface-name}/l-interfaces/l-interface/{interface-name}/l3-interface-ipv6-address-list/{l3-interface-ipv6-address}:
+    get:
+      tags:
+        - Network
+      summary: returns l3-interface-ipv6-address-list
+      description: returns l3-interface-ipv6-address-list
+      operationId: getNetworkPnfsPnfLagInterfacesLagInterfaceLInterfacesLInterfaceL3InterfaceIpv6AddressList
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "200":
+          description: successful operation
+          schema:
+              $ref: "#/definitions/l3-interface-ipv6-address-list"
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: pnf-name
+          in: path
+          description: unique name of Physical Network Function.
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name that identifies the link aggregate interface
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name given to the interface
+          required: true
+          type: string
+        - name: l3-interface-ipv6-address
+          in: path
+          description: IP address
+          required: true
+          type: string
+        - name: inv-status
+          in: query
+          description: CANOPI's inventory status.  Only set with values exactly as defined by CANOPI.
+          required: false
+          type: string
+        - name: interface-id
+          in: query
+          description: ID of interface
+          required: false
+          type: string
+        - name: interface-role
+          in: query
+          description: Role assigned to this Interface, should use values as defined in ECOMP Yang models.
+          required: false
+          type: string
+        - name: interface-id
+          in: query
+          description: ID of interface
+          required: false
+          type: string
+        - name: macaddr
+          in: query
+          description: MAC address for the interface
+          required: false
+          type: string
+        - name: network-name
+          in: query
+          description: Name of the network
+          required: false
+          type: string
+        - name: vlan-id-inner
+          in: query
+          description: Inner VLAN tag
+          required: false
+          type: integer
+          format: int64
+        - name: neutron-network-id
+          in: query
+          description: Neutron network id of the interface that address belongs to
+          required: false
+          type: string
+        - name: neutron-subnet-id
+          in: query
+          description: Neutron id of subnet that address belongs to
+          required: false
+          type: string
+    put:
+      tags:
+        - Network
+      summary: create or update an existing l3-interface-ipv6-address-list
+      description: create or update an existing l3-interface-ipv6-address-list
+      operationId: createOrUpdateNetworkPnfsPnfLagInterfacesLagInterfaceLInterfacesLInterfaceL3InterfaceIpv6AddressList
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: pnf-name
+          in: path
+          description: unique name of Physical Network Function.
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name that identifies the link aggregate interface
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name given to the interface
+          required: true
+          type: string
+        - name: l3-interface-ipv6-address
+          in: path
+          description: IP address
+          required: true
+          type: string
+        - name: body
+          in: body
+          description: l3-interface-ipv6-address-list object that needs to be created or updated
+          required: true
+          schema:
+            $ref: "#/definitions/l3-interface-ipv6-address-list"
+    delete:
+      tags:
+        - Network
+      summary: delete an existing l3-interface-ipv6-address-list
+      description: delete an existing l3-interface-ipv6-address-list
+      operationId: deleteNetworkPnfsPnfLagInterfacesLagInterfaceLInterfacesLInterfaceL3InterfaceIpv6AddressList
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: pnf-name
+          in: path
+          description: unique name of Physical Network Function.
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name that identifies the link aggregate interface
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name given to the interface
+          required: true
+          type: string
+        - name: l3-interface-ipv6-address
+          in: path
+          description: IP address
+          required: true
+          type: string
+        - name: resource-version
+          in: query
+          description: resource-version for concurrency
+          required: true
+          type: string
+  /network/pnfs/pnf/{pnf-name}/lag-interfaces/lag-interface/{interface-name}/l-interfaces/l-interface/{interface-name}:
+    get:
+      tags:
+        - Network
+      summary: returns l-interface
+      description: returns l-interface
+      operationId: getNetworkPnfsPnfLagInterfacesLagInterfaceLInterfacesLInterface
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "200":
+          description: successful operation
+          schema:
+              $ref: "#/definitions/l-interface"
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: pnf-name
+          in: path
+          description: unique name of Physical Network Function.
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name that identifies the link aggregate interface
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name given to the interface
+          required: true
+          type: string
+        - name: inv-status
+          in: query
+          description: CANOPI's inventory status.  Only set with values exactly as defined by CANOPI.
+          required: false
+          type: string
+        - name: interface-id
+          in: query
+          description: ID of interface
+          required: false
+          type: string
+        - name: interface-role
+          in: query
+          description: Role assigned to this Interface, should use values as defined in ECOMP Yang models.
+          required: false
+          type: string
+        - name: interface-id
+          in: query
+          description: ID of interface
+          required: false
+          type: string
+        - name: macaddr
+          in: query
+          description: MAC address for the interface
+          required: false
+          type: string
+        - name: network-name
+          in: query
+          description: Name of the network
+          required: false
+          type: string
+    put:
+      tags:
+        - Network
+      summary: create or update an existing l-interface
+      description: create or update an existing l-interface
+      operationId: createOrUpdateNetworkPnfsPnfLagInterfacesLagInterfaceLInterfacesLInterface
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: pnf-name
+          in: path
+          description: unique name of Physical Network Function.
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name that identifies the link aggregate interface
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name given to the interface
+          required: true
+          type: string
+        - name: body
+          in: body
+          description: l-interface object that needs to be created or updated
+          required: true
+          schema:
+            $ref: "#/definitions/l-interface"
+    delete:
+      tags:
+        - Network
+      summary: delete an existing l-interface
+      description: delete an existing l-interface
+      operationId: deleteNetworkPnfsPnfLagInterfacesLagInterfaceLInterfacesLInterface
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: pnf-name
+          in: path
+          description: unique name of Physical Network Function.
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name that identifies the link aggregate interface
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name given to the interface
+          required: true
+          type: string
+        - name: resource-version
+          in: query
+          description: resource-version for concurrency
+          required: true
+          type: string
+  /network/pnfs/pnf/{pnf-name}/lag-interfaces/lag-interface/{interface-name}/l-interfaces:
+    get:
+      tags:
+        - Network
+      summary: returns l-interfaces
+      description: returns l-interfaces
+      operationId: getNetworkPnfsPnfLagInterfacesLagInterfaceLInterfaces
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "200":
+          description: successful operation
+          schema:
+              $ref: "#/definitions/l-interfaces"
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: pnf-name
+          in: path
+          description: unique name of Physical Network Function.
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name that identifies the link aggregate interface
+          required: true
+          type: string
+        - name: inv-status
+          in: query
+          description: CANOPI's inventory status.  Only set with values exactly as defined by CANOPI.
+          required: false
+          type: string
+        - name: interface-id
+          in: query
+          description: ID of interface
+          required: false
+          type: string
+        - name: interface-role
+          in: query
+          description: Role assigned to this Interface, should use values as defined in ECOMP Yang models.
+          required: false
+          type: string
+  /network/pnfs/pnf/{pnf-name}/lag-interfaces/lag-interface/{interface-name}:
+    get:
+      tags:
+        - Network
+      summary: returns lag-interface
+      description: returns lag-interface
+      operationId: getNetworkPnfsPnfLagInterfacesLagInterface
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "200":
+          description: successful operation
+          schema:
+              $ref: "#/definitions/lag-interface"
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: pnf-name
+          in: path
+          description: unique name of Physical Network Function.
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name that identifies the link aggregate interface
+          required: true
+          type: string
+        - name: inv-status
+          in: query
+          description: CANOPI's inventory status.  Only set with values exactly as defined by CANOPI.
+          required: false
+          type: string
+        - name: interface-id
+          in: query
+          description: ID of interface
+          required: false
+          type: string
+        - name: interface-role
+          in: query
+          description: Role assigned to this Interface, should use values as defined in ECOMP Yang models.
+          required: false
+          type: string
+    put:
+      tags:
+        - Network
+      summary: create or update an existing lag-interface
+      description: create or update an existing lag-interface
+      operationId: createOrUpdateNetworkPnfsPnfLagInterfacesLagInterface
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: pnf-name
+          in: path
+          description: unique name of Physical Network Function.
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name that identifies the link aggregate interface
+          required: true
+          type: string
+        - name: body
+          in: body
+          description: lag-interface object that needs to be created or updated
+          required: true
+          schema:
+            $ref: "#/definitions/lag-interface"
+    delete:
+      tags:
+        - Network
+      summary: delete an existing lag-interface
+      description: delete an existing lag-interface
+      operationId: deleteNetworkPnfsPnfLagInterfacesLagInterface
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: pnf-name
+          in: path
+          description: unique name of Physical Network Function.
+          required: true
+          type: string
+        - name: interface-name
+          in: path
+          description: Name that identifies the link aggregate interface
+          required: true
+          type: string
+        - name: resource-version
+          in: query
+          description: resource-version for concurrency
+          required: true
+          type: string
+  /network/pnfs/pnf/{pnf-name}/lag-interfaces:
+    get:
+      tags:
+        - Network
+      summary: returns lag-interfaces
+      description: returns lag-interfaces
+      operationId: getNetworkPnfsPnfLagInterfaces
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "200":
+          description: successful operation
+          schema:
+              $ref: "#/definitions/lag-interfaces"
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: pnf-name
+          in: path
+          description: unique name of Physical Network Function.
+          required: true
+          type: string
+        - name: inv-status
+          in: query
+          description: CANOPI's inventory status.  Only set with values exactly as defined by CANOPI.
+          required: false
+          type: string
+  /network/pnfs/pnf/{pnf-name}:
+    get:
+      tags:
+        - Network
+      summary: returns pnf
+      description: returns pnf
+      operationId: getNetworkPnfsPnf
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "200":
+          description: successful operation
+          schema:
+              $ref: "#/definitions/pnf"
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: pnf-name
+          in: path
+          description: unique name of Physical Network Function.
+          required: true
+          type: string
+        - name: inv-status
+          in: query
+          description: CANOPI's inventory status.  Only set with values exactly as defined by CANOPI.
+          required: false
+          type: string
+    put:
+      tags:
+        - Network
+      summary: create or update an existing pnf
+      description: create or update an existing pnf
+      operationId: createOrUpdateNetworkPnfsPnf
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: pnf-name
+          in: path
+          description: unique name of Physical Network Function.
+          required: true
+          type: string
+        - name: body
+          in: body
+          description: pnf object that needs to be created or updated
+          required: true
+          schema:
+            $ref: "#/definitions/pnf"
+    delete:
+      tags:
+        - Network
+      summary: delete an existing pnf
+      description: delete an existing pnf
+      operationId: deleteNetworkPnfsPnf
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: pnf-name
+          in: path
+          description: unique name of Physical Network Function.
+          required: true
+          type: string
+        - name: resource-version
+          in: query
+          description: resource-version for concurrency
+          required: true
+          type: string
+  /network/pnfs:
+    get:
+      tags:
+        - Network
+      summary: returns pnfs
+      description: returns pnfs
+      operationId: getNetworkPnfs
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "200":
+          description: successful operation
+          schema:
+              $ref: "#/definitions/pnfs"
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+  /network/physical-links/physical-link/{link-name}/relationship-list/relationship:
+    put:
+      tags:
+        - Network
+      summary: see node definition for valid relationships
+      operationId: createOrUpdateNetworkPhysicalLinksPhysicalLinkRelationshipListRelationship
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: link-name
+          in: path
+          description: e.g., hostnameA_p-connection_nameA_hostnameZ+p_connection-nameZ
+          required: true
+          type: string
+        - name: body
+          in: body
+          description: relationship object that needs to be created or updated
+          required: true
+          schema:
+            $ref: "#/definitions/relationship"
+    delete:
+      tags:
+        - Network
+      summary: delete an existing relationship
+      description: delete an existing relationship
+      operationId: deleteNetworkPhysicalLinksPhysicalLinkRelationshipListRelationship
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: link-name
+          in: path
+          description: e.g., hostnameA_p-connection_nameA_hostnameZ+p_connection-nameZ
+          required: true
+          type: string
+  /network/physical-links/physical-link/{link-name}:
+    get:
+      tags:
+        - Network
+      summary: returns physical-link
+      description: returns physical-link
+      operationId: getNetworkPhysicalLinksPhysicalLink
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "200":
+          description: successful operation
+          schema:
+              $ref: "#/definitions/physical-link"
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: link-name
+          in: path
+          description: e.g., hostnameA_p-connection_nameA_hostnameZ+p_connection-nameZ
+          required: true
+          type: string
+        - name: circuit-id
+          in: query
+          description: Circuit it
+          required: false
+          type: string
+    put:
+      tags:
+        - Network
+      summary: create or update an existing physical-link
+      description: create or update an existing physical-link
+      operationId: createOrUpdateNetworkPhysicalLinksPhysicalLink
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: link-name
+          in: path
+          description: e.g., hostnameA_p-connection_nameA_hostnameZ+p_connection-nameZ
+          required: true
+          type: string
+        - name: body
+          in: body
+          description: physical-link object that needs to be created or updated
+          required: true
+          schema:
+            $ref: "#/definitions/physical-link"
+    delete:
+      tags:
+        - Network
+      summary: delete an existing physical-link
+      description: delete an existing physical-link
+      operationId: deleteNetworkPhysicalLinksPhysicalLink
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: link-name
+          in: path
+          description: e.g., hostnameA_p-connection_nameA_hostnameZ+p_connection-nameZ
+          required: true
+          type: string
+        - name: resource-version
+          in: query
+          description: resource-version for concurrency
+          required: true
+          type: string
+  /network/physical-links:
+    get:
+      tags:
+        - Network
+      summary: returns physical-links
+      description: returns physical-links
+      operationId: getNetworkPhysicalLinks
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "200":
+          description: successful operation
+          schema:
+              $ref: "#/definitions/physical-links"
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+  /network/ipsec-configurations/ipsec-configuration/{ipsec-configuration-id}/relationship-list/relationship:
+    put:
+      tags:
+        - Network
+      summary: see node definition for valid relationships
+      operationId: createOrUpdateNetworkIpsecConfigurationsIpsecConfigurationRelationshipListRelationship
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: ipsec-configuration-id
+          in: path
+          description: UUID of this configuration
+          required: true
+          type: string
+        - name: body
+          in: body
+          description: relationship object that needs to be created or updated
+          required: true
+          schema:
+            $ref: "#/definitions/relationship"
+    delete:
+      tags:
+        - Network
+      summary: delete an existing relationship
+      description: delete an existing relationship
+      operationId: deleteNetworkIpsecConfigurationsIpsecConfigurationRelationshipListRelationship
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: ipsec-configuration-id
+          in: path
+          description: UUID of this configuration
+          required: true
+          type: string
+  /network/ipsec-configurations/ipsec-configuration/{ipsec-configuration-id}/vig-servers/vig-server/{vig-address-type}/relationship-list/relationship:
+    put:
+      tags:
+        - Network
+      summary: see node definition for valid relationships
+      operationId: createOrUpdateNetworkIpsecConfigurationsIpsecConfigurationVigServersVigServerRelationshipListRelationship
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: ipsec-configuration-id
+          in: path
+          description: UUID of this configuration
+          required: true
+          type: string
+        - name: vig-address-type
+          in: path
+          description: indicates whether the VIG is for AVPN or INTERNET
+          required: true
+          type: string
+        - name: body
+          in: body
+          description: relationship object that needs to be created or updated
+          required: true
+          schema:
+            $ref: "#/definitions/relationship"
+    delete:
+      tags:
+        - Network
+      summary: delete an existing relationship
+      description: delete an existing relationship
+      operationId: deleteNetworkIpsecConfigurationsIpsecConfigurationVigServersVigServerRelationshipListRelationship
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: ipsec-configuration-id
+          in: path
+          description: UUID of this configuration
+          required: true
+          type: string
+        - name: vig-address-type
+          in: path
+          description: indicates whether the VIG is for AVPN or INTERNET
+          required: true
+          type: string
+  /network/ipsec-configurations/ipsec-configuration/{ipsec-configuration-id}/vig-servers/vig-server/{vig-address-type}:
+    get:
+      tags:
+        - Network
+      summary: returns vig-server
+      description: returns vig-server
+      operationId: getNetworkIpsecConfigurationsIpsecConfigurationVigServersVigServer
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "200":
+          description: successful operation
+          schema:
+              $ref: "#/definitions/vig-server"
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: ipsec-configuration-id
+          in: path
+          description: UUID of this configuration
+          required: true
+          type: string
+        - name: vig-address-type
+          in: path
+          description: indicates whether the VIG is for AVPN or INTERNET
+          required: true
+          type: string
+    put:
+      tags:
+        - Network
+      summary: create or update an existing vig-server
+      description: create or update an existing vig-server
+      operationId: createOrUpdateNetworkIpsecConfigurationsIpsecConfigurationVigServersVigServer
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: ipsec-configuration-id
+          in: path
+          description: UUID of this configuration
+          required: true
+          type: string
+        - name: vig-address-type
+          in: path
+          description: indicates whether the VIG is for AVPN or INTERNET
+          required: true
+          type: string
+        - name: body
+          in: body
+          description: vig-server object that needs to be created or updated
+          required: true
+          schema:
+            $ref: "#/definitions/vig-server"
+    delete:
+      tags:
+        - Network
+      summary: delete an existing vig-server
+      description: delete an existing vig-server
+      operationId: deleteNetworkIpsecConfigurationsIpsecConfigurationVigServersVigServer
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: ipsec-configuration-id
+          in: path
+          description: UUID of this configuration
+          required: true
+          type: string
+        - name: vig-address-type
+          in: path
+          description: indicates whether the VIG is for AVPN or INTERNET
+          required: true
+          type: string
+        - name: resource-version
+          in: query
+          description: resource-version for concurrency
+          required: true
+          type: string
+  /network/ipsec-configurations/ipsec-configuration/{ipsec-configuration-id}/vig-servers:
+    get:
+      tags:
+        - Network
+      summary: returns vig-servers
+      description: returns vig-servers
+      operationId: getNetworkIpsecConfigurationsIpsecConfigurationVigServers
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "200":
+          description: successful operation
+          schema:
+              $ref: "#/definitions/vig-servers"
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: ipsec-configuration-id
+          in: path
+          description: UUID of this configuration
+          required: true
+          type: string
+  /network/ipsec-configurations/ipsec-configuration/{ipsec-configuration-id}:
+    get:
+      tags:
+        - Network
+      summary: returns ipsec-configuration
+      description: returns ipsec-configuration
+      operationId: getNetworkIpsecConfigurationsIpsecConfiguration
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "200":
+          description: successful operation
+          schema:
+              $ref: "#/definitions/ipsec-configuration"
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: ipsec-configuration-id
+          in: path
+          description: UUID of this configuration
+          required: true
+          type: string
+    put:
+      tags:
+        - Network
+      summary: create or update an existing ipsec-configuration
+      description: create or update an existing ipsec-configuration
+      operationId: createOrUpdateNetworkIpsecConfigurationsIpsecConfiguration
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: ipsec-configuration-id
+          in: path
+          description: UUID of this configuration
+          required: true
+          type: string
+        - name: body
+          in: body
+          description: ipsec-configuration object that needs to be created or updated
+          required: true
+          schema:
+            $ref: "#/definitions/ipsec-configuration"
+    delete:
+      tags:
+        - Network
+      summary: delete an existing ipsec-configuration
+      description: delete an existing ipsec-configuration
+      operationId: deleteNetworkIpsecConfigurationsIpsecConfiguration
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: ipsec-configuration-id
+          in: path
+          description: UUID of this configuration
+          required: true
+          type: string
+        - name: resource-version
+          in: query
+          description: resource-version for concurrency
+          required: true
+          type: string
+  /network/ipsec-configurations:
+    get:
+      tags:
+        - Network
+      summary: returns ipsec-configurations
+      description: returns ipsec-configurations
+      operationId: getNetworkIpsecConfigurations
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "200":
+          description: successful operation
+          schema:
+              $ref: "#/definitions/ipsec-configurations"
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+  /network/route-table-references/route-table-reference/{route-table-reference-id}/relationship-list/relationship:
+    put:
+      tags:
+        - Network
+      summary: see node definition for valid relationships
+      operationId: createOrUpdateNetworkRouteTableReferencesRouteTableReferenceRelationshipListRelationship
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: route-table-reference-id
+          in: path
+          description: Route Table Reference id, UUID assigned to this instance.
+          required: true
+          type: string
+        - name: body
+          in: body
+          description: relationship object that needs to be created or updated
+          required: true
+          schema:
+            $ref: "#/definitions/relationship"
+    delete:
+      tags:
+        - Network
+      summary: delete an existing relationship
+      description: delete an existing relationship
+      operationId: deleteNetworkRouteTableReferencesRouteTableReferenceRelationshipListRelationship
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: route-table-reference-id
+          in: path
+          description: Route Table Reference id, UUID assigned to this instance.
+          required: true
+          type: string
+  /network/route-table-references/route-table-reference/{route-table-reference-id}:
+    get:
+      tags:
+        - Network
+      summary: returns route-table-reference
+      description: returns route-table-reference
+      operationId: getNetworkRouteTableReferencesRouteTableReference
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "200":
+          description: successful operation
+          schema:
+              $ref: "#/definitions/route-table-reference"
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: route-table-reference-id
+          in: path
+          description: Route Table Reference id, UUID assigned to this instance.
+          required: true
+          type: string
+        - name: route-table-reference-fqdn
+          in: query
+          description: FQDN entry in the route table.
+          required: false
+          type: string
+    put:
+      tags:
+        - Network
+      summary: create or update an existing route-table-reference
+      description: create or update an existing route-table-reference
+      operationId: createOrUpdateNetworkRouteTableReferencesRouteTableReference
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: route-table-reference-id
+          in: path
+          description: Route Table Reference id, UUID assigned to this instance.
+          required: true
+          type: string
+        - name: body
+          in: body
+          description: route-table-reference object that needs to be created or updated
+          required: true
+          schema:
+            $ref: "#/definitions/route-table-reference"
+    delete:
+      tags:
+        - Network
+      summary: delete an existing route-table-reference
+      description: delete an existing route-table-reference
+      operationId: deleteNetworkRouteTableReferencesRouteTableReference
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: route-table-reference-id
+          in: path
+          description: Route Table Reference id, UUID assigned to this instance.
+          required: true
+          type: string
+        - name: resource-version
+          in: query
+          description: resource-version for concurrency
+          required: true
+          type: string
+  /network/route-table-references:
+    get:
+      tags:
+        - Network
+      summary: returns route-table-references
+      description: returns route-table-references
+      operationId: getNetworkRouteTableReferences
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "200":
+          description: successful operation
+          schema:
+              $ref: "#/definitions/route-table-references"
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+  /network/instance-groups/instance-group/{id}/relationship-list/relationship:
+    put:
+      tags:
+        - Network
+      summary: see node definition for valid relationships
+      operationId: createOrUpdateNetworkInstanceGroupsInstanceGroupRelationshipListRelationship
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: id
+          in: path
+          description: Instance Group ID, UUID assigned to this instance.
+          required: true
+          type: string
+        - name: body
+          in: body
+          description: relationship object that needs to be created or updated
+          required: true
+          schema:
+            $ref: "#/definitions/relationship"
+    delete:
+      tags:
+        - Network
+      summary: delete an existing relationship
+      description: delete an existing relationship
+      operationId: deleteNetworkInstanceGroupsInstanceGroupRelationshipListRelationship
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: id
+          in: path
+          description: Instance Group ID, UUID assigned to this instance.
+          required: true
+          type: string
+  /network/instance-groups/instance-group/{id}:
+    get:
+      tags:
+        - Network
+      summary: returns instance-group
+      description: returns instance-group
+      operationId: getNetworkInstanceGroupsInstanceGroup
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "200":
+          description: successful operation
+          schema:
+              $ref: "#/definitions/instance-group"
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: id
+          in: path
+          description: Instance Group ID, UUID assigned to this instance.
+          required: true
+          type: string
+        - name: description
+          in: query
+          description: Descriptive text to help identify the usage of this instance-group
+          required: false
+          type: string
+        - name: type
+          in: query
+          description: Only valid value today is lower case ha for high availability
+          required: false
+          type: string
+        - name: sub-type
+          in: query
+          description: Valid values for ha type are [geo-activeactive, geo-activestandby, local-activeactive, local-activestandby]
+          required: false
+          type: string
+    put:
+      tags:
+        - Network
+      summary: create or update an existing instance-group
+      description: create or update an existing instance-group
+      operationId: createOrUpdateNetworkInstanceGroupsInstanceGroup
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: id
+          in: path
+          description: Instance Group ID, UUID assigned to this instance.
+          required: true
+          type: string
+        - name: body
+          in: body
+          description: instance-group object that needs to be created or updated
+          required: true
+          schema:
+            $ref: "#/definitions/instance-group"
+    delete:
+      tags:
+        - Network
+      summary: delete an existing instance-group
+      description: delete an existing instance-group
+      operationId: deleteNetworkInstanceGroupsInstanceGroup
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: id
+          in: path
+          description: Instance Group ID, UUID assigned to this instance.
+          required: true
+          type: string
+        - name: resource-version
+          in: query
+          description: resource-version for concurrency
+          required: true
+          type: string
+  /network/instance-groups:
+    get:
+      tags:
+        - Network
+      summary: returns instance-groups
+      description: returns instance-groups
+      operationId: getNetworkInstanceGroups
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "200":
+          description: successful operation
+          schema:
+              $ref: "#/definitions/instance-groups"
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+  /network/zones/zone/{zone-id}/relationship-list/relationship:
+    put:
+      tags:
+        - Network
+      summary: see node definition for valid relationships
+      operationId: createOrUpdateNetworkZonesZoneRelationshipListRelationship
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: zone-id
+          in: path
+          description: Code assigned by AIC to the zone
+          required: true
+          type: string
+        - name: body
+          in: body
+          description: relationship object that needs to be created or updated
+          required: true
+          schema:
+            $ref: "#/definitions/relationship"
+    delete:
+      tags:
+        - Network
+      summary: delete an existing relationship
+      description: delete an existing relationship
+      operationId: deleteNetworkZonesZoneRelationshipListRelationship
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: zone-id
+          in: path
+          description: Code assigned by AIC to the zone
+          required: true
+          type: string
+  /network/zones/zone/{zone-id}:
+    get:
+      tags:
+        - Network
+      summary: returns zone
+      description: returns zone
+      operationId: getNetworkZonesZone
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "200":
+          description: successful operation
+          schema:
+              $ref: "#/definitions/zone"
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: zone-id
+          in: path
+          description: Code assigned by AIC to the zone
+          required: true
+          type: string
+        - name: design-type
+          in: query
+          description: Design of zone [Medium/Large?]
+          required: false
+          type: string
+        - name: zone-context
+          in: query
+          description: Context of zone [production/test]
+          required: false
+          type: string
+    put:
+      tags:
+        - Network
+      summary: create or update an existing zone
+      description: create or update an existing zone
+      operationId: createOrUpdateNetworkZonesZone
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: zone-id
+          in: path
+          description: Code assigned by AIC to the zone
+          required: true
+          type: string
+        - name: body
+          in: body
+          description: zone object that needs to be created or updated
+          required: true
+          schema:
+            $ref: "#/definitions/zone"
+    delete:
+      tags:
+        - Network
+      summary: delete an existing zone
+      description: delete an existing zone
+      operationId: deleteNetworkZonesZone
+      consumes:
+        - application/json
+        - application/xml
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+      parameters:
+        - name: zone-id
+          in: path
+          description: Code assigned by AIC to the zone
+          required: true
+          type: string
+        - name: resource-version
+          in: query
+          description: resource-version for concurrency
+          required: true
+          type: string
+  /network/zones:
+    get:
+      tags:
+        - Network
+      summary: returns zones
+      description: returns zones
+      operationId: getNetworkZones
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        "200":
+          description: successful operation
+          schema:
+              $ref: "#/definitions/zones"
+        "default":
+          description: Response codes found in [response codes](https://wiki.onap.org/).
+definitions:
+  search:
+    properties:
+      edge-tag-query-result:
+        type: object
+        $ref: "#/definitions/edge-tag-query-result"
+      edge-tag-query-request:
+        type: object
+        $ref: "#/definitions/edge-tag-query-request"
+      search-results:
+        type: object
+        $ref: "#/definitions/search-results"
+      sdn-zone-response:
+        type: object
+        $ref: "#/definitions/sdn-zone-response"
+  actions:
+    description: |
+      APIs that are more action related than REST (e.g., notify, update).
+    properties:
+      update:
+        type: object
+        $ref: "#/definitions/update"
+      notify:
+        type: object
+        $ref: "#/definitions/notify"
+  relationship-data:
+    required:
+    - relationship-key
+    - relationship-value
+    properties:
+      relationship-key:
+        type: string
+        description: A keyword provided by A&AI to indicate an attribute.
+      relationship-value:
+        type: string
+        description: Value of the attribute.
+  related-to-property:
+    properties:
+      property-key:
+        type: string
+        description: Key part of a key/value pair
+      property-value:
+        type: string
+        description: Value part of a key/value pair
+  relationship:
+    properties:
+      related-to:
+        type: string
+        description: A keyword provided by A&AI to indicate type of node.
+      related-link:
+        type: string
+        description: URL to the object in A&AI.
+      relationship-data:
+        type: array
+        items:          
+          $ref: "#/definitions/relationship-data"
+      related-to-property:
+        type: array
+        items:          
+          $ref: "#/definitions/related-to-property"
+  relationship-list:
+    properties:
+      relationship:
+        type: array
+        items:          
+          $ref: "#/definitions/relationship"
+  ctag-pool:
+    description: |
+      A collection of C tags (vlan tags) grouped for a specific purpose.
+      ###### Related Nodes
+      - TO availability-zone (Many2Many)
+      - FROM complex (is composed of ctag-pool)
+      - FROM vpls-pe
+      - FROM generic-vnf
+    required:
+    - target-pe
+    - availability-zone-name
+    - ctag-pool-purpose
+    properties:
+      target-pe:
+        type: string
+        description: The Target provider edge router
+      availability-zone-name:
+        type: string
+        description: Name of the availability zone
+      ctag-pool-purpose:
+        type: string
+        description: Describes what the intended purpose of this pool is.
+      ctag-values:
+        type: string
+        description: Comma separated list of ctags
+      resource-version:
+        type: string
+        description: Used for optimistic concurrency.  Must be empty on create, valid on update and delete.
+      relationship-list:
+        type: array
+        items:
+          $ref: "#/definitions/relationship"
+  ctag-pools:
+    properties:
+      ctag-pool:
+        type: array
+        items:          
+          $ref: "#/definitions/ctag-pool"
+  complex:
+    description: |
+      Collection of physical locations that can house cloud-regions.
+      ###### Related Nodes
+      - TO ctag-pool (comprises complex, Many2Many)
+      - TO l3-network (Many2Many)
+      - FROM availability-zone
+      - FROM cloud-region
+      - FROM oam-network
+      - FROM pserver
+      - FROM pnf
+      - FROM vce
+      - FROM vpls-pe
+      - FROM volume-group
+      - FROM zone
+      - FROM generic-vnf
+    required:
+    - physical-location-id
+    - physical-location-type
+    - street1
+    - city
+    - postal-code
+    - country
+    - region
+    properties:
+      physical-location-id:
+        type: string
+        description: Unique identifier for physical location, e.g., CLLI
+      data-center-code:
+        type: string
+        description: Data center code which can be an alternate way to identify a complex
+      complex-name:
+        type: string
+        description: Gamma complex name for LCP instance.
+      identity-url:
+        type: string
+        description: URL of the keystone identity service
+      resource-version:
+        type: string
+        description: Used for optimistic concurrency.  Must be empty on create, valid on update and delete.
+      physical-location-type:
+        type: string
+        description: Type, e.g., central office, data center.
+      street1:
+        type: string
+      street2:
+        type: string
+      city:
+        type: string
+      state:
+        type: string
+      postal-code:
+        type: string
+      country:
+        type: string
+      region:
+        type: string
+      latitude:
+        type: string
+      longitude:
+        type: string
+      elevation:
+        type: string
+      lata:
+        type: string
+      ctag-pools:
+        type: array
+        items:
+          $ref: "#/definitions/ctag-pool"
+      relationship-list:
+        type: array
+        items:
+          $ref: "#/definitions/relationship"
+  complexes:
+    description: |
+      Collection of physical locations that can house cloud-regions.
+    properties:
+      complex:
+        type: array
+        items:          
+          $ref: "#/definitions/complex"
+  volume-group:
+    description: |
+      Persistent block-level storage.
+      ###### Related Nodes
+      - TO complex (Many2Many)
+      - TO tenant (Many2Many)
+      - FROM cloud-region (is composed of volume-group)
+      - FROM vf-module
+      - FROM generic-vnf
+    required:
+    - volume-group-id
+    - volume-group-name
+    - vnf-type
+    properties:
+      volume-group-id:
+        type: string
+        description: Unique ID of volume-group.
+      volume-group-name:
+        type: string
+        description: Name of the volume group.
+      heat-stack-id:
+        type: string
+        description: Heat stack id corresponding to this volume-group
+      vnf-type:
+        type: string
+        description: String capturing type of vnf, that was intended to identify the ASDC resource.  This field has been overloaded in service-specific ways and clients should expect changes to occur in the future to this field as ECOMP matures.
+      orchestration-status:
+        type: string
+        description: Orchestration status of this volume-group
+      model-customization-id:
+        type: string
+        description: captures the id of all the configuration used to customize the resource for the service.
+      vf-module-model-customization-id:
+        type: string
+        description: helps relate the volume group to the vf-module whose components will require the volume group
+      resource-version:
+        type: string
+        description: Used for optimistic concurrency.  Must be empty on create, valid on update and delete.
+      relationship-list:
+        type: array
+        items:
+          $ref: "#/definitions/relationship"
+  volume-groups:
+    description: |
+      Collection of persistent block-level storage.
+    properties:
+      volume-group:
+        type: array
+        items:          
+          $ref: "#/definitions/volume-group"
+  volume:
+    description: |
+      Ephemeral Block storage volume.
+      ###### Related Nodes
+      - FROM vserver (is composed of volume)
+    required:
+    - volume-id
+    - volume-selflink
+    properties:
+      volume-id:
+        type: string
+        description: Unique ID of block storage volume relative to the vserver.
+      volume-selflink:
+        type: string
+        description: URL to endpoint where AAI can get more details
+      resource-version:
+        type: string
+        description: Used for optimistic concurrency.  Must be empty on create, valid on update and delete.
+      relationship-list:
+        type: array
+        items:
+          $ref: "#/definitions/relationship"
+  volumes:
+    description: |
+      Collection of ephemeral Block storage volumes.
+    properties:
+      volume:
+        type: array
+        items:          
+          $ref: "#/definitions/volume"
+  l3-interface-ipv4-address-list:
+    description: |
+      IPv4 Address Range
+      ###### Related Nodes
+      - TO instance-group (Many2Many)
+      - TO l3-network (Many2Many)
+      - TO subnet (Many2Many)
+      - TO vnfc (is composed of l3-interface-ipv4-address-list, Many2One)
+      - FROM l-interface (is composed of l3-interface-ipv4-address-list)
+      - FROM vlan (is composed of l3-interface-ipv4-address-list)
+    required:
+    - l3-interface-ipv4-address
+    properties:
+      l3-interface-ipv4-address:
+        type: string
+        description: IP address
+      l3-interface-ipv4-prefix-length:
+        type: integer
+        format: int64
+        description: Prefix length, 32 for single address
+      vlan-id-inner:
+        type: integer
+        format: int64
+        description: Inner VLAN tag
+      vlan-id-outer:
+        type: integer
+        format: int64
+        description: Outer VLAN tag
+      is-floating:
+        type: boolean
+        description: Indicator of fixed or floating address
+      resource-version:
+        type: string
+        description: Used for optimistic concurrency.  Must be empty on create, valid on update and delete.
+      neutron-network-id:
+        type: string
+        description: Neutron network id of the interface that address belongs to
+      neutron-subnet-id:
+        type: string
+        description: Neutron id of subnet that address belongs to
+      relationship-list:
+        type: array
+        items:
+          $ref: "#/definitions/relationship"
+  l3-interface-ipv6-address-list:
+    description: |
+      IPv6 Address Range
+      ###### Related Nodes
+      - TO instance-group (Many2Many)
+      - TO l3-network (Many2Many)
+      - TO subnet (Many2Many)
+      - TO vnfc (is composed of l3-interface-ipv6-address-list, Many2One)
+      - FROM l-interface (is composed of l3-interface-ipv6-address-list)
+      - FROM vlan (is composed of l3-interface-ipv6-address-list)
+    required:
+    - l3-interface-ipv6-address
+    properties:
+      l3-interface-ipv6-address:
+        type: string
+        description: IP address
+      l3-interface-ipv6-prefix-length:
+        type: integer
+        format: int64
+        description: Prefix length, 128 for single address
+      vlan-id-inner:
+        type: integer
+        format: int64
+        description: Inner VLAN tag
+      vlan-id-outer:
+        type: integer
+        format: int64
+        description: Outer VLAN tag
+      is-floating:
+        type: boolean
+        description: Indicator of fixed or floating address
+      resource-version:
+        type: string
+        description: Used for optimistic concurrency.  Must be empty on create, valid on update and delete.
+      neutron-network-id:
+        type: string
+        description: Neutron network id of the interface that address belongs to
+      neutron-subnet-id:
+        type: string
+        description: Neutron id of subnet that address belongs to
+      relationship-list:
+        type: array
+        items:
+          $ref: "#/definitions/relationship"
+  vlan:
+    description: |
+      Definition of vlan
+      ###### Related Nodes
+      - TO l3-interface-ipv4-address-list (comprises vlan, Many2Many)
+      - TO l3-interface-ipv6-address-list (comprises vlan, Many2Many)
+      - TO multicast-configuration (Many2Many)
+      - TO logical-link (Many2Many)
+      - FROM l-interface (is composed of vlan)
+      - FROM service-instance
+      - FROM allotted-resource
+    required:
+    - vlan-interface
+    - in-maint
+    - is-ip-unnumbered
+    properties:
+      vlan-interface:
+        type: string
+        description: String that identifies the interface
+      vlan-id-inner:
+        type: integer
+        format: int64
+        description: Inner VLAN tag
+      vlan-id-outer:
+        type: integer
+        format: int64
+        description: Outer VLAN tag
+      resource-version:
+        type: string
+        description: Used for optimistic concurrency.  Must be empty on create, valid on update and delete.
+      speed-value:
+        type: string
+        description: Captures the numeric part of the speed
+      speed-units:
+        type: string
+        description: Captures the units corresponding to the speed
+      vlan-description:
+        type: string
+        description: Used to describe (the service associated with) the vlan
+      backdoor-connection:
+        type: string
+        description: Whether customer is going to use this VLAN for backdoor connection to another customer premise device.
+      vpn-key:
+        type: string
+        description: This indicates the customers VPN ID associated with this vlan
+      orchestration-status:
+        type: string
+        description: Status of a vnf's vlan interface, on which the customer circuit resides, mastered by SDN-C.
+      in-maint:
+        type: boolean
+      prov-status:
+        type: string
+        description: Prov Status of the VLAN configuration related to a logical interface. Valid values [PREPROV/NVTPROV/PROV].
+      is-ip-unnumbered:
+        type: boolean
+      relationship-list:
+        type: array
+        items:
+          $ref: "#/definitions/relationship"
+      l3-interface-ipv4-address-list:
+        type: array
+        items:          
+          $ref: "#/definitions/l3-interface-ipv4-address-list"
+      l3-interface-ipv6-address-list:
+        type: array
+        items:          
+          $ref: "#/definitions/l3-interface-ipv6-address-list"
+  vlans:
+    properties:
+      vlan:
+        type: array
+        items:          
+          $ref: "#/definitions/vlan"
+  sriov-vf:
+    description: |
+      SR-IOV Virtual Function (not to be confused with virtual network function)
+      ###### Related Nodes
+      - TO sriov-pf (Many2One)
+      - FROM l-interface (is composed of sriov-vf)
+    required:
+    - pci-id
+    properties:
+      pci-id:
+        type: string
+        description: PCI ID used to identify the sriov-vf
+      vf-vlan-filter:
+        type: string
+        description: This metadata provides option to specify list of VLAN filters applied on VF to pass the traffic to VM.
+      vf-mac-filter:
+        type: string
+        description: When MAC filters are specified, VF-agent service configures VFs to do MAC level filtering before the traffic is passed to VM.
+      vf-vlan-strip:
+        type: boolean
+        description: When this field is set to true, VF will configured to strip the outer TAG before the traffic is passed to VM.
+      vf-vlan-anti-spoof-check:
+        type: boolean
+        description: This option ensures anti VLAN spoof checks are done at the VF level to comply with security. The disable check will also be honored per the VNF needs for trusted VMs.
+      vf-mac-anti-spoof-check:
+        type: boolean
+        description: This option ensures anti MAC spoof checks are done at the VF level to comply with security. The disable check will also be honored per the VNF needs for trusted VMs.
+      vf-mirrors:
+        type: string
+        description: This option defines the set of Mirror objects which essentially mirrors the traffic from source to set of collector VNF Ports.
+      vf-broadcast-allow:
+        type: boolean
+        description: This option, if set to true, sets the VF in promiscuous mode and allows all broadcast traffic to reach the VM
+      vf-unknown-multicast-allow:
+        type: boolean
+        description: This option, if set to true, sets the VF in promiscuous mode and allows unknown multicast traffic to reach the VM
+      vf-unknown-unicast-allow:
+        type: boolean
+        description: This option, if set to true, sets the VF in promiscuous mode and allows unknown unicast traffic to reach the VM
+      vf-insert-stag:
+        type: boolean
+        description: This option, if set to true, instructs to insert outer tag after traffic comes out of VM.
+      vf-link-status:
+        type: string
+        description: This option is used to set the link status.  Valid values as of 1607 are on, off, and auto.
+      resource-version:
+        type: string
+        description: Used for optimistic concurrency.  Must be empty on create, valid on update and delete.
+      neutron-network-id:
+        type: string
+        description: Neutron network id of the interface
+      relationship-list:
+        type: array
+        items:
+          $ref: "#/definitions/relationship"
+  sriov-vfs:
+    description: |
+      Collection of SR-IOV Virtual Functions.
+    properties:
+      sriov-vf:
+        type: array
+        items:          
+          $ref: "#/definitions/sriov-vf"
+  l-interface:
+    description: |
+      Logical interfaces, e.g., a vnic.
+      ###### Related Nodes
+      - TO instance-group (Many2Many)
+      - TO l3-interface-ipv4-address-list (comprises l-interface, Many2Many)
+      - TO l3-interface-ipv6-address-list (comprises l-interface, Many2Many)
+      - TO l-interface (comprises l-interface, One2Many)
+      - TO logical-link (Many2Many)
+      - TO vlan (comprises l-interface, Many2Many)
+      - TO sriov-vf (comprises l-interface, One2One)
+      - FROM generic-vnf (is composed of l-interface)
+      - FROM lag-interface (is composed of l-interface)
+      - FROM newvce (is composed of l-interface)
+      - FROM p-interface (is composed of l-interface)
+      - FROM vserver (is composed of l-interface)
+      - FROM allotted-resource
+      - FROM l-interface (is composed of l-interface)
+    required:
+    - interface-name
+    - is-port-mirrored
+    - in-maint
+    - is-ip-unnumbered
+    properties:
+      interface-name:
+        type: string
+        description: Name given to the interface
+      interface-role:
+        type: string
+        description: E.g., CUSTOMER, UPLINK, etc.
+      v6-wan-link-ip:
+        type: string
+        description: Questionably placed - v6 ip addr of this interface (is in vr-lan-interface from Mary B.
+      selflink:
+        type: string
+        description: URL to endpoint where AAI can get more details
+      interface-id:
+        type: string
+        description: ID of interface
+      macaddr:
+        type: string
+        description: MAC address for the interface
+      network-name:
+        type: string
+        description: Name of the network
+      management-option:
+        type: string
+        description: Whether A&AI should be managing this interface of not. Could have value like CUSTOMER
+      interface-description:
+        type: string
+        description: Human friendly text regarding this interface.
+      is-port-mirrored:
+        type: boolean
+      resource-version:
+        type: string
+        description: Used for optimistic concurrency.  Must be empty on create, valid on update and delete.
+      in-maint:
+        type: boolean
+      prov-status:
+        type: string
+        description: Prov Status of the logical interface. Valid values [PREPROV/NVTPROV/PROV].
+      is-ip-unnumbered:
+        type: boolean
+      allowed-address-pairs:
+        type: string
+        description: Freeform field for storing an ip address, list of ip addresses or a subnet block.
+      vlans:
+        type: array
+        items:
+          $ref: "#/definitions/vlan"
+      sriov-vfs:
+        type: array
+        items:
+          $ref: "#/definitions/sriov-vf"
+      l-interfaces:
+        type: array
+        items:
+          $ref: "#/definitions/l-interface"
+      relationship-list:
+        type: array
+        items:
+          $ref: "#/definitions/relationship"
+      l3-interface-ipv4-address-list:
+        type: array
+        items:          
+          $ref: "#/definitions/l3-interface-ipv4-address-list"
+      l3-interface-ipv6-address-list:
+        type: array
+        items:          
+          $ref: "#/definitions/l3-interface-ipv6-address-list"
+  l-interfaces:
+    description: |
+      Collection of logical interfaces.
+    properties:
+      l-interface:
+        type: array
+        items:          
+          $ref: "#/definitions/l-interface"
+  vserver:
+    description: |
+      Virtual Servers, aka virtual machine or VM.
+      ###### Related Nodes
+      - TO flavor (Many2One)
+      - TO image (Many2One)
+      - TO l-interface (comprises vserver, Many2Many)
+      - TO pserver (Many2One)
+      - TO volume (comprises vserver, Many2Many)
+      - TO vnfc (Many2Many)
+      - TO snapshot (One2One)
+      - TO vf-module (Many2One)
+      - FROM generic-vnf
+      - FROM tenant (is composed of vserver)
+      - FROM vce
+    required:
+    - vserver-id
+    - vserver-name
+    - vserver-selflink
+    - in-maint
+    - is-closed-loop-disabled
+    properties:
+      vserver-id:
+        type: string
+        description: Unique identifier for this vserver relative to its tenant
+      vserver-name:
+        type: string
+        description: Name of vserver
+      vserver-name2:
+        type: string
+        description: Alternative name of vserver
+      prov-status:
+        type: string
+        description: Trigger for operational monitoring of this resource by Service Assurance systems.
+      vserver-selflink:
+        type: string
+        description: URL to endpoint where AAI can get more details
+      in-maint:
+        type: boolean
+      is-closed-loop-disabled:
+        type: boolean
+      resource-version:
+        type: string
+        description: Used for optimistic concurrency.  Must be empty on create, valid on update and delete.
+      volumes:
+        type: array
+        items:
+          $ref: "#/definitions/volume"
+      relationship-list:
+        type: array
+        items:
+          $ref: "#/definitions/relationship"
+      l-interfaces:
+        type: array
+        items:
+          $ref: "#/definitions/l-interface"
+  vservers:
+    description: |
+      Collection of virtual Servers, aka virtual machines or VMs.
+    properties:
+      vserver:
+        type: array
+        items:          
+          $ref: "#/definitions/vserver"
+  tenant:
+    description: |
+      Openstack tenant
+      ###### Related Nodes
+      - TO l3-network (Many2Many)
+      - TO service-subscription (Many2Many)
+      - TO vserver (comprises tenant, One2Many)
+      - FROM cloud-region (is composed of tenant)
+      - FROM group-assignment
+      - FROM volume-group
+    required:
+    - tenant-id
+    - tenant-name
+    properties:
+      tenant-id:
+        type: string
+        description: Unique id relative to the cloud-region.
+      tenant-name:
+        type: string
+        description: Readable name of tenant
+      tenant-context:
+        type: string
+        description: This field will store the tenant context.
+      resource-version:
+        type: string
+        description: Used for optimistic concurrency.  Must be empty on create, valid on update and delete.
+      vservers:
+        type: array
+        items:
+          $ref: "#/definitions/vserver"
+      relationship-list:
+        type: array
+        items:
+          $ref: "#/definitions/relationship"
+  tenants:
+    description: |
+      Collection of openstack tenants.
+    properties:
+      tenant:
+        type: array
+        items:          
+          $ref: "#/definitions/tenant"
+  flavor:
+    description: |
+      Openstack flavor.
+      ###### Related Nodes
+      - FROM cloud-region (is composed of flavor)
+      - FROM vserver
+    required:
+    - flavor-id
+    - flavor-name
+    - flavor-selflink
+    properties:
+      flavor-id:
+        type: string
+        description: Flavor id, expected to be unique across cloud-region.
+      flavor-name:
+        type: string
+        description: Flavor name
+      flavor-vcpus:
+        type: integer
+        format: int32
+        description: Number of CPUs
+      flavor-ram:
+        type: integer
+        format: int32
+        description: Amount of memory
+      flavor-disk:
+        type: integer
+        format: int32
+        description: Disk space
+      flavor-ephemeral:
+        type: integer
+        format: int32
+        description: Amount of ephemeral disk space
+      flavor-swap:
+        type: string
+        description: amount of swap space allocation
+      flavor-is-public:
+        type: boolean
+        description: whether flavor is available to all users or private to the tenant it was created in.
+      flavor-selflink:
+        type: string
+        description: URL to endpoint where AAI can get more details
+      flavor-disabled:
+        type: boolean
+        description: Boolean as to whether this flavor is no longer enabled
+      resource-version:
+        type: string
+        description: Used for optimistic concurrency.  Must be empty on create, valid on update and delete.
+      relationship-list:
+        type: array
+        items:
+          $ref: "#/definitions/relationship"
+  flavors:
+    description: |
+      Collection of openstack flavors.
+    properties:
+      flavor:
+        type: array
+        items:          
+          $ref: "#/definitions/flavor"
+  group-assignment:
+    description: |
+      Openstack group-assignment used to store exclusivity groups (EG).
+      ###### Related Nodes
+      - TO tenant (Many2Many)
+      - TO pserver (One2Many)
+      - FROM cloud-region (is composed of group-assignment)
+    required:
+    - group-id
+    - group-type
+    - group-name
+    properties:
+      group-id:
+        type: string
+        description: Group id, expected to be unique across cloud-region.
+      group-type:
+        type: string
+        description: Group type - the type of group this instance refers to
+      group-name:
+        type: string
+        description: Group name - name assigned to the group
+      group-description:
+        type: string
+        description: Group description - description of the group
+      resource-version:
+        type: string
+        description: Used for optimistic concurrency.  Must be empty on create, valid on update and delete.
+      relationship-list:
+        type: array
+        items:
+          $ref: "#/definitions/relationship"
+  group-assignments:
+    description: |
+      Collection of openstack group assignments
+    properties:
+      group-assignment:
+        type: array
+        items:          
+          $ref: "#/definitions/group-assignment"
+  snapshot:
+    description: |
+      Openstack snapshot
+      ###### Related Nodes
+      - FROM cloud-region (is composed of snapshot)
+      - FROM vserver
+    required:
+    - snapshot-id
+    properties:
+      snapshot-id:
+        type: string
+        description: Snapshot id, this is the key UUID assoc associated in glance with the snapshots.
+      snapshot-name:
+        type: string
+        description: Snapshot name
+      snapshot-architecture:
+        type: string
+        description: Operating system architecture
+      snapshot-os-distro:
+        type: string
+        description: The common name of the operating system distribution in lowercase
+      snapshot-os-version:
+        type: string
+        description: The operating system version as specified by the distributor.
+      application:
+        type: string
+        description: The application that the image instantiates.
+      application-vendor:
+        type: string
+        description: The vendor of the application.
+      application-version:
+        type: string
+        description: The version of the application.
+      snapshot-selflink:
+        type: string
+        description: URL to endpoint where AAI can get more details
+      prev-snapshot-id:
+        type: string
+        description: This field contains the UUID of the previous snapshot (if any).
+      resource-version:
+        type: string
+        description: Used for optimistic concurrency.  Must be empty on create, valid on update and delete.
+      relationship-list:
+        type: array
+        items:
+          $ref: "#/definitions/relationship"
+  snapshots:
+    description: |
+      Collection of openstack snapshots
+    properties:
+      snapshot:
+        type: array
+        items:          
+          $ref: "#/definitions/snapshot"
+  metadatum:
+    description: |
+      Key/value pairs
+      ###### Related Nodes
+      - FROM configuration (is composed of metadatum)
+      - FROM image (is composed of metadatum)
+      - FROM model-ver (is composed of metadatum)
+      - FROM service-instance (is composed of metadatum)
+      - FROM connector (is composed of metadatum)
+    required:
+    - metaname
+    - metaval
+    properties:
+      metaname:
+        type: string
+      metaval:
+        type: string
+      resource-version:
+        type: string
+        description: Used for optimistic concurrency.  Must be empty on create, valid on update and delete.
+  metadata:
+    description: |
+      Collection of metadatum (key/value pairs)
+    properties:
+      metadatum:
+        type: array
+        items:          
+          $ref: "#/definitions/metadatum"
+  image:
+    description: |
+      Openstack image.
+      ###### Related Nodes
+      - TO metadatum (comprises image, Many2Many)
+      - FROM cloud-region (is composed of image)
+      - FROM vserver
+    required:
+    - image-id
+    - image-name
+    - image-os-distro
+    - image-os-version
+    - image-selflink
+    properties:
+      image-id:
+        type: string
+        description: Image id, expected to be unique across cloud region
+      image-name:
+        type: string
+        description: Image name
+      image-architecture:
+        type: string
+        description: Operating system architecture.
+      image-os-distro:
+        type: string
+        description: The common name of the operating system distribution in lowercase
+      image-os-version:
+        type: string
+        description: The operating system version as specified by the distributor.
+      application:
+        type: string
+        description: The application that the image instantiates.
+      application-vendor:
+        type: string
+        description: The vendor of the application.
+      application-version:
+        type: string
+        description: The version of the application.
+      image-selflink:
+        type: string
+        description: URL to endpoint where AAI can get more details
+      resource-version:
+        type: string
+        description: Used for optimistic concurrency.  Must be empty on create, valid on update and delete.
+      relationship-list:
+        type: array
+        items:
+          $ref: "#/definitions/relationship"
+      metadata:
+        type: array
+        items:
+          $ref: "#/definitions/metadatum"
+  images:
+    description: |
+      Collectio of Openstack images.
+    properties:
+      image:
+        type: array
+        items:          
+          $ref: "#/definitions/image"
+  dvs-switch:
+    description: |
+      Digital virtual switch metadata, used by SDN-C to configure VCEs.  A&AI needs to receive this data from the PO deployment team and administer it using the provisioningTool.sh into A&AI. 
+      ###### Related Nodes
+      - TO availability-zone (Many2Many)
+      - FROM cloud-region (is composed of dvs-switch)
+    required:
+    - switch-name
+    - vcenter-url
+    properties:
+      switch-name:
+        type: string
+        description: DVS switch name
+      vcenter-url:
+        type: string
+        description: URL used to reach the vcenter
+      resource-version:
+        type: string
+        description: Used for optimistic concurrency.  Must be empty on create, valid on update and delete.
+      relationship-list:
+        type: array
+        items:
+          $ref: "#/definitions/relationship"
+  dvs-switches:
+    description: |
+      Collection of digital virtual switch metadata used for vmWare VCEs and GenericVnfs.
+    properties:
+      dvs-switch:
+        type: array
+        items:          
+          $ref: "#/definitions/dvs-switch"
+  oam-network:
+    description: |
+      OAM network, to be deprecated shortly.  Do not use for new purposes. 
+      ###### Related Nodes
+      - TO complex (Many2Many)
+      - TO service-capability (Many2Many)
+      - FROM cloud-region (is composed of oam-network)
+    required:
+    - network-uuid
+    - network-name
+    - cvlan-tag
+    properties:
+      network-uuid:
+        type: string
+        description: UUID of the network. Unique across a cloud-region
+      network-name:
+        type: string
+        description: Name of the network.
+      cvlan-tag:
+        type: integer
+        format: int64
+        description: cvlan-id
+      ipv4-oam-gateway-address:
+        type: string
+        description: Used for VNF firewall rule so customer cannot send customer traffic over this oam network
+      ipv4-oam-gateway-address-prefix-length:
+        type: integer
+        format: int32
+        description: Used for VNF firewall rule so customer cannot send customer traffic over this oam network
+      resource-version:
+        type: string
+        description: Used for optimistic concurrency.  Must be empty on create, valid on update and delete.
+      relationship-list:
+        type: array
+        items:
+          $ref: "#/definitions/relationship"
+  oam-networks:
+    description: |
+      Collection of OAM networks, to be deprecated shortly.  Do not use for new purposes. 
+    properties:
+      oam-network:
+        type: array
+        items:          
+          $ref: "#/definitions/oam-network"
+  availability-zone:
+    description: |
+      Availability zone, a collection of compute hosts/pservers
+      ###### Related Nodes
+      - TO complex (Many2Many)
+      - TO service-capability (Many2Many)
+      - FROM cloud-region (is composed of availability-zone)
+      - FROM ctag-pool
+      - FROM dvs-switch
+      - FROM generic-vnf
+      - FROM pserver
+      - FROM vce
+    required:
+    - availability-zone-name
+    - hypervisor-type
+    properties:
+      availability-zone-name:
+        type: string
+        description: Name of the availability zone.  Unique across a cloud region
+      hypervisor-type:
+        type: string
+        description: Type of hypervisor.  Source of truth should define valid values.
+      operational-status:
+        type: string
+        description: State that indicates whether the availability zone should be used, etc.  Source of truth should define valid values.
+      resource-version:
+        type: string
+        description: Used for optimistic concurrency.  Must be empty on create, valid on update and delete.
+      relationship-list:
+        type: array
+        items:
+          $ref: "#/definitions/relationship"
+  availability-zones:
+    description: |
+      Collection of availability zones
+    properties:
+      availability-zone:
+        type: array
+        items:          
+          $ref: "#/definitions/availability-zone"
+  esr-system-info:
+    description: |
+      Persist common address information of external systems.
+      ###### Related Nodes
+      - FROM esr-ems (is composed of esr-system-info)
+      - FROM esr-vnfm (is composed of esr-system-info)
+      - FROM esr-thirdparty-sdnc (is composed of esr-system-info)
+      - FROM cloud-region (is composed of esr-system-info)
+    required:
+    - esr-system-info-id
+    - user-name
+    - password
+    - system-type
+    properties:
+      esr-system-info-id:
+        type: string
+        description: Unique ID of esr system info.
+      system-name:
+        type: string
+        description: name of external system.
+      type:
+        type: string
+        description: type of external systems.
+      vendor:
+        type: string
+        description: vendor of external systems.
+      version:
+        type: string
+        description: version of external systems.
+      service-url:
+        type: string
+        description: url used to access external systems.
+      user-name:
+        type: string
+        description: username used to access external systems.
+      password:
+        type: string
+        description: password used to access external systems.
+      system-type:
+        type: string
+        description: it could be vim/vnfm/thirdparty-sdnc/ems-resource/ems-performance/ems-alarm.
+      protocol:
+        type: string
+        description: protocol of third party SDNC, for example netconf/snmp.
+      ssl-cacert:
+        type: string
+        description: ca file content if enabled ssl on auth-url.
+      ssl-insecure:
+        type: boolean
+        description: Whether to verify VIM's certificate.
+      ip-address:
+        type: string
+        description: service IP of ftp server.
+      port:
+        type: string
+        description: service port of ftp server.
+      cloud-domain:
+        type: string
+        description: domain info for authentication.
+      default-tenant:
+        type: string
+        description: default tenant of VIM.
+      passive:
+        type: boolean
+        description: ftp passive mode or not.
+      remote-path:
+        type: string
+        description: resource or performance data file path.
+      system-status:
+        type: string
+        description: the status of external system.
+      resource-version:
+        type: string
+        description: Used for optimistic concurrency.  Must be empty on create, valid on update and delete.
+      relationship-list:
+        type: array
+        items:
+          $ref: "#/definitions/relationship"
+  esr-system-info-list:
+    description: |
+      Collection of persistent block-level external system auth info.
+    properties:
+      esr-system-info:
+        type: array
+        items:          
+          $ref: "#/definitions/esr-system-info"
+  vip-ipv4-address-list:
+    description: |
+      IPv4 Address Range
+      ###### Related Nodes
+      - TO instance-group (Many2Many)
+      - TO subnet (Many2Many)
+      - FROM vnfc
+      - FROM cloud-region (is composed of vip-ipv4-address-list)
+    required:
+    - vip-ipv4-address
+    properties:
+      vip-ipv4-address:
+        type: string
+        description: IP address
+      vip-ipv4-prefix-length:
+        type: integer
+        format: int64
+        description: Prefix length, 32 for single address
+      vlan-id-inner:
+        type: integer
+        format: int64
+        description: Inner VLAN tag
+      vlan-id-outer:
+        type: integer
+        format: int64
+        description: Outer VLAN tag
+      is-floating:
+        type: boolean
+        description: Indicator of fixed or floating address
+      resource-version:
+        type: string
+        description: Used for optimistic concurrency.  Must be empty on create, valid on update and delete.
+      neutron-network-id:
+        type: string
+        description: Neutron network id of the interface that address belongs to
+      neutron-subnet-id:
+        type: string
+        description: Neutron id of subnet that address belongs to
+      relationship-list:
+        type: array
+        items:
+          $ref: "#/definitions/relationship"
+  vip-ipv6-address-list:
+    description: |
+      IPv6 Address Range
+      ###### Related Nodes
+      - TO instance-group (Many2Many)
+      - TO subnet (Many2Many)
+      - FROM vnfc
+      - FROM cloud-region (is composed of vip-ipv6-address-list)
+    required:
+    - vip-ipv6-address
+    properties:
+      vip-ipv6-address:
+        type: string
+        description: IP address
+      vip-ipv6-prefix-length:
+        type: integer
+        format: int64
+        description: Prefix length, 128 for single address
+      vlan-id-inner:
+        type: integer
+        format: int64
+        description: Inner VLAN tag
+      vlan-id-outer:
+        type: integer
+        format: int64
+        description: Outer VLAN tag
+      is-floating:
+        type: boolean
+        description: Indicator of fixed or floating address
+      resource-version:
+        type: string
+        description: Used for optimistic concurrency.  Must be empty on create, valid on update and delete.
+      neutron-network-id:
+        type: string
+        description: Neutron network id of the interface that address belongs to
+      neutron-subnet-id:
+        type: string
+        description: Neutron id of subnet that address belongs to
+      relationship-list:
+        type: array
+        items:
+          $ref: "#/definitions/relationship"
+  cloud-region:
+    description: |
+      cloud-region designates an installation of a cloud cluster or region or instantiation.
+      ###### Related Nodes
+      - TO esr-system-info (comprises cloud-region, One2Many)
+      - TO complex (Many2One)
+      - TO l3-network (Many2Many)
+      - TO tenant (comprises cloud-region, One2Many)
+      - TO image (comprises cloud-region, One2Many)
+      - TO flavor (comprises cloud-region, One2Many)
+      - TO availability-zone (comprises cloud-region, One2Many)
+      - TO oam-network (comprises cloud-region, One2Many)
+      - TO dvs-switch (comprises cloud-region, One2Many)
+      - TO volume-group (comprises cloud-region, One2Many)
+      - TO group-assignment (comprises cloud-region, One2Many)
+      - TO snapshot (comprises cloud-region, One2Many)
+      - TO zone (Many2One)
+      - TO vip-ipv4-address-list (comprises cloud-region, One2Many)
+      - TO vip-ipv6-address-list (comprises cloud-region, One2Many)
+      - FROM pserver
+      - FROM logical-link
+    required:
+    - cloud-owner
+    - cloud-region-id
+    - sriov-automation
+    properties:
+      cloud-owner:
+        type: string
+        description: Identifies the vendor and cloud name. First part of composite key should be formatted as vendor-cloudname
+      cloud-region-id:
+        type: string
+        description: Identifier used by the vendor for the region. Second part of composite key
+      cloud-type:
+        type: string
+        description: Type of the cloud (e.g., openstack)
+      owner-defined-type:
+        type: string
+        description: Cloud-owner defined type indicator (e.g., dcp, lcp)
+      cloud-region-version:
+        type: string
+        description: Software version employed at the site.  NOTE - THIS FIELD IS NOT KEPT UP TO DATE.
+      identity-url:
+        type: string
+        description: URL of the keystone identity service
+      cloud-zone:
+        type: string
+        description: Zone where the cloud is homed.  NOTE - THIS FIELD IS NOT CORRECTLY POPULATED.
+      complex-name:
+        type: string
+        description: complex name for cloud-region instance.  NOTE - THIS FIELD IS NOT CORRECTLY POPULATED.
+      sriov-automation:
+        type: boolean
+      cloud-extra-info:
+        type: string
+        description: ESR inputs extra information about the VIM or Cloud which will be decoded by MultiVIM.
+      cloud-epa-caps:
+        type: string
+        description: MultiVIM will discover and expose EPA capabilities.
+      resource-version:
+        type: string
+        description: Used for optimistic concurrency.  Must be empty on create, valid on update and delete.
+      volume-groups:
+        type: array
+        items:
+          $ref: "#/definitions/volume-group"
+      tenants:
+        type: array
+        items:
+          $ref: "#/definitions/tenant"
+      flavors:
+        type: array
+        items:
+          $ref: "#/definitions/flavor"
+      group-assignments:
+        type: array
+        items:
+          $ref: "#/definitions/group-assignment"
+      snapshots:
+        type: array
+        items:
+          $ref: "#/definitions/snapshot"
+      images:
+        type: array
+        items:
+          $ref: "#/definitions/image"
+      dvs-switches:
+        type: array
+        items:
+          $ref: "#/definitions/dvs-switch"
+      oam-networks:
+        type: array
+        items:
+          $ref: "#/definitions/oam-network"
+      availability-zones:
+        type: array
+        items:
+          $ref: "#/definitions/availability-zone"
+      relationship-list:
+        type: array
+        items:
+          $ref: "#/definitions/relationship"
+      esr-system-info-list:
+        type: array
+        items:
+          $ref: "#/definitions/esr-system-info"
+      vip-ipv4-address-list:
+        type: array
+        items:          
+          $ref: "#/definitions/vip-ipv4-address-list"
+      vip-ipv6-address-list:
+        type: array
+        items:          
+          $ref: "#/definitions/vip-ipv6-address-list"
+  cloud-regions:
+    properties:
+      cloud-region:
+        type: array
+        items:          
+          $ref: "#/definitions/cloud-region"
+  network-profile:
+    description: |
+      Network profile populated by SDN-GP for SNMP
+      ###### Related Nodes
+      - FROM generic-vnf
+    required:
+    - nm-profile-name
+    properties:
+      nm-profile-name:
+        type: string
+        description: Unique name of network profile.
+      community-string:
+        type: string
+        description: Encrypted SNMP community string
+      resource-version:
+        type: string
+        description: Used for optimistic concurrency.  Must be empty on create, valid on update and delete.
+      relationship-list:
+        type: array
+        items:
+          $ref: "#/definitions/relationship"
+  network-profiles:
+    description: |
+      Collection of network profiles
+    properties:
+      network-profile:
+        type: array
+        items:          
+          $ref: "#/definitions/network-profile"
+  sriov-pf:
+    description: |
+      SR-IOV Physical Function
+      ###### Related Nodes
+      - FROM p-interface (is composed of sriov-pf)
+      - FROM sriov-vf
+    required:
+    - pf-pci-id
+    properties:
+      pf-pci-id:
+        type: string
+        description: Identifier for the sriov-pf
+      resource-version:
+        type: string
+        description: Used for optimistic concurrency.  Must be empty on create, valid on update and delete.
+      relationship-list:
+        type: array
+        items:
+          $ref: "#/definitions/relationship"
+  sriov-pfs:
+    description: |
+      Collection of SR-IOV Physical Functions.
+    properties:
+      sriov-pf:
+        type: array
+        items:          
+          $ref: "#/definitions/sriov-pf"
+  p-interface:
+    description: |
+      Physical interface (e.g., nic)
+      ###### Related Nodes
+      - TO l-interface (comprises p-interface, Many2Many)
+      - TO physical-link (Many2Many)
+      - TO logical-link (Many2One)
+      - TO sriov-pf (comprises p-interface, One2One)
+      - FROM lag-interface
+      - FROM pserver (is composed of p-interface)
+      - FROM pnf (is composed of p-interface)
+      - FROM vpls-pe (is composed of p-interface)
+    required:
+    - interface-name
+    - in-maint
+    properties:
+      interface-name:
+        type: string
+        description: Name that identifies the physical interface
+      speed-value:
+        type: string
+        description: Captures the numeric part of the speed
+      speed-units:
+        type: string
+        description: Captures the units corresponding to the speed
+      port-description:
+        type: string
+        description: Nature of the services and connectivity on this port.
+      equipment-identifier:
+        type: string
+        description: CLEI or other specification for p-interface hardware.
+      interface-role:
+        type: string
+        description: Role specification for p-interface hardware.
+      interface-type:
+        type: string
+        description: Indicates the physical properties of the interface.
+      prov-status:
+        type: string
+        description: Trigger for operational monitoring of this resource by Service Assurance systems.
+      mac-addresss:
+        type: string
+        description: MAC Address of the p-interface.
+      resource-version:
+        type: string
+        description: Used for optimistic concurrency.  Must be empty on create, valid on update and delete.
+      in-maint:
+        type: boolean
+      inv-status:
+        type: string
+        description: inventory status
+      relationship-list:
+        type: array
+        items:
+          $ref: "#/definitions/relationship"
+      sriov-pfs:
+        type: array
+        items:
+          $ref: "#/definitions/sriov-pf"
+      l-interfaces:
+        type: array
+        items:
+          $ref: "#/definitions/l-interface"
+  p-interfaces:
+    description: |
+      Collection of physical interfaces.
+    properties:
+      p-interface:
+        type: array
+        items:          
+          $ref: "#/definitions/p-interface"
+  lag-interface:
+    description: |
+      Link aggregate interface
+      ###### Related Nodes
+      - TO logical-link (Many2Many)
+      - TO lag-link (Many2Many)
+      - TO p-interface (Many2Many)
+      - TO l-interface (comprises lag-interface, Many2Many)
+      - FROM generic-vnf (is composed of lag-interface)
+      - FROM pserver (is composed of lag-interface)
+      - FROM pnf (is composed of lag-interface)
+      - FROM vpls-pe (is composed of lag-interface)
+    required:
+    - interface-name
+    - in-maint
+    properties:
+      interface-name:
+        type: string
+        description: Name that identifies the link aggregate interface
+      interface-description:
+        type: string
+        description: Human friendly text regarding this interface.
+      resource-version:
+        type: string
+        description: Used for optimistic concurrency.  Must be empty on create, valid on update and delete.
+      speed-value:
+        type: string
+        description: Captures the numeric part of the speed
+      speed-units:
+        type: string
+        description: Captures the units corresponding to the speed
+      interface-id:
+        type: string
+        description: ID of interface
+      interface-role:
+        type: string
+        description: Role assigned to this Interface, should use values as defined in ECOMP Yang models.
+      prov-status:
+        type: string
+        description: Trigger for operational monitoring of this resource by Service Assurance systems.
+      in-maint:
+        type: boolean
+      relationship-list:
+        type: array
+        items:
+          $ref: "#/definitions/relationship"
+      l-interfaces:
+        type: array
+        items:
+          $ref: "#/definitions/l-interface"
+  lag-interfaces:
+    description: |
+      Collection of link aggregate interfaces.
+    properties:
+      lag-interface:
+        type: array
+        items:          
+          $ref: "#/definitions/lag-interface"
+  pserver:
+    description: |
+      Compute host whose hostname must be unique and must exactly match what is sent as a relationship to a vserver.
+      ###### Related Nodes
+      - TO complex (Many2One)
+      - TO cloud-region (Many2One)
+      - TO availability-zone (Many2One)
+      - TO lag-interface (comprises pserver, Many2Many)
+      - TO p-interface (comprises pserver, Many2Many)
+      - TO zone (Many2One)
+      - FROM generic-vnf
+      - FROM group-assignment
+      - FROM vserver
+      - FROM logical-link
+    required:
+    - hostname
+    - in-maint
+    properties:
+      hostname:
+        type: string
+        description: Value from executing hostname on the compute node.
+      ptnii-equip-name:
+        type: string
+        description: PTNII name
+      number-of-cpus:
+        type: integer
+        format: int32
+        description: Number of cpus
+      disk-in-gigabytes:
+        type: integer
+        format: int32
+        description: Disk size, in GBs
+      ram-in-megabytes:
+        type: integer
+        format: int32
+        description: RAM size, in MBs
+      equip-type:
+        type: string
+        description: Equipment type.  Source of truth should define valid values.
+      equip-vendor:
+        type: string
+        description: Equipment vendor.  Source of truth should define valid values.
+      equip-model:
+        type: string
+        description: Equipment model.  Source of truth should define valid values.
+      fqdn:
+        type: string
+        description: Fully-qualified domain name
+      pserver-selflink:
+        type: string
+        description: URL to endpoint where AAI can get more details
+      ipv4-oam-address:
+        type: string
+        description: Used to configure device, also used for troubleshooting and is IP used for traps generated by device.
+      serial-number:
+        type: string
+        description: Serial number, may be queried
+      ipaddress-v4-loopback-0:
+        type: string
+        description: IPV4 Loopback 0 address
+      ipaddress-v6-loopback-0:
+        type: string
+        description: IPV6 Loopback 0 address
+      ipaddress-v4-aim:
+        type: string
+        description: IPV4 AIM address
+      ipaddress-v6-aim:
+        type: string
+        description: IPV6 AIM address
+      ipaddress-v6-oam:
+        type: string
+        description: IPV6 OAM address
+      inv-status:
+        type: string
+        description: CANOPI's inventory status.  Only set with values exactly as defined by CANOPI.
+      pserver-id:
+        type: string
+        description: ID of Pserver
+      internet-topology:
+        type: string
+        description: internet topology of Pserver
+      in-maint:
+        type: boolean
+      resource-version:
+        type: string
+        description: Used for optimistic concurrency.  Must be empty on create, valid on update and delete.
+      pserver-name2:
+        type: string
+        description: alternative pserver name
+      purpose:
+        type: string
+        description: purpose of pserver
+      prov-status:
+        type: string
+        description: Prov Status of this device (not under canopi control) Valid values [PREPROV/NVTPROV/PROV]
+      management-option:
+        type: string
+        description: Indicates who owns and or manages the device.
+      host-profile:
+        type: string
+        description: The host profile that defines the configuration of the pserver.
+      relationship-list:
+        type: array
+        items:
+          $ref: "#/definitions/relationship"
+      p-interfaces:
+        type: array
+        items:
+          $ref: "#/definitions/p-interface"
+      lag-interfaces:
+        type: array
+        items:
+          $ref: "#/definitions/lag-interface"
+  pservers:
+    description: |
+      Collection of compute hosts.
+    properties:
+      pserver:
+        type: array
+        items:          
+          $ref: "#/definitions/pserver"
+  virtual-data-center:
+    description: |
+      Virtual organization of cloud infrastructure elements in a data center context
+      ###### Related Nodes
+      - TO generic-vnf (Many2Many)
+      - TO logical-link (Many2Many)
+      - FROM connector
+    required:
+    - vdc-id
+    - vdc-name
+    properties:
+      vdc-id:
+        type: string
+        description: Unique ID of the vdc
+      vdc-name:
+        type: string
+        description: Name of the virtual data center
+      resource-version:
+        type: string
+        description: Used for optimistic concurrency.  Must be empty on create, valid on update and delete.
+      relationship-list:
+        type: array
+        items:
+          $ref: "#/definitions/relationship"
+  virtual-data-centers:
+    description: |
+      Virtual organization of cloud infrastructure elements in a data center context
+    properties:
+      virtual-data-center:
+        type: array
+        items:          
+          $ref: "#/definitions/virtual-data-center"
+  cloud-infrastructure:
+    description: |
+      Namespace for cloud infrastructure.
+    properties:
+      complexes:
+        type: array
+        items:
+          $ref: "#/definitions/complex"
+      cloud-regions:
+        type: array
+        items:
+          $ref: "#/definitions/cloud-region"
+      network-profiles:
+        type: array
+        items:
+          $ref: "#/definitions/network-profile"
+      pservers:
+        type: array
+        items:
+          $ref: "#/definitions/pserver"
+      virtual-data-centers:
+        type: array
+        items:
+          $ref: "#/definitions/virtual-data-center"
+  esr-ems:
+    description: |
+      Persist EMS address information used by EMS driver.
+      ###### Related Nodes
+      - TO esr-system-info (comprises esr-ems, One2Many)
+    required:
+    - ems-id
+    properties:
+      ems-id:
+        type: string
+        description: Unique ID of EMS.
+      resource-version:
+        type: string
+        description: Used for optimistic concurrency.  Must be empty on create, valid on update and delete.
+      esr-system-info-list:
+        type: array
+        items:
+          $ref: "#/definitions/esr-system-info"
+      relationship-list:
+        type: array
+        items:
+          $ref: "#/definitions/relationship"
+  esr-ems-list:
+    properties:
+      esr-ems:
+        type: array
+        items:          
+          $ref: "#/definitions/esr-ems"
+  esr-vnfm:
+    description: |
+      Persist VNFM address information used by VF-C.
+      ###### Related Nodes
+      - TO esr-system-info (comprises esr-vnfm, One2One)
+    required:
+    - vnfm-id
+    properties:
+      vnfm-id:
+        type: string
+        description: Unique ID of VNFM.
+      vim-id:
+        type: string
+        description: indecate the VIM to deploy VNF.
+      certificate-url:
+        type: string
+        description: certificate url of VNFM.
+      resource-version:
+        type: string
+        description: Used for optimistic concurrency.  Must be empty on create, valid on update and delete.
+      esr-system-info-list:
+        type: array
+        items:
+          $ref: "#/definitions/esr-system-info"
+      relationship-list:
+        type: array
+        items:
+          $ref: "#/definitions/relationship"
+  esr-vnfm-list:
+    properties:
+      esr-vnfm:
+        type: array
+        items:          
+          $ref: "#/definitions/esr-vnfm"
+  esr-thirdparty-sdnc:
+    description: |
+      Persist SDNC address information used by ONAP SDNC.
+      ###### Related Nodes
+      - TO esr-system-info (comprises esr-thirdparty-sdnc, One2One)
+      - TO pnf (One2Many)
+    required:
+    - thirdparty-sdnc-id
+    properties:
+      thirdparty-sdnc-id:
+        type: string
+        description: Unique ID of SDNC.
+      location:
+        type: string
+        description: used for DC type to indicate the location of SDNC, such as Core or Edge.
+      product-name:
+        type: string
+        description: password used to access SDNC server.
+      resource-version:
+        type: string
+        description: Used for optimistic concurrency.  Must be empty on create, valid on update and delete.
+      esr-system-info-list:
+        type: array
+        items:
+          $ref: "#/definitions/esr-system-info"
+      relationship-list:
+        type: array
+        items:
+          $ref: "#/definitions/relationship"
+  esr-thirdparty-sdnc-list:
+    properties:
+      esr-thirdparty-sdnc:
+        type: array
+        items:          
+          $ref: "#/definitions/esr-thirdparty-sdnc"
+  external-system:
+    description: |
+      Namespace for external system.
+    properties:
+      esr-ems-list:
+        type: array
+        items:
+          $ref: "#/definitions/esr-ems"
+      esr-vnfm-list:
+        type: array
+        items:
+          $ref: "#/definitions/esr-vnfm"
+      esr-thirdparty-sdnc-list:
+        type: array
+        items:
+          $ref: "#/definitions/esr-thirdparty-sdnc"
+  connector:
+    description: |
+      Collection of resource instances used to connect a variety of disparate inventory widgets
+      ###### Related Nodes
+      - TO virtual-data-center (Many2Many)
+      - TO metadatum (comprises connector, Many2Many)
+      - FROM service-instance
+    required:
+    - resource-instance-id
+    properties:
+      resource-instance-id:
+        type: string
+        description: Unique id of resource instance.
+      resource-version:
+        type: string
+        description: Used for optimistic concurrency.  Must be empty on create, valid on update and delete.
+      model-invariant-id:
+        type: string
+        description: the ASDC model id for this resource or service model.
+      model-version-id:
+        type: string
+        description: the ASDC model version for this resource or service model.
+      persona-model-version:
+        type: string
+        description: the ASDC model version for this resource or service model.
+      widget-model-id:
+        type: string
+        description: the ASDC data dictionary widget model. This maps directly to the A&AI widget.
+      widget-model-version:
+        type: string
+        description: the ASDC data dictionary version of the widget model.This maps directly to the A&AI version of the widget.
+      relationship-list:
+        type: array
+        items:
+          $ref: "#/definitions/relationship"
+      metadata:
+        type: array
+        items:
+          $ref: "#/definitions/metadatum"
+  connectors:
+    description: |
+      Collection of resource instances used to connect a variety of disparate inventory widgets
+    properties:
+      connector:
+        type: array
+        items:          
+          $ref: "#/definitions/connector"
+  tunnel-xconnect:
+    description: |
+      Represents the specifics of a tunnel cross connect piece of a resource that gets separately allotted
+      ###### Related Nodes
+      - FROM allotted-resource (is composed of tunnel-xconnect)
+    required:
+    - id
+    - bandwidth-up-wan1
+    - bandwidth-down-wan1
+    - bandwidth-up-wan2
+    - bandwidth-down-wan2
+    properties:
+      id:
+        type: string
+        description: Allotted Resource id UUID assigned to this instance.
+      bandwidth-up-wan1:
+        type: string
+        description: The WAN uplink bandwidth for WAN1
+      bandwidth-down-wan1:
+        type: string
+        description: The WAN downlink bandwidth for WAN1
+      bandwidth-up-wan2:
+        type: string
+        description: The WAN uplink bandwidth for WAN2
+      bandwidth-down-wan2:
+        type: string
+        description: The WAN downlink bandwidth for WAN2
+      resource-version:
+        type: string
+        description: Concurrency value
+      relationship-list:
+        type: array
+        items:
+          $ref: "#/definitions/relationship"
+  tunnel-xconnects:
+    description: |
+      This object is used to store the specific tunnel cross connect aspects of an allotted resource
+    properties:
+      tunnel-xconnect:
+        type: array
+        items:          
+          $ref: "#/definitions/tunnel-xconnect"
+  allotted-resource:
+    description: |
+      Represents a slice or partial piece of a resource that gets separately allotted
+      ###### Related Nodes
+      - TO generic-vnf (Many2Many)
+      - TO l3-network (Many2Many)
+      - TO instance-group (Many2Many)
+      - TO network-policy (One2One)
+      - TO vlan (Many2Many)
+      - TO l-interface (One2Many)
+      - TO tunnel-xconnect (comprises allotted-resource, One2One)
+      - TO vpn-binding (Many2Many)
+      - TO allotted-resource (One2One)
+      - FROM configuration
+      - FROM service-instance (is composed of allotted-resource)
+      - FROM service-instance
+      - FROM allotted-resource
+    required:
+    - id
+    properties:
+      id:
+        type: string
+        description: Allotted Resource id UUID assigned to this instance.
+      description:
+        type: string
+        description: The descriptive information assigned to this allotted resource instance
+      selflink:
+        type: string
+        description: Link back to more information in the controller
+      model-invariant-id:
+        type: string
+        description: the ASDC model id for this resource or service model.
+      model-version-id:
+        type: string
+        description: the ASDC model version for this resource or service model.
+      persona-model-version:
+        type: string
+        description: the ASDC model version for this resource or service model.
+      resource-version:
+        type: string
+        description: Concurrency value
+      orchestration-status:
+        type: string
+        description: Orchestration status
+      operational-status:
+        type: string
+        description: Indicator for whether the resource is considered operational
+      type:
+        type: string
+        description: Generic description of the type of allotted resource.
+      role:
+        type: string
+        description: role in the network that this resource will be providing.
+      tunnel-xconnects:
+        type: array
+        items:
+          $ref: "#/definitions/tunnel-xconnect"
+      relationship-list:
+        type: array
+        items:
+          $ref: "#/definitions/relationship"
+  allotted-resources:
+    description: |
+      This object is used to store slices of services being offered
+    properties:
+      allotted-resource:
+        type: array
+        items:          
+          $ref: "#/definitions/allotted-resource"
+  service-instance:
+    description: |
+      Instance of a service
+      ###### Related Nodes
+      - TO configuration (One2Many)
+      - TO zone (Many2One)
+      - TO cvlan-tag (Many2Many)
+      - TO pnf (One2Many)
+      - TO connector (Many2Many)
+      - TO metadatum (comprises service-instance, Many2Many)
+      - TO logical-link (Many2Many)
+      - TO vlan (One2Many)
+      - TO service-instance (One2Many)
+      - TO ctag-assignment (One2Many)
+      - TO instance-group (Many2Many)
+      - TO allotted-resource (comprises service-instance, Many2Many)
+      - TO allotted-resource (Many2Many)
+      - FROM generic-vnf
+      - FROM l3-network
+      - FROM owning-entity
+      - FROM project
+      - FROM service-subscription (is composed of service-instance)
+      - FROM vce
+      - FROM service-instance
+    required:
+    - service-instance-id
+    - service-type
+    - service-role
+    properties:
+      service-instance-id:
+        type: string
+        description: Uniquely identifies this instance of a service
+      service-instance-name:
+        type: string
+        description: This field will store a name assigned to the service-instance.
+      service-type:
+        type: string
+        description: String capturing type of service.
+      service-role:
+        type: string
+        description: String capturing the service role.
+      environment-context:
+        type: string
+        description: This field will store the environment context assigned to the service-instance.
+      workload-context:
+        type: string
+        description: This field will store the workload context assigned to the service-instance.
+      model-invariant-id:
+        type: string
+        description: the ASDC model id for this resource or service model.
+      model-version-id:
+        type: string
+        description: the ASDC model version for this resource or service model.
+      persona-model-version:
+        type: string
+        description: the ASDC model version for this resource or service model.
+      widget-model-id:
+        type: string
+        description: the ASDC data dictionary widget model. This maps directly to the A&AI widget.
+      widget-model-version:
+        type: string
+        description: the ASDC data dictionary version of the widget model.This maps directly to the A&AI version of the widget.
+      bandwidth-total:
+        type: string
+        description: Indicates the total bandwidth to be used for this service.
+      bandwidth-up-wan1:
+        type: string
+        description: indicates the upstream bandwidth this service will use on the WAN1 port of the physical device.
+      bandwidth-down-wan1:
+        type: string
+        description: indicates the downstream bandwidth this service will use on the WAN1 port of the physical device.
+      bandwidth-up-wan2:
+        type: string
+        description: indicates the upstream bandwidth this service will use on the WAN2 port of the physical device.
+      bandwidth-down-wan2:
+        type: string
+        description: indicates the downstream bandwidth this service will use on the WAN2 port of the physical device.
+      vhn-portal-url:
+        type: string
+        description: URL customers will use to access the vHN Portal.
+      service-instance-location-id:
+        type: string
+        description: An identifier that customers assign to the location where this service is being used.
+      resource-version:
+        type: string
+        description: Used for optimistic concurrency.  Must be empty on create, valid on update and delete.
+      selflink:
+        type: string
+        description: Path to the controller object.
+      orchestration-status:
+        type: string
+        description: Orchestration status of this service.
+      relationship-list:
+        type: array
+        items:
+          $ref: "#/definitions/relationship"
+      metadata:
+        type: array
+        items:
+          $ref: "#/definitions/metadatum"
+      allotted-resources:
+        type: array
+        items:
+          $ref: "#/definitions/allotted-resource"
+  service-instances:
+    description: |
+      Collection of service instances
+    properties:
+      service-instance:
+        type: array
+        items:          
+          $ref: "#/definitions/service-instance"
+  service-subscription:
+    description: |
+      Object that group service instances.
+      ###### Related Nodes
+      - TO service-instance (comprises service-subscription, Many2Many)
+      - FROM customer (is composed of service-subscription)
+      - FROM tenant
+    required:
+    - service-type
+    properties:
+      service-type:
+        type: string
+        description: Value defined by orchestration to identify this service across ECOMP.
+      temp-ub-sub-account-id:
+        type: string
+        description: This property will be deleted from A&AI in the near future. Only stop gap solution.
+      resource-version:
+        type: string
+        description: Used for optimistic concurrency.  Must be empty on create, valid on update and delete.
+      service-instances:
+        type: array
+        items:
+          $ref: "#/definitions/service-instance"
+      relationship-list:
+        type: array
+        items:
+          $ref: "#/definitions/relationship"
+  service-subscriptions:
+    description: |
+      Collection of objects that group service instances.
+    properties:
+      service-subscription:
+        type: array
+        items:          
+          $ref: "#/definitions/service-subscription"
+  customer:
+    description: |
+      customer identifiers to provide linkage back to BSS information.
+      ###### Related Nodes
+      - TO service-subscription (comprises customer, Many2Many)
+    required:
+    - global-customer-id
+    - subscriber-name
+    - subscriber-type
+    properties:
+      global-customer-id:
+        type: string
+        description: Global customer id used across ECOMP to uniquely identify customer.
+      subscriber-name:
+        type: string
+        description: Subscriber name, an alternate way to retrieve a customer.
+      subscriber-type:
+        type: string
+        description: Subscriber type, a way to provide VID with only the INFRA customers.
+      resource-version:
+        type: string
+        description: Used for optimistic concurrency.  Must be empty on create, valid on update and delete.
+      service-subscriptions:
+        type: array
+        items:
+          $ref: "#/definitions/service-subscription"
+      relationship-list:
+        type: array
+        items:
+          $ref: "#/definitions/relationship"
+  customers:
+    description: |
+      Collection of customer identifiers to provide linkage back to BSS information.
+    properties:
+      customer:
+        type: array
+        items:          
+          $ref: "#/definitions/customer"
+  line-of-business:
+    description: |
+      describes a line-of-business
+      ###### Related Nodes
+      - TO generic-vnf (Many2Many)
+    required:
+    - line-of-business-name
+    properties:
+      line-of-business-name:
+        type: string
+        description: Name of the line-of-business (product)
+      resource-version:
+        type: string
+        description: Used for optimistic concurrency.  Must be empty on create, valid on update and delete.
+      relationship-list:
+        type: array
+        items:
+          $ref: "#/definitions/relationship"
+  lines-of-business:
+    description: |
+      Collection of lines-of-business
+    properties:
+      line-of-business:
+        type: array
+        items:          
+          $ref: "#/definitions/line-of-business"
+  owning-entity:
+    description: |
+      describes an owning-entity
+      ###### Related Nodes
+      - TO service-instance (One2Many)
+    required:
+    - owning-entity-id
+    - owning-entity-name
+    properties:
+      owning-entity-id:
+        type: string
+        description: UUID of an owning entity
+      owning-entity-name:
+        type: string
+        description: Owning entity name
+      resource-version:
+        type: string
+        description: Used for optimistic concurrency.  Must be empty on create, valid on update and delete.
+      relationship-list:
+        type: array
+        items:
+          $ref: "#/definitions/relationship"
+  owning-entities:
+    description: |
+      Collection of owning-entities
+    properties:
+      owning-entity:
+        type: array
+        items:          
+          $ref: "#/definitions/owning-entity"
+  platform:
+    description: |
+      describes a platform
+      ###### Related Nodes
+      - TO generic-vnf (Many2Many)
+    required:
+    - platform-name
+    properties:
+      platform-name:
+        type: string
+        description: Name of the platform
+      resource-version:
+        type: string
+        description: Used for optimistic concurrency.  Must be empty on create, valid on update and delete.
+      relationship-list:
+        type: array
+        items:
+          $ref: "#/definitions/relationship"
+  platforms:
+    description: |
+      Collection of platforms
+    properties:
+      platform:
+        type: array
+        items:          
+          $ref: "#/definitions/platform"
+  project:
+    description: |
+      describes the project
+      ###### Related Nodes
+      - TO service-instance (One2Many)
+    required:
+    - project-name
+    properties:
+      project-name:
+        type: string
+        description: Name of the project deploying a service
+      resource-version:
+        type: string
+        description: Used for optimistic concurrency.  Must be empty on create, valid on update and delete.
+      relationship-list:
+        type: array
+        items:
+          $ref: "#/definitions/relationship"
+  projects:
+    description: |
+      Collection of projects
+    properties:
+      project:
+        type: array
+        items:          
+          $ref: "#/definitions/project"
+  business:
+    description: |
+      Namespace for business related constructs
+    properties:
+      connectors:
+        type: array
+        items:
+          $ref: "#/definitions/connector"
+      customers:
+        type: array
+        items:
+          $ref: "#/definitions/customer"
+      lines-of-business:
+        type: array
+        items:
+          $ref: "#/definitions/line-of-business"
+      owning-entities:
+        type: array
+        items:
+          $ref: "#/definitions/owning-entity"
+      platforms:
+        type: array
+        items:
+          $ref: "#/definitions/platform"
+      projects:
+        type: array
+        items:
+          $ref: "#/definitions/project"
+  vnf-image:
+    description: |
+      Image object that pertain to a VNF that doesn't have associated vservers.  This is a kludge.
+      ###### Related Nodes
+      - FROM generic-vnf
+    required:
+    - vnf-image-uuid
+    - application
+    - application-vendor
+    properties:
+      vnf-image-uuid:
+        type: string
+        description: Unique ID of this asset
+      application:
+        type: string
+        description: The application that the image instantiates.
+      application-vendor:
+        type: string
+        description: The vendor of the application.
+      application-version:
+        type: string
+        description: The version of the application.
+      selflink:
+        type: string
+        description: URL to endpoint where AAI can get more details
+      resource-version:
+        type: string
+        description: Used for optimistic concurrency.  Must be empty on create, valid on update and delete.
+      relationship-list:
+        type: array
+        items:
+          $ref: "#/definitions/relationship"
+  vnf-images:
+    description: |
+      Collection of image objects that pertain to a VNF that doesn't have associated vservers.  This is a kludge.
+    properties:
+      vnf-image:
+        type: array
+        items:          
+          $ref: "#/definitions/vnf-image"
+  service:
+    description: |
+      Stand-in for service model definitions.  Likely to be deprecated in favor of models from ASDC.  Does not strictly map to ASDC services.
+    required:
+    - service-id
+    - service-description
+    properties:
+      service-id:
+        type: string
+        description: This gets defined by others to provide a unique ID for the service, we accept what is sent.
+      service-description:
+        type: string
+        description: Description of the service
+      service-selflink:
+        type: string
+        description: URL to endpoint where AAI can get more details
+      resource-version:
+        type: string
+        description: Used for optimistic concurrency.  Must be empty on create, valid on update and delete.
+      service-version:
+        type: string
+        description: service version
+      relationship-list:
+        type: array
+        items:
+          $ref: "#/definitions/relationship"
+  services:
+    description: |
+      Collection of service model definitions.  Likely to be deprecated in favor of models from ASDC.
+    properties:
+      service:
+        type: array
+        items:          
+          $ref: "#/definitions/service"
+  service-capability:
+    description: |
+      Early definition of server/resource pairings, likely to be replaced by models.  No new use should be made of this.
+      ###### Related Nodes
+      - FROM availability-zone
+      - FROM oam-network
+    required:
+    - service-type
+    - vnf-type
+    properties:
+      service-type:
+        type: string
+        description: This gets defined by others to provide a unique ID for the service, we accept what is sent.
+      vnf-type:
+        type: string
+        description: String capturing type of vnf, that was intended to identify the ASDC resource.  This field has been overloaded in service-specific ways and clients should expect changes to occur in the future to this field as ECOMP matures.
+      resource-version:
+        type: string
+        description: Used for optimistic concurrency.  Must be empty on create, valid on update and delete.
+      relationship-list:
+        type: array
+        items:
+          $ref: "#/definitions/relationship"
+  service-capabilities:
+    description: |
+      Collection of service capabilities.
+    properties:
+      service-capability:
+        type: array
+        items:          
+          $ref: "#/definitions/service-capability"
+  element-choice-set:
+    description: |
+      This is how we would capture constraints defining allowed sets of elements.
+      ###### Related Nodes
+      - TO model-element (comprises element-choice-set, One2Many)
+      - FROM constrained-element-set (is composed of element-choice-set)
+    required:
+    - element-choice-set-uuid
+    - element-choice-set-name
+    properties:
+      element-choice-set-uuid:
+        type: string
+      element-choice-set-name:
+        type: string
+      cardinality:
+        type: string
+      resource-version:
+        type: string
+      model-elements:
+        type: array
+        items:
+          $ref: "#/definitions/model-element"
+      relationship-list:
+        type: array
+        items:
+          $ref: "#/definitions/relationship"
+  element-choice-sets:
+    properties:
+      element-choice-set:
+        type: array
+        items:          
+          $ref: "#/definitions/element-choice-set"
+  constrained-element-set:
+    description: |
+      This is how we would capture constraints defining allowed sets of elements.
+      ###### Related Nodes
+      - TO element-choice-set (comprises constrained-element-set, One2Many)
+      - FROM model-element (is composed of constrained-element-set)
+      - FROM model-constraint (is composed of constrained-element-set)
+    required:
+    - constrained-element-set-uuid
+    - constraint-type
+    - check-type
+    properties:
+      constrained-element-set-uuid:
+        type: string
+      constraint-type:
+        type: string
+      check-type:
+        type: string
+      resource-version:
+        type: string
+      element-choice-sets:
+        type: array
+        items:
+          $ref: "#/definitions/element-choice-set"
+      relationship-list:
+        type: array
+        items:
+          $ref: "#/definitions/relationship"
+  constrained-element-sets:
+    properties:
+      constrained-element-set:
+        type: array
+        items:          
+          $ref: "#/definitions/constrained-element-set"
+  model-constraint:
+    description: |
+      This is how we would capture constraints defining allowed sets of elements.
+      ###### Related Nodes
+      - TO constrained-element-set (comprises model-constraint, One2Many)
+      - FROM model-element (is composed of model-constraint)
+    required:
+    - model-constraint-uuid
+    - constrained-element-set-uuid-to-replace
+    properties:
+      model-constraint-uuid:
+        type: string
+      constrained-element-set-uuid-to-replace:
+        type: string
+      constrained-element-sets:
+        type: array
+        items:
+          $ref: "#/definitions/constrained-element-set"
+      resource-version:
+        type: string
+        description: Used for optimistic concurrency.  Must be empty on create, valid on update and delete.
+  model-constraints:
+    properties:
+      model-constraint:
+        type: array
+        items:          
+          $ref: "#/definitions/model-constraint"
+  model-element:
+    description: |
+      Defines how other models combine to make up a higher-level model.
+      ###### Related Nodes
+      - TO model-ver (Many2One)
+      - TO model-element (comprises model-element, One2Many)
+      - TO model-constraint (comprises model-element, One2Many)
+      - TO constrained-element-set (comprises model-element, One2Many)
+      - FROM model-ver (is composed of model-element)
+      - FROM element-choice-set (is composed of model-element)
+      - FROM model-element (is composed of model-element)
+    required:
+    - model-element-uuid
+    - new-data-del-flag
+    - cardinality
+    properties:
+      model-element-uuid:
+        type: string
+      new-data-del-flag:
+        type: string
+        description: Indicates whether this element was created as part of instantiation from this model
+      cardinality:
+        type: string
+        description: How many of this type of element are required/allowed
+      linkage-points:
+        type: string
+      resource-version:
+        type: string
+        description: Used for optimistic concurrency.  Must be empty on create, valid on update and delete.
+      model-elements:
+        type: array
+        items:
+          $ref: "#/definitions/model-element"
+        description: Defines how other models combine to make up a higher-level model
+      model-constraints:
+        type: array
+        items:
+          $ref: "#/definitions/model-constraint"
+        description: Describes new constraints on this model element that are not part of that model's definition
+      relationship-list:
+        type: array
+        items:
+          $ref: "#/definitions/relationship"
+  model-elements:
+    properties:
+      model-element:
+        type: array
+        items:          
+          $ref: "#/definitions/model-element"
+  model-ver:
+    description: |
+      Subgraph definition provided by ASDC to describe a specific version of an inventory asset and its connections related to ASDC models
+      ###### Related Nodes
+      - TO model-element (comprises model-ver, One2Many)
+      - TO metadatum (comprises model-ver, One2Many)
+      - FROM model (is composed of model-ver)
+      - FROM model-element
+    required:
+    - model-version-id
+    - model-name
+    - model-version
+    properties:
+      model-version-id:
+        type: string
+        description: Unique identifier corresponding to one version of a model in ASDC
+      model-name:
+        type: string
+        description: Name of the model, which can change from version to version.
+      model-version:
+        type: string
+        description: Version
+      model-description:
+        type: string
+        description: Description
+      resource-version:
+        type: string
+        description: Used for optimistic concurrency.  Must be empty on create, valid on update and delete.
+      model-elements:
+        type: array
+        items:
+          $ref: "#/definitions/model-element"
+      metadata:
+        type: array
+        items:
+          $ref: "#/definitions/metadatum"
+      relationship-list:
+        type: array
+        items:
+          $ref: "#/definitions/relationship"
+  model-vers:
+    properties:
+      model-ver:
+        type: array
+        items:          
+          $ref: "#/definitions/model-ver"
+  model:
+    description: |
+      Subgraph definition provided by ASDC to describe an inventory asset and its connections related to ASDC models, independent of version
+      ###### Related Nodes
+      - TO model-ver (comprises model, One2Many)
+      - FROM named-query
+      - FROM named-query-element
+      - FROM instance-group
+    required:
+    - model-invariant-id
+    - model-type
+    properties:
+      model-invariant-id:
+        type: string
+        description: Unique identifier corresponding to the main definition of a model in ASDC
+      model-type:
+        type: string
+        description: Type of the model, e.g., service, resource, widget, etc.
+      resource-version:
+        type: string
+        description: Used for optimistic concurrency.  Must be empty on create, valid on update and delete.
+      model-vers:
+        type: array
+        items:
+          $ref: "#/definitions/model-ver"
+      relationship-list:
+        type: array
+        items:
+          $ref: "#/definitions/relationship"
+  models:
+    description: |
+      Collection of subgraph definitions provided by ASDC to describe the inventory assets and their connections related to ASDC models
+    properties:
+      model:
+        type: array
+        items:          
+          $ref: "#/definitions/model"
+  related-lookup:
+    description: |
+      TBD
+      ###### Related Nodes
+      - FROM named-query-element (is composed of related-lookup)
+    required:
+    - related-lookup-uuid
+    - source-node-type
+    - source-node-property
+    - target-node-type
+    - target-node-property
+    properties:
+      related-lookup-uuid:
+        type: string
+      source-node-type:
+        type: string
+      source-node-property:
+        type: string
+      target-node-type:
+        type: string
+      target-node-property:
+        type: string
+      property-collect-list:
+        type: string
+      resource-version:
+        type: string
+      relationship-list:
+        type: array
+        items:
+          $ref: "#/definitions/relationship"
+  related-lookups:
+    properties:
+      related-lookup:
+        type: array
+        items:          
+          $ref: "#/definitions/related-lookup"
+  property-constraint:
+    description: |
+      TBD
+      ###### Related Nodes
+      - FROM named-query-element (is composed of property-constraint)
+    required:
+    - property-constraint-uuid
+    - constraint-type
+    - property-name
+    - property-value
+    properties:
+      property-constraint-uuid:
+        type: string
+      constraint-type:
+        type: string
+      property-name:
+        type: string
+      property-value:
+        type: string
+      resource-version:
+        type: string
+  property-constraints:
+    properties:
+      property-constraint:
+        type: array
+        items:          
+          $ref: "#/definitions/property-constraint"
+  named-query-element:
+    description: |
+      TBD
+      ###### Related Nodes
+      - TO named-query-element (comprises named-query-element, Many2Many)
+      - TO model (Many2One)
+      - TO property-constraint (comprises named-query-element, One2Many)
+      - TO related-lookup (comprises named-query-element, One2Many)
+      - FROM named-query (is composed of named-query-element)
+      - FROM named-query-element (is composed of named-query-element)
+    required:
+    - named-query-element-uuid
+    properties:
+      named-query-element-uuid:
+        type: string
+      property-collect-list:
+        type: string
+      resource-version:
+        type: string
+      property-limit-desc:
+        type: string
+      do-not-output:
+        type: string
+      named-query-elements:
+        type: array
+        items:
+          $ref: "#/definitions/named-query-element"
+      related-lookups:
+        type: array
+        items:
+          $ref: "#/definitions/related-lookup"
+      property-constraints:
+        type: array
+        items:
+          $ref: "#/definitions/property-constraint"
+      relationship-list:
+        type: array
+        items:
+          $ref: "#/definitions/relationship"
+  named-query-elements:
+    properties:
+      named-query-element:
+        type: array
+        items:          
+          $ref: "#/definitions/named-query-element"
+  named-query:
+    description: |
+      TBD
+      ###### Related Nodes
+      - TO model (One2Many)
+      - TO named-query-element (comprises named-query, One2One)
+    required:
+    - named-query-uuid
+    - named-query-name
+    - named-query-version
+    properties:
+      named-query-uuid:
+        type: string
+      named-query-name:
+        type: string
+      named-query-version:
+        type: string
+      required-input-param:
+        type: string
+      description:
+        type: string
+      resource-version:
+        type: string
+      named-query-elements:
+        type: array
+        items:
+          $ref: "#/definitions/named-query-element"
+      relationship-list:
+        type: array
+        items:
+          $ref: "#/definitions/relationship"
+  named-queries:
+    properties:
+      named-query:
+        type: array
+        items:          
+          $ref: "#/definitions/named-query"
+  service-design-and-creation:
+    description: |
+      Namespace for objects managed by ASDC
+    properties:
+      vnf-images:
+        type: array
+        items:
+          $ref: "#/definitions/vnf-image"
+      services:
+        type: array
+        items:
+          $ref: "#/definitions/service"
+      service-capabilities:
+        type: array
+        items:
+          $ref: "#/definitions/service-capability"
+      models:
+        type: array
+        items:
+          $ref: "#/definitions/model"
+      named-queries:
+        type: array
+        items:
+          $ref: "#/definitions/named-query"
+  logical-link:
+    description: |
+      Logical links generally connect l-interfaces but are used to express logical connectivity between two points
+      ###### Related Nodes
+      - TO lag-link (Many2Many)
+      - TO pnf (Many2Many)
+      - TO logical-link (One2Many)
+      - TO generic-vnf (Many2Many)
+      - TO pserver (Many2Many)
+      - TO cloud-region (Many2Many)
+      - TO vpn-binding (Many2Many)
+      - FROM configuration
+      - FROM l-interface
+      - FROM lag-interface
+      - FROM p-interface
+      - FROM service-instance
+      - FROM virtual-data-center
+      - FROM vlan
+      - FROM logical-link
+    required:
+    - link-name
+    - in-maint
+    - link-type
+    properties:
+      link-name:
+        type: string
+        description: e.g., evc-name, or vnf-nameA_interface-nameA_vnf-nameZ_interface-nameZ
+      in-maint:
+        type: boolean
+      link-type:
+        type: string
+        description: Type of logical link, e.g., evc
+      speed-value:
+        type: string
+        description: Captures the numeric part of the speed
+      speed-units:
+        type: string
+        description: Captures the units corresponding to the speed
+      ip-version:
+        type: string
+        description: v4, v6, or ds for dual stack
+      routing-protocol:
+        type: string
+        description: For example, static or BGP
+      resource-version:
+        type: string
+        description: Used for optimistic concurrency.  Must be empty on create, valid on update and delete.
+      model-invariant-id:
+        type: string
+        description: the ASDC model id for this resource or service model.
+      model-version-id:
+        type: string
+        description: the ASDC model version for this resource or service model.
+      persona-model-version:
+        type: string
+        description: the ASDC model version for this resource or service model.
+      widget-model-id:
+        type: string
+        description: the ASDC data dictionary widget model. This maps directly to the A&AI widget.
+      widget-model-version:
+        type: string
+        description: the ASDC data dictionary version of the widget model.This maps directly to the A&AI version of the widget.
+      operational-status:
+        type: string
+        description: Indication of operational status of the logical link.
+      prov-status:
+        type: string
+        description: Trigger for operational monitoring of this VNF by BAU Service Assurance systems.
+      link-role:
+        type: string
+        description: Indication of the network use of the logical link.
+      link-name2:
+        type: string
+        description: Alias or alternate name (CLCI or D1 name).
+      link-id:
+        type: string
+        description: UUID of the logical-link, SDNC generates this.
+      circuit-id:
+        type: string
+        description: Circuit id
+      purpose:
+        type: string
+        description: Reason for this entity, role it is playing
+      relationship-list:
+        type: array
+        items:
+          $ref: "#/definitions/relationship"
+  logical-links:
+    description: |
+      Collection of logical connections
+    properties:
+      logical-link:
+        type: array
+        items:          
+          $ref: "#/definitions/logical-link"
+  class-of-service:
+    description: |
+      ###### Related Nodes
+      - FROM site-pair (is composed of class-of-service)
+    required:
+    - cos
+    properties:
+      cos:
+        type: string
+        description: unique identifier of probe
+      probe-id:
+        type: string
+        description: identifier of probe
+      probe-type:
+        type: string
+        description: type of probe
+      resource-version:
+        type: string
+        description: Used for optimistic concurrency.  Must be empty on create, valid on update and delete.
+      relationship-list:
+        type: array
+        items:
+          $ref: "#/definitions/relationship"
+  classes-of-service:
+    description: |
+      class-of-service of probe
+    properties:
+      class-of-service:
+        type: array
+        items:          
+          $ref: "#/definitions/class-of-service"
+  site-pair:
+    description: |
+      ###### Related Nodes
+      - TO class-of-service (comprises site-pair, Many2Many)
+      - FROM routing-instance (is composed of site-pair)
+    required:
+    - site-pair-id
+    properties:
+      site-pair-id:
+        type: string
+        description: unique identifier of probe
+      source-ip:
+        type: string
+        description: Prefix address
+      destination-ip:
+        type: string
+        description: Prefix address
+      ip-version:
+        type: string
+        description: ip version, v4, v6
+      destination-hostname:
+        type: string
+        description: Hostname of the destination equipment to which SLAs are measured against.
+      destination-equip-type:
+        type: string
+        description: The type of destinatination equipment. Could be Router, UCPE, etc.
+      resource-version:
+        type: string
+        description: Used for optimistic concurrency.  Must be empty on create, valid on update and delete.
+      classes-of-service:
+        type: array
+        items:
+          $ref: "#/definitions/class-of-service"
+      relationship-list:
+        type: array
+        items:
+          $ref: "#/definitions/relationship"
+  site-pairs:
+    description: |
+      probe within a set
+    properties:
+      site-pair:
+        type: array
+        items:          
+          $ref: "#/definitions/site-pair"
+  routing-instance:
+    description: |
+      ###### Related Nodes
+      - TO site-pair (comprises routing-instance, Many2Many)
+      - FROM site-pair-set (is composed of routing-instance)
+    required:
+    - routing-instance-id
+    properties:
+      routing-instance-id:
+        type: string
+        description: Unique id of routing instance
+      rpm-owner:
+        type: string
+        description: rpm owner
+      resource-version:
+        type: string
+        description: Used for optimistic concurrency.  Must be empty on create, valid on update and delete.
+      site-pairs:
+        type: array
+        items:
+          $ref: "#/definitions/site-pair"
+      relationship-list:
+        type: array
+        items:
+          $ref: "#/definitions/relationship"
+  routing-instances:
+    description: |
+      set of probes related to generic-vnf routing instance
+    properties:
+      routing-instance:
+        type: array
+        items:          
+          $ref: "#/definitions/routing-instance"
+  site-pair-set:
+    description: |
+      Set of instances for probes used to measure service level agreements
+      ###### Related Nodes
+      - TO routing-instance (comprises site-pair-set, Many2Many)
+      - FROM generic-vnf
+    required:
+    - site-pair-set-id
+    properties:
+      site-pair-set-id:
+        type: string
+        description: Unique id of site pair set.
+      resource-version:
+        type: string
+        description: Used for optimistic concurrency.  Must be empty on create, valid on update and delete.
+      routing-instances:
+        type: array
+        items:
+          $ref: "#/definitions/routing-instance"
+      relationship-list:
+        type: array
+        items:
+          $ref: "#/definitions/relationship"
+  site-pair-sets:
+    description: |
+      Collection of sets of instances for probes related to generic-vnf
+    properties:
+      site-pair-set:
+        type: array
+        items:          
+          $ref: "#/definitions/site-pair-set"
+  route-target:
+    description: |
+      Route target information
+      ###### Related Nodes
+      - FROM vpn-binding (is composed of route-target)
+    required:
+    - global-route-target
+    - route-target-role
+    properties:
+      global-route-target:
+        type: string
+        description: Number used to identify an RT, globally unique in the network
+      route-target-role:
+        type: string
+        description: Role assigned to this route target
+      resource-version:
+        type: string
+        description: Used for optimistic concurrency.  Must be empty on create, valid on update and delete.
+      relationship-list:
+        type: array
+        items:
+          $ref: "#/definitions/relationship"
+  route-targets:
+    description: |
+      Collection of route target information
+    properties:
+      route-target:
+        type: array
+        items:          
+          $ref: "#/definitions/route-target"
+  vpn-binding:
+    description: |
+      VPN binding
+      ###### Related Nodes
+      - TO route-target (comprises vpn-binding, One2Many)
+      - FROM l3-network
+      - FROM logical-link
+      - FROM allotted-resource
+    required:
+    - vpn-id
+    - vpn-name
+    properties:
+      vpn-id:
+        type: string
+        description: VPN ID, globally unique within A&AI
+      vpn-name:
+        type: string
+        description: VPN Name
+      vpn-platform:
+        type: string
+        description: the platform associated with the VPN example AVPN, Mobility
+      vpn-type:
+        type: string
+        description: Type of the vpn, should be taken from enumerated/valid values
+      vpn-region:
+        type: string
+        description: region of customer vpn
+      customer-vpn-id:
+        type: string
+        description: id for this customer vpn
+      route-distinguisher:
+        type: string
+        description: Used to distinguish the distinct VPN routes of separate customers who connect to the provider in an MPLS network.
+      resource-version:
+        type: string
+        description: Used for optimistic concurrency.  Must be empty on create, valid on update and delete.
+      route-targets:
+        type: array
+        items:
+          $ref: "#/definitions/route-target"
+      relationship-list:
+        type: array
+        items:
+          $ref: "#/definitions/relationship"
+        description: l3-networks relate to vpn-bindings
+  vpn-bindings:
+    properties:
+      vpn-binding:
+        type: array
+        items:          
+          $ref: "#/definitions/vpn-binding"
+  vpls-pe:
+    description: |
+      VPLS Provider Edge routers.
+      ###### Related Nodes
+      - TO complex (Many2Many)
+      - TO ctag-pool (Many2Many)
+      - TO p-interface (comprises vpls-pe, Many2Many)
+      - TO lag-interface (comprises vpls-pe, Many2Many)
+    required:
+    - equipment-name
+    properties:
+      equipment-name:
+        type: string
+      prov-status:
+        type: string
+        description: Trigger for operational monitoring of this VNF by BAU Service Assurance systems.
+      ipv4-oam-address:
+        type: string
+        description: Address tail-f uses to configure generic-vnf, also used for troubleshooting and is IP used for traps generated by GenericVnf (v4-loopback0-ip-address).
+      equipment-role:
+        type: string
+        description: Client should send valid enumerated value, e.g., VPLS-PE.
+      vlan-id-outer:
+        type: integer
+        format: int64
+        description: Temporary location for stag to get to VCE
+      resource-version:
+        type: string
+        description: Used for optimistic concurrency.  Must be empty on create, valid on update and delete.
+      relationship-list:
+        type: array
+        items:
+          $ref: "#/definitions/relationship"
+      p-interfaces:
+        type: array
+        items:
+          $ref: "#/definitions/p-interface"
+      lag-interfaces:
+        type: array
+        items:
+          $ref: "#/definitions/lag-interface"
+  vpls-pes:
+    description: |
+      Collection of VPLS Provider Edge routers
+    properties:
+      vpls-pe:
+        type: array
+        items:          
+          $ref: "#/definitions/vpls-pe"
+  multicast-configuration:
+    description: |
+      ###### Related Nodes
+      - FROM vlan
+    required:
+    - multicast-configuration-id
+    - multicast-protocol
+    - rp-type
+    properties:
+      multicast-configuration-id:
+        type: string
+        description: Unique id of multicast configuration.
+      multicast-protocol:
+        type: string
+        description: protocol of multicast configuration
+      rp-type:
+        type: string
+        description: rp type of multicast configuration
+      resource-version:
+        type: string
+        description: Used for optimistic concurrency.  Must be empty on create, valid on update and delete.
+      relationship-list:
+        type: array
+        items:
+          $ref: "#/definitions/relationship"
+  multicast-configurations:
+    description: |
+      multicast configuration of generic-vnf ip-address
+    properties:
+      multicast-configuration:
+        type: array
+        items:          
+          $ref: "#/definitions/multicast-configuration"
+  cvlan-tag-entry:
+    required:
+    - cvlan-tag
+    properties:
+      cvlan-tag:
+        type: integer
+        format: int64
+        description: See mis-na-virtualization-platform.yang
+      resource-version:
+        type: string
+        description: Used for optimistic concurrency.  Must be empty on create, valid on update and delete.
+      relationship-list:
+        type: array
+        items:
+          $ref: "#/definitions/relationship"
+  cvlan-tags:
+    properties:
+      cvlan-tag-entry:
+        type: array
+        items:          
+          $ref: "#/definitions/cvlan-tag-entry"
+  port-group:
+    description: |
+      Used to capture the network interfaces of this VCE
+      ###### Related Nodes
+      - TO cvlan-tag (comprises port-group, Many2Many)
+      - FROM vce (is composed of port-group)
+    required:
+    - interface-id
+    - orchestration-status
+    properties:
+      interface-id:
+        type: string
+        description: Unique ID of the interface
+      neutron-network-id:
+        type: string
+        description: Neutron network id of this Interface
+      neutron-network-name:
+        type: string
+        description: Neutron network name of this Interface
+      interface-role:
+        type: string
+        description: Role assigned to this Interface, should use values as defined in ECOMP Yang models.
+      resource-version:
+        type: string
+        description: Used for optimistic concurrency.  Must be empty on create, valid on update and delete.
+      port-group-id:
+        type: string
+        description: Unique ID for port group in vmware
+      port-group-name:
+        type: string
+        description: Likely to duplicate value of neutron network name
+      switch-name:
+        type: string
+        description: DVS or standard switch name (should be non-null for port groups associated with DVS)
+      orchestration-status:
+        type: string
+        description: Orchestration status of this VNF, mastered by MSO
+      heat-stack-id:
+        type: string
+        description: Heat stack id corresponding to this instance, managed by MSO
+      mso-catalog-key:
+        type: string
+        description: Corresponds to the SDN-C catalog id used to configure this VCE
+      cvlan-tags:
+        type: array
+        items:
+          $ref: "#/definitions/cvlan-tag-entry"
+      relationship-list:
+        type: array
+        items:
+          $ref: "#/definitions/relationship"
+  port-groups:
+    properties:
+      port-group:
+        type: array
+        items:          
+          $ref: "#/definitions/port-group"
+  license:
+    description: |
+      Metadata for license group.
+      ###### Related Nodes
+      - FROM generic-vnf (is composed of license)
+      - FROM vce (is composed of license)
+    required:
+    - group-uuid
+    - resource-uuid
+    properties:
+      group-uuid:
+        type: string
+        description: Unique ID for the license group the resource belongs to, should be uuid.
+      resource-uuid:
+        type: string
+        description: Unique ID of a license resource. 
+      resource-version:
+        type: string
+        description: Concurrency value
+      relationship-list:
+        type: array
+        items:
+          $ref: "#/definitions/relationship"
+  licenses:
+    description: |
+      Licenses to be allocated across resources, keyed by group-uuid and resource-uuid, related to license management
+    properties:
+      license:
+        type: array
+        items:          
+          $ref: "#/definitions/license"
+  entitlement:
+    description: |
+      Metadata for entitlement group.
+      ###### Related Nodes
+      - FROM generic-vnf (is composed of entitlement)
+      - FROM vce (is composed of entitlement)
+    required:
+    - group-uuid
+    - resource-uuid
+    properties:
+      group-uuid:
+        type: string
+        description: Unique ID for the entitlement group the resource comes from, should be uuid.
+      resource-uuid:
+        type: string
+        description: Unique ID of an entitlement resource. 
+      resource-version:
+        type: string
+        description: Concurrency value
+      relationship-list:
+        type: array
+        items:
+          $ref: "#/definitions/relationship"
+  entitlements:
+    description: |
+      Entitlements, keyed by group-uuid and resource-uuid, related to license management
+    properties:
+      entitlement:
+        type: array
+        items:          
+          $ref: "#/definitions/entitlement"
+  vce:
+    description: |
+      Virtual Customer Edge Router, used specifically for Gamma.  This object is deprecated.
+      ###### Related Nodes
+      - TO availability-zone (Many2Many)
+      - TO complex (Many2Many)
+      - TO port-group (comprises vce, Many2Many)
+      - TO vserver (Many2Many)
+      - TO service-instance (Many2Many)
+      - TO entitlement (comprises vce, One2Many)
+      - TO license (comprises vce, One2Many)
+    required:
+    - vnf-id
+    - vnf-name
+    - vnf-type
+    properties:
+      vnf-id:
+        type: string
+        description: Unique id of VNF.  This is unique across the graph.
+      vnf-name:
+        type: string
+        description: Name of VNF.
+      vnf-name2:
+        type: string
+        description: Alternate name of VNF.
+      vnf-type:
+        type: string
+        description: String capturing type of vnf, that was intended to identify the ASDC resource.  This field has been overloaded in service-specific ways and clients should expect changes to occur in the future to this field as ECOMP matures.
+      service-id:
+        type: string
+        description: Unique identifier of service, does not strictly map to ASDC services, SOON TO BE DEPRECATED.
+      regional-resource-zone:
+        type: string
+        description: Regional way of organizing pservers, source of truth should define values
+      prov-status:
+        type: string
+        description: Trigger for operational monitoring of this resource by Service Assurance systems.
+      operational-status:
+        type: string
+        description: Indicator for whether the resource is considered operational
+      license-key:
+        type: string
+        description: OBSOLETE -  do not use
+      equipment-role:
+        type: string
+        description: Network role being played by this VNF
+      orchestration-status:
+        type: string
+        description: Orchestration status of this VNF, mastered by MSO
+      heat-stack-id:
+        type: string
+        description: Heat stack id corresponding to this instance, managed by MSO
+      mso-catalog-key:
+        type: string
+        description: Corresponds to the SDN-C catalog id used to configure this VCE
+      vpe-id:
+        type: string
+        description: Unique ID of VPE connected to this VCE.
+      v6-vce-wan-address:
+        type: string
+        description: Valid v6 IP address for the WAN Link on this router.  Implied length of /64.
+      ipv4-oam-address:
+        type: string
+        description: Address tail-f uses to configure vce, also used for troubleshooting and is IP used for traps generated by VCE.
+      resource-version:
+        type: string
+        description: Used for optimistic concurrency.  Must be empty on create, valid on update and delete.
+      ipv4-loopback0-address:
+        type: string
+        description: Loopback0 address
+      entitlement-resource-uuid:
+        type: string
+        description: OBSOLETE -  see child relationships
+      port-groups:
+        type: array
+        items:
+          $ref: "#/definitions/port-group"
+      licenses:
+        type: array
+        items:
+          $ref: "#/definitions/license"
+      entitlements:
+        type: array
+        items:
+          $ref: "#/definitions/entitlement"
+      relationship-list:
+        type: array
+        items:
+          $ref: "#/definitions/relationship"
+  vces:
+    description: |
+      Collection of Virtual Customer Edge Routers, used specifically for Gamma.  This object is deprecated.
+    properties:
+      vce:
+        type: array
+        items:          
+          $ref: "#/definitions/vce"
+  vnfc:
+    description: |
+      ###### Related Nodes
+      - TO instance-group (Many2Many)
+      - TO vip-ipv4-address-list (Many2Many)
+      - TO vip-ipv6-address-list (Many2Many)
+      - FROM vserver
+      - FROM vf-module
+      - FROM generic-vnf
+      - FROM l3-interface-ipv4-address-list (comprises vnfc)
+      - FROM l3-interface-ipv6-address-list (comprises vnfc)
+    required:
+    - vnfc-name
+    - nfc-naming-code
+    - nfc-function
+    - in-maint
+    - is-closed-loop-disabled
+    properties:
+      vnfc-name:
+        type: string
+        description: Unique ID of vnfc.
+      nfc-naming-code:
+        type: string
+        description: Short code that is used in naming instances of the item being modeled
+      nfc-function:
+        type: string
+        description: English description of function that the specific resource deployment is providing. Assigned as part of the customization of a resource in a service
+      prov-status:
+        type: string
+        description: prov status of this vnfc
+      orchestration-status:
+        type: string
+        description: Orchestration status of this VNF, mastered by APP-C
+      ipaddress-v4-oam-vip:
+        type: string
+        description: Oam V4 vip address of this vnfc
+      in-maint:
+        type: boolean
+      is-closed-loop-disabled:
+        type: boolean
+      group-notation:
+        type: string
+        description: Group notation of VNFC
+      model-invariant-id:
+        type: string
+        description: the ASDC model id for this resource or service model.
+      model-version-id:
+        type: string
+        description: the ASDC model version for this resource or service model.
+      resource-version:
+        type: string
+        description: Used for optimistic concurrency.  Must be empty on create, valid on update and delete.
+      relationship-list:
+        type: array
+        items:
+          $ref: "#/definitions/relationship"
+      l3-interface-ipv4-address-list:
+        type: array
+        items:          
+          $ref: "#/definitions/l3-interface-ipv4-address-list"
+      l3-interface-ipv6-address-list:
+        type: array
+        items:          
+          $ref: "#/definitions/l3-interface-ipv6-address-list"
+  vnfcs:
+    description: |
+      virtual network components associated with a vserver from application controller.
+    properties:
+      vnfc:
+        type: array
+        items:          
+          $ref: "#/definitions/vnfc"
+  host-route:
+    description: |
+      ###### Related Nodes
+      - FROM subnet (is composed of host-route)
+    required:
+    - host-route-id
+    - route-prefix
+    - next-hop
+    properties:
+      host-route-id:
+        type: string
+        description: host-route id
+      route-prefix:
+        type: string
+        description: subnet prefix
+      next-hop:
+        type: string
+        description: Could be ip-address, hostname, or service-instance
+      next-hop-type:
+        type: string
+        description: Should be ip-address, hostname, or service-instance to match next-hop
+      resource-version:
+        type: string
+        description: Used for optimistic concurrency.  Must be empty on create, valid on update and delete.
+      relationship-list:
+        type: array
+        items:
+          $ref: "#/definitions/relationship"
+  host-routes:
+    properties:
+      host-route:
+        type: array
+        items:          
+          $ref: "#/definitions/host-route"
+  subnet:
+    description: |
+      ###### Related Nodes
+      - TO host-route (comprises subnet, One2Many)
+      - FROM l3-interface-ipv4-address-list
+      - FROM l3-interface-ipv6-address-list
+      - FROM l3-network (is composed of subnet)
+      - FROM vip-ipv4-address-list
+      - FROM vip-ipv6-address-list
+    required:
+    - subnet-id
+    - dhcp-enabled
+    properties:
+      subnet-id:
+        type: string
+        description: Subnet ID, should be UUID.
+      subnet-name:
+        type: string
+        description: Name associated with the subnet.
+      neutron-subnet-id:
+        type: string
+        description: Neutron id of this subnet
+      gateway-address:
+        type: string
+        description: gateway ip address
+      network-start-address:
+        type: string
+        description: network start address
+      cidr-mask:
+        type: string
+        description: cidr mask
+      ip-version:
+        type: string
+        description: ip version
+      orchestration-status:
+        type: string
+        description: Orchestration status of this VNF, mastered by MSO
+      dhcp-enabled:
+        type: boolean
+      dhcp-start:
+        type: string
+        description: the start address reserved for use by dhcp
+      dhcp-end:
+        type: string
+        description: the last address reserved for use by dhcp
+      subnet-role:
+        type: string
+        description: role of the subnet, referenced when assigning IPs
+      ip-assignment-direction:
+        type: string
+        description: ip address assignment direction of the subnet
+      resource-version:
+        type: string
+        description: Used for optimistic concurrency.  Must be empty on create, valid on update and delete.
+      subnet-sequence:
+        type: integer
+        format: int32
+        description: sequence of the subnet
+      host-routes:
+        type: array
+        items:
+          $ref: "#/definitions/host-route"
+      relationship-list:
+        type: array
+        items:
+          $ref: "#/definitions/relationship"
+  subnets:
+    properties:
+      subnet:
+        type: array
+        items:          
+          $ref: "#/definitions/subnet"
+  ctag-assignment:
+    description: |
+      ###### Related Nodes
+      - FROM l3-network (is composed of ctag-assignment)
+      - FROM service-instance
+    required:
+    - vlan-id-inner
+    properties:
+      vlan-id-inner:
+        type: integer
+        format: int64
+        description: id.
+      resource-version:
+        type: string
+        description: Used for optimistic concurrency.  Must be empty on create, valid on update and delete.
+      relationship-list:
+        type: array
+        items:
+          $ref: "#/definitions/relationship"
+  ctag-assignments:
+    properties:
+      ctag-assignment:
+        type: array
+        items:          
+          $ref: "#/definitions/ctag-assignment"
+  segmentation-assignment:
+    description: |
+      Openstack segmentation assignment.
+      ###### Related Nodes
+      - FROM l3-network (is composed of segmentation-assignment)
+    required:
+    - segmentation-id
+    properties:
+      segmentation-id:
+        type: string
+        description: Route Table Reference id, UUID assigned to this instance.
+      resource-version:
+        type: string
+        description: Concurrency value
+      relationship-list:
+        type: array
+        items:
+          $ref: "#/definitions/relationship"
+  segmentation-assignments:
+    description: |
+      Collection of openstack segmentation assignments
+    properties:
+      segmentation-assignment:
+        type: array
+        items:          
+          $ref: "#/definitions/segmentation-assignment"
+  l3-network:
+    description: |
+      Generic network definition
+      ###### Related Nodes
+      - TO vpn-binding (Many2Many)
+      - TO instance-group (Many2Many)
+      - TO subnet (comprises l3-network, Many2Many)
+      - TO service-instance (Many2Many)
+      - TO ctag-assignment (comprises l3-network, Many2Many)
+      - TO network-policy (Many2Many)
+      - TO segmentation-assignment (comprises l3-network, One2Many)
+      - TO route-table-reference (Many2Many)
+      - FROM cloud-region
+      - FROM complex
+      - FROM generic-vnf
+      - FROM l3-interface-ipv4-address-list
+      - FROM l3-interface-ipv6-address-list
+      - FROM tenant
+      - FROM vf-module
+      - FROM allotted-resource
+    required:
+    - network-id
+    - network-name
+    - is-bound-to-vpn
+    - is-provider-network
+    - is-shared-network
+    - is-external-network
+    properties:
+      network-id:
+        type: string
+        description: Network ID, should be uuid. Unique across A&AI.
+      network-name:
+        type: string
+        description: Name of the network, governed by some naming convention..
+      network-type:
+        type: string
+        description: Type of the network - who defines these values?
+      network-role:
+        type: string
+        description: Role the network plans - who defines these values?
+      network-technology:
+        type: string
+        description: Network technology - who defines these values?
+      neutron-network-id:
+        type: string
+        description: Neutron network id of this Interface
+      is-bound-to-vpn:
+        type: boolean
+      service-id:
+        type: string
+        description: Unique identifier of service from ASDC.  Does not strictly map to ASDC services.  SOON TO BE DEPRECATED
+      network-role-instance:
+        type: integer
+        format: int64
+        description: network role instance
+      resource-version:
+        type: string
+        description: Used for optimistic concurrency.  Must be empty on create, valid on update and delete.
+      orchestration-status:
+        type: string
+        description: Orchestration status of this VNF, mastered by MSO
+      heat-stack-id:
+        type: string
+        description: Heat stack id corresponding to this instance, managed by MSO
+      mso-catalog-key:
+        type: string
+        description: Corresponds to the SDN-C catalog id used to configure this VCE
+      contrail-network-fqdn:
+        type: string
+        description: Contrail FQDN for the network
+      model-invariant-id:
+        type: string
+        description: the ASDC model id for this resource or service model.
+      model-version-id:
+        type: string
+        description: the ASDC model version for this resource or service model.
+      persona-model-version:
+        type: string
+        description: the ASDC model version for this resource or service model.
+      model-customization-id:
+        type: string
+        description: captures the id of all the configuration used to customize the resource for the service.
+      widget-model-id:
+        type: string
+        description: the ASDC data dictionary widget model. This maps directly to the A&AI widget.
+      widget-model-version:
+        type: string
+        description: the ASDC data dictionary version of the widget model.This maps directly to the A&AI version of the widget.
+      physical-network-name:
+        type: string
+        description: Name associated with the physical network.
+      is-provider-network:
+        type: boolean
+      is-shared-network:
+        type: boolean
+      is-external-network:
+        type: boolean
+      selflink:
+        type: string
+        description: Path to the controller object.
+      operational-status:
+        type: string
+        description: Indicator for whether the resource is considered operational.
+      subnets:
+        type: array
+        items:
+          $ref: "#/definitions/subnet"
+      ctag-assignments:
+        type: array
+        items:
+          $ref: "#/definitions/ctag-assignment"
+      segmentation-assignments:
+        type: array
+        items:
+          $ref: "#/definitions/segmentation-assignment"
+      relationship-list:
+        type: array
+        items:
+          $ref: "#/definitions/relationship"
+        description: Relates to tenant (or is it a child of tenant), complex, service, vpn-binding
+  l3-networks:
+    properties:
+      l3-network:
+        type: array
+        items:          
+          $ref: "#/definitions/l3-network"
+  network-policy:
+    description: |
+      ###### Related Nodes
+      - FROM l3-network
+      - FROM allotted-resource
+    required:
+    - network-policy-id
+    properties:
+      network-policy-id:
+        type: string
+        description: UUID representing unique key to this instance
+      network-policy-fqdn:
+        type: string
+        description: Contrail FQDN for the policy
+      heat-stack-id:
+        type: string
+        description: ID for the openStack Heat instance
+      resource-version:
+        type: string
+        description: Used for optimistic concurrency.  Must be empty on create, valid on update and delete.
+      relationship-list:
+        type: array
+        items:
+          $ref: "#/definitions/relationship"
+  network-policies:
+    properties:
+      network-policy:
+        type: array
+        items:          
+          $ref: "#/definitions/network-policy"
+  vf-module:
+    description: |
+      a deployment unit of VNFCs
+      ###### Related Nodes
+      - TO volume-group (One2One)
+      - TO l3-network (Many2Many)
+      - TO vnfc (One2Many)
+      - FROM vserver
+      - FROM generic-vnf (is composed of vf-module)
+    required:
+    - vf-module-id
+    - is-base-vf-module
+    properties:
+      vf-module-id:
+        type: string
+        description: Unique ID of vf-module.
+      vf-module-name:
+        type: string
+        description: Name of vf-module
+      heat-stack-id:
+        type: string
+        description: Heat stack id corresponding to this instance.
+      orchestration-status:
+        type: string
+        description: orchestration status of this vf-module, mastered by MSO
+      is-base-vf-module:
+        type: boolean
+      resource-version:
+        type: string
+        description: Used for optimistic concurrency.  Must be empty on create, valid on update and delete.
+      model-invariant-id:
+        type: string
+        description: the ASDC model id for this resource or service model.
+      model-version-id:
+        type: string
+        description: the ASDC model version for this resource or service model.
+      persona-model-version:
+        type: string
+        description: the ASDC model version for this resource or service model.
+      model-customization-id:
+        type: string
+        description: captures the id of all the configuration used to customize the resource for the service.
+      widget-model-id:
+        type: string
+        description: the ASDC data dictionary widget model. This maps directly to the A&AI widget.
+      widget-model-version:
+        type: string
+        description: the ASDC data dictionary version of the widget model.This maps directly to the A&AI version of the widget.
+      contrail-service-instance-fqdn:
+        type: string
+        description: the Contrail unique ID for a service-instance
+      module-index:
+        type: integer
+        format: int32
+        description: the index will track the number of modules of a given type that have been deployed in a VNF, starting with 0, and always choosing the lowest available digit
+      selflink:
+        type: string
+        description: Path to the controller object.
+      relationship-list:
+        type: array
+        items:
+          $ref: "#/definitions/relationship"
+  vf-modules:
+    description: |
+      Collection of vf-modules, a deployment unit of VNFCs
+    properties:
+      vf-module:
+        type: array
+        items:          
+          $ref: "#/definitions/vf-module"
+  generic-vnf:
+    description: |
+      General purpose VNF
+      ###### Related Nodes
+      - TO license-key-resource (Many2Many)
+      - TO l-interface (comprises generic-vnf, Many2Many)
+      - TO availability-zone (Many2Many)
+      - TO lag-interface (comprises generic-vnf, Many2Many)
+      - TO l3-network (Many2Many)
+      - TO pserver (Many2Many)
+      - TO vnf-image (Many2One)
+      - TO vserver (One2Many)
+      - TO service-instance (Many2Many)
+      - TO site-pair-set (Many2Many)
+      - TO network-profile (Many2Many)
+      - TO pnf (Many2Many)
+      - TO ipsec-configuration (Many2One)
+      - TO configuration (One2Many)
+      - TO vf-module (comprises generic-vnf, One2Many)
+      - TO volume-group (One2Many)
+      - TO vnfc (One2Many)
+      - TO instance-group (Many2Many)
+      - TO entitlement (comprises generic-vnf, One2Many)
+      - TO license (comprises generic-vnf, One2Many)
+      - TO complex (Many2Many)
+      - TO ctag-pool (Many2Many)
+      - FROM line-of-business
+      - FROM platform
+      - FROM virtual-data-center
+      - FROM logical-link
+      - FROM allotted-resource
+    required:
+    - vnf-id
+    - vnf-name
+    - vnf-type
+    - in-maint
+    - is-closed-loop-disabled
+    properties:
+      vnf-id:
+        type: string
+        description: Unique id of VNF.  This is unique across the graph.
+      vnf-name:
+        type: string
+        description: Name of VNF.
+      vnf-name2:
+        type: string
+        description: Alternate name of VNF.
+      vnf-type:
+        type: string
+        description: String capturing type of vnf, that was intended to identify the ASDC resource.  This field has been overloaded in service-specific ways and clients should expect changes to occur in the future to this field as ECOMP matures.
+      service-id:
+        type: string
+        description: Unique identifier of service, does not necessarily map to ASDC service models.  SOON TO BE DEPRECATED
+      regional-resource-zone:
+        type: string
+        description: Regional way of organizing pservers, source of truth should define values
+      prov-status:
+        type: string
+        description: Trigger for operational monitoring of this resource by Service Assurance systems.
+      operational-status:
+        type: string
+        description: Indicator for whether the resource is considered operational.  Valid values are in-service-path and out-of-service-path.
+      license-key:
+        type: string
+        description: OBSOLETE -  do not use
+      equipment-role:
+        type: string
+        description: Client should send valid enumerated value
+      orchestration-status:
+        type: string
+        description: Orchestration status of this VNF, used by MSO.
+      heat-stack-id:
+        type: string
+        description: Heat stack id corresponding to this instance, managed by MSO
+      mso-catalog-key:
+        type: string
+        description: Corresponds to the SDN-C catalog id used to configure this VCE
+      management-option:
+        type: string
+        description: identifier of managed by ATT or customer
+      ipv4-oam-address:
+        type: string
+        description: Address tail-f uses to configure generic-vnf, also used for troubleshooting and is IP used for traps generated by generic-vnf.
+      ipv4-loopback0-address:
+        type: string
+        description: v4 Loopback0 address
+      nm-lan-v6-address:
+        type: string
+        description: v6 Loopback address
+      management-v6-address:
+        type: string
+        description: v6 management address
+      vcpu:
+        type: integer
+        format: int64
+        description: number of vcpus ordered for this instance of VNF, used for VNFs with no vservers/flavors, to be used only by uCPE
+      vcpu-units:
+        type: string
+        description: units associated with vcpu, used for VNFs with no vservers/flavors, to be used only by uCPE
+      vmemory:
+        type: integer
+        format: int64
+        description: number of GB of memory ordered for this instance of VNF, used for VNFs with no vservers/flavors, to be used only by uCPE
+      vmemory-units:
+        type: string
+        description: units associated with vmemory, used for VNFs with no vservers/flavors, to be used only by uCPE
+      vdisk:
+        type: integer
+        format: int64
+        description: number of vdisks ordered for this instance of VNF, used for VNFs with no vservers/flavors, to be used only uCPE
+      vdisk-units:
+        type: string
+        description: units associated with vdisk, used for VNFs with no vservers/flavors, to be used only by uCPE
+      in-maint:
+        type: boolean
+      is-closed-loop-disabled:
+        type: boolean
+      resource-version:
+        type: string
+        description: Used for optimistic concurrency.  Must be empty on create, valid on update and delete.
+      summary-status:
+        type: string
+        description: details regarding the generic-vnf operation, PLEASE DISCONTINUE USE OF THIS FIELD.
+      encrypted-access-flag:
+        type: boolean
+        description: indicates whether generic-vnf access uses SSH
+      entitlement-assignment-group-uuid:
+        type: string
+        description: UUID of the Entitlement group used for licensing VNFs, OBSOLETE -  See child relationships.
+      entitlement-resource-uuid:
+        type: string
+        description: UUID of the specific entitlement resource.  OBSOLETE -  See child relationships.
+      license-assignment-group-uuid:
+        type: string
+        description: UUID of the license assignment group.  OBSOLETE -  See child relationships.
+      license-key-uuid:
+        type: string
+        description: UUID of the actual license resource.  OBSOLETE -  See child relationships.
+      model-invariant-id:
+        type: string
+        description: the ASDC model id for this resource or service model.
+      model-version-id:
+        type: string
+        description: the ASDC model version for this resource or service model.
+      persona-model-version:
+        type: string
+        description: the ASDC model version for this resource or service model.
+      model-customization-id:
+        type: string
+        description: captures the id of all the configuration used to customize the resource for the service.
+      widget-model-id:
+        type: string
+        description: the ASDC data dictionary widget model. This maps directly to the A&AI widget.
+      widget-model-version:
+        type: string
+        description: the ASDC data dictionary version of the widget model.This maps directly to the A&AI version of the widget.
+      as-number:
+        type: string
+        description: as-number of the VNF
+      regional-resource-subzone:
+        type: string
+        description: represents sub zone of the rr plane
+      nf-type:
+        type: string
+        description: Generic description of the type of NF
+      nf-function:
+        type: string
+        description: English description of Network function that the specific VNF deployment is providing
+      nf-role:
+        type: string
+        description: role in the network that this model will be providing
+      nf-naming-code:
+        type: string
+        description: string assigned to this model used for naming purposes
+      selflink:
+        type: string
+        description: Path to the controller object.
+      ipv4-oam-gateway-address:
+        type: string
+        description: Gateway address
+      ipv4-oam-gateway-address-prefix-length:
+        type: integer
+        format: int32
+        description: Prefix length for oam-address
+      vlan-id-outer:
+        type: integer
+        format: int64
+        description: Temporary location for S-TAG to get to VCE
+      nm-profile-name:
+        type: string
+        description: Network Management profile of this VNF
+      relationship-list:
+        type: array
+        items:
+          $ref: "#/definitions/relationship"
+      l-interfaces:
+        type: array
+        items:
+          $ref: "#/definitions/l-interface"
+      lag-interfaces:
+        type: array
+        items:
+          $ref: "#/definitions/lag-interface"
+      vf-modules:
+        type: array
+        items:
+          $ref: "#/definitions/vf-module"
+      licenses:
+        type: array
+        items:
+          $ref: "#/definitions/license"
+      entitlements:
+        type: array
+        items:
+          $ref: "#/definitions/entitlement"
+  generic-vnfs:
+    description: |
+      Collection of VNFs
+    properties:
+      generic-vnf:
+        type: array
+        items:          
+          $ref: "#/definitions/generic-vnf"
+  lag-link:
+    description: |
+      LAG links can connect lag-interfaces
+      ###### Related Nodes
+      - FROM lag-interface
+      - FROM logical-link
+    required:
+    - link-name
+    properties:
+      link-name:
+        type: string
+        description: Alphabetical concatenation of lag-interface names
+      resource-version:
+        type: string
+        description: Used for optimistic concurrency.  Must be empty on create, valid on update and delete.
+      relationship-list:
+        type: array
+        items:
+          $ref: "#/definitions/relationship"
+  lag-links:
+    description: |
+      Collection of link aggregation connections
+    properties:
+      lag-link:
+        type: array
+        items:          
+          $ref: "#/definitions/lag-link"
+  newvce:
+    description: |
+      This object fills in the gaps from vce that were incorporated into generic-vnf.  This object will be retired with vce.
+      ###### Related Nodes
+      - TO l-interface (comprises newvce, Many2Many)
+    required:
+    - vnf-id2
+    - vnf-name
+    - vnf-type
+    properties:
+      vnf-id2:
+        type: string
+        description: Unique id of VNF, can't use same attribute name right now until we promote this new object
+      vnf-name:
+        type: string
+        description: Name of VNF.
+      vnf-name2:
+        type: string
+        description: Alternate name of VNF.
+      vnf-type:
+        type: string
+        description: String capturing type of vnf, that was intended to identify the ASDC resource.  This field has been overloaded in service-specific ways and clients should expect changes to occur in the future to this field as ECOMP matures.
+      prov-status:
+        type: string
+        description: Trigger for operational monitoring of this VNF by BAU Service Assurance systems.
+      operational-status:
+        type: string
+        description: Indicator for whether the resource is considered operational
+      license-key:
+        type: string
+        description: OBSOLETE -  do not use
+      ipv4-oam-address:
+        type: string
+        description: Address tail-f uses to configure generic-vnf, also used for troubleshooting and is IP used for traps generated by GenericVnf (v4-loopback0-ip-address).
+      equipment-role:
+        type: string
+        description: Client should send valid enumerated value.
+      resource-version:
+        type: string
+        description: Used for optimistic concurrency.  Must be empty on create, valid on update and delete.
+      ipv4-loopback0-address:
+        type: string
+        description: v4 Loopback0 address
+      orchestration-status:
+        type: string
+        description: Orchestration status of this VNF, mastered by MSO.
+      heat-stack-id:
+        type: string
+        description: Heat stack id corresponding to this instance, managed by MSO
+      mso-catalog-key:
+        type: string
+        description: Corresponds to the SDN-C catalog id used to configure this VCE
+      relationship-list:
+        type: array
+        items:
+          $ref: "#/definitions/relationship"
+      l-interfaces:
+        type: array
+        items:
+          $ref: "#/definitions/l-interface"
+  newvces:
+    description: |
+      This object fills in the gaps from vce that were incorporated into generic-vnf.  This object will be retired with vce.
+    properties:
+      newvce:
+        type: array
+        items:          
+          $ref: "#/definitions/newvce"
+  pnf:
+    description: |
+      PNF represents a physical network function. typically equipment used in the D1 world. in 1607, this will be populated by SDN-C to represent a premises router that a uCPE connects to. But this can be used to represent any physical device that is not an AIC node or uCPE.
+      ###### Related Nodes
+      - TO p-interface (comprises pnf, Many2Many)
+      - TO lag-interface (comprises pnf, One2Many)
+      - TO complex (Many2One)
+      - TO instance-group (Many2Many)
+      - TO zone (Many2One)
+      - FROM esr-thirdparty-sdnc
+      - FROM generic-vnf
+      - FROM logical-link
+      - FROM service-instance
+    required:
+    - pnf-name
+    - in-maint
+    properties:
+      pnf-name:
+        type: string
+        description: unique name of Physical Network Function.
+      pnf-name2:
+        type: string
+        description: name of Physical Network Function.
+      pnf-name2-source:
+        type: string
+        description: source of name2
+      pnf-id:
+        type: string
+        description: id of pnf
+      equip-type:
+        type: string
+        description: Equipment type.  Source of truth should define valid values.
+      equip-vendor:
+        type: string
+        description: Equipment vendor.  Source of truth should define valid values.
+      equip-model:
+        type: string
+        description: Equipment model.  Source of truth should define valid values.
+      management-option:
+        type: string
+        description: identifier of managed by ATT or customer
+      ipaddress-v4-oam:
+        type: string
+        description: ipv4-oam-address with new naming convention for IP addresses
+      sw-version:
+        type: string
+        description: sw-version is the version of SW for the hosted application on the PNF.
+      in-maint:
+        type: boolean
+      frame-id:
+        type: string
+        description: ID of the physical frame (relay rack) where pnf is installed.
+      serial-number:
+        type: string
+        description: Serial number of the device
+      ipaddress-v4-loopback-0:
+        type: string
+        description: IPV4 Loopback 0 address
+      ipaddress-v6-loopback-0:
+        type: string
+        description: IPV6 Loopback 0 address
+      ipaddress-v4-aim:
+        type: string
+        description: IPV4 AIM address
+      ipaddress-v6-aim:
+        type: string
+        description: IPV6 AIM address
+      ipaddress-v6-oam:
+        type: string
+        description: IPV6 OAM address
+      inv-status:
+        type: string
+        description: CANOPI's inventory status.  Only set with values exactly as defined by CANOPI.
+      resource-version:
+        type: string
+        description: Used for optimistic concurrency.  Must be empty on create, valid on update and delete.
+      prov-status:
+        type: string
+        description: Prov Status of this device (not under canopi control) Valid values [PREPROV/NVTPROV/PROV]
+      nf-role:
+        type: string
+        description: Nf Role is the role performed by this instance in the network.
+      relationship-list:
+        type: array
+        items:
+          $ref: "#/definitions/relationship"
+      p-interfaces:
+        type: array
+        items:
+          $ref: "#/definitions/p-interface"
+      lag-interfaces:
+        type: array
+        items:
+          $ref: "#/definitions/lag-interface"
+  pnfs:
+    description: |
+      Collection of Physical Network Functions.
+    properties:
+      pnf:
+        type: array
+        items:          
+          $ref: "#/definitions/pnf"
+  physical-link:
+    description: |
+      Collection of physical connections, typically between p-interfaces
+      ###### Related Nodes
+      - FROM p-interface
+    required:
+    - link-name
+    properties:
+      link-name:
+        type: string
+        description: e.g., hostnameA_p-connection_nameA_hostnameZ+p_connection-nameZ
+      speed-value:
+        type: string
+        description: Captures the numeric part of the speed
+      speed-units:
+        type: string
+        description: Captures the units corresponding to the speed
+      circuit-id:
+        type: string
+        description: Circuit it
+      dual-mode:
+        type: string
+        description: Dual access mode (e.g., primary, secondary
+      management-option:
+        type: string
+        description: To provide information on who manages this circuit. A&AI or 3rd party transport provider
+      service-provider-name:
+        type: string
+        description: Name of the service Provider on this link.
+      service-provider-bandwidth-up-value:
+        type: integer
+        format: int32
+        description: Upstream Bandwidth value agreed with the service provider
+      service-provider-bandwidth-up-units:
+        type: string
+        description: Units for the upstream BW value
+      service-provider-bandwidth-down-value:
+        type: integer
+        format: int32
+        description: Downstream Bandwidth value agreed with the service provider
+      service-provider-bandwidth-down-units:
+        type: string
+        description: Units for downstream BW value
+      resource-version:
+        type: string
+        description: Used for optimistic concurrency.  Must be empty on create, valid on update and delete.
+      relationship-list:
+        type: array
+        items:
+          $ref: "#/definitions/relationship"
+  physical-links:
+    description: |
+      Collection of physical connections, typically between p-interfaces
+    properties:
+      physical-link:
+        type: array
+        items:          
+          $ref: "#/definitions/physical-link"
+  vig-server:
+    description: |
+      vig-server contains information about a vig server used for IPSec-configuration. Populated by SDN-C from 1607
+      ###### Related Nodes
+      - FROM ipsec-configuration (is composed of vig-server)
+    required:
+    - vig-address-type
+    properties:
+      vig-address-type:
+        type: string
+        description: indicates whether the VIG is for AVPN or INTERNET
+      ipaddress-v4-vig:
+        type: string
+        description: v4 IP of the vig server
+      ipaddress-v6-vig:
+        type: string
+        description: v6 IP of the vig server
+      resource-version:
+        type: string
+        description: Used for optimistic concurrency.  Must be empty on create, valid on update and delete.
+      relationship-list:
+        type: array
+        items:
+          $ref: "#/definitions/relationship"
+  vig-servers:
+    properties:
+      vig-server:
+        type: array
+        items:          
+          $ref: "#/definitions/vig-server"
+  ipsec-configuration:
+    description: |
+      IPSec configuration node will contain various configuration data for the NMTE VNF. This node will have an edge to the generic-vnf (vnf type = TE). Starting 1607, this data will be populated by SDN-C
+      ###### Related Nodes
+      - TO vig-server (comprises ipsec-configuration, One2Many)
+      - FROM generic-vnf
+    required:
+    - ipsec-configuration-id
+    properties:
+      ipsec-configuration-id:
+        type: string
+        description: UUID of this configuration
+      requested-vig-address-type:
+        type: string
+        description: Indicate the type of VIG server like AVPN, INTERNET, BOTH
+      requested-encryption-strength:
+        type: string
+        description: Encryption values like 3des-cbc, des-cbc, aes-128-cbc, aes-192-cbc, aes-265-cbc
+      requested-dmz-type:
+        type: string
+        description: ATT can offer a shared DMZ or a DMZ specific to a customer
+      shared-dmz-network-address:
+        type: string
+        description: Network address of shared DMZ
+      requested-customer-name:
+        type: string
+        description: If the DMZ is a custom DMZ, this field will indicate the customer information
+      ike-version:
+        type: string
+        description: can be 1 or 2
+      ikev1-authentication:
+        type: string
+        description: Contains values like md5, sha1, sha256, sha384
+      ikev1-encryption:
+        type: string
+        description: Encyption values like 3des-cbc, des-cbc, aes-128-cbc,?aes-192-cbc, aes-265-cbc
+      ikev1-dh-group:
+        type: string
+        description: Diffie-Hellman group like DH-GROUP2, DH-GROUP5, DH-GROUP14
+      ikev1-am-group-id:
+        type: string
+        description: Group name defined in VIG for clients using aggressive mode
+      ikev1-am-password:
+        type: string
+        description: pre-shared key for the above group name 
+      ikev1-sa-lifetime:
+        type: string
+        description: Lifetime for IKEv1 SA
+      ipsec-authentication:
+        type: string
+        description: md5, sha1, sha256, sha384
+      ipsec-encryption:
+        type: string
+        description: 3des-cbc, des-cbc, aes-128-cbc,?aes-192-cbc, aes-265-cbc
+      ipsec-sa-lifetime:
+        type: string
+        description: Life time for IPSec SA
+      ipsec-pfs:
+        type: string
+        description: enable PFS or not
+      xauth-userid:
+        type: string
+        description: user ID for xAuth, sm-user,ucpeHostName,nmteHostName
+      xauth-user-password:
+        type: string
+        description: Encrypted using the Juniper $9$ algorithm
+      dpd-interval:
+        type: string
+        description: The time between DPD probe
+      dpd-frequency:
+        type: string
+        description: Maximum number of DPD before claiming the tunnel is down
+      resource-version:
+        type: string
+        description: Used for optimistic concurrency.  Must be empty on create, valid on update and delete.
+      relationship-list:
+        type: array
+        items:
+          $ref: "#/definitions/relationship"
+      vig-servers:
+        type: array
+        items:
+          $ref: "#/definitions/vig-server"
+  ipsec-configurations:
+    properties:
+      ipsec-configuration:
+        type: array
+        items:          
+          $ref: "#/definitions/ipsec-configuration"
+  route-table-reference:
+    description: |
+      Openstack route table reference.
+      ###### Related Nodes
+      - FROM l3-network
+    required:
+    - route-table-reference-id
+    - route-table-reference-fqdn
+    properties:
+      route-table-reference-id:
+        type: string
+        description: Route Table Reference id, UUID assigned to this instance.
+      route-table-reference-fqdn:
+        type: string
+        description: FQDN entry in the route table.
+      resource-version:
+        type: string
+        description: Concurrency value
+      relationship-list:
+        type: array
+        items:
+          $ref: "#/definitions/relationship"
+  route-table-references:
+    description: |
+      Collection of openstack route table references
+    properties:
+      route-table-reference:
+        type: array
+        items:          
+          $ref: "#/definitions/route-table-reference"
+  instance-group:
+    description: |
+      General mechanism for grouping instances
+      ###### Related Nodes
+      - TO model (Many2Many)
+      - FROM l-interface
+      - FROM vnfc
+      - FROM l3-interface-ipv4-address-list
+      - FROM l3-interface-ipv6-address-list
+      - FROM l3-network
+      - FROM pnf
+      - FROM allotted-resource
+      - FROM generic-vnf
+      - FROM service-instance
+      - FROM vip-ipv4-address-list
+      - FROM vip-ipv6-address-list
+    required:
+    - instance-group-role
+    - model-invariant-id
+    - model-version-id
+    - id
+    - description
+    - type
+    properties:
+      instance-group-role:
+        type: string
+        description: role of the instance group.
+      model-invariant-id:
+        type: string
+        description: ASDC model id for this resource or service model.
+      model-version-id:
+        type: string
+        description: ASDC model version uid for this resource model.
+      id:
+        type: string
+        description: Instance Group ID, UUID assigned to this instance.
+      description:
+        type: string
+        description: Descriptive text to help identify the usage of this instance-group
+      type:
+        type: string
+        description: Only valid value today is lower case ha for high availability
+      sub-type:
+        type: string
+        description: Valid values for ha type are [geo-activeactive, geo-activestandby, local-activeactive, local-activestandby]
+      resource-version:
+        type: string
+        description: Concurrency value
+      relationship-list:
+        type: array
+        items:
+          $ref: "#/definitions/relationship"
+  instance-groups:
+    description: |
+      Collection of openstack route table references
+    properties:
+      instance-group:
+        type: array
+        items:          
+          $ref: "#/definitions/instance-group"
+  zone:
+    description: |
+      A zone is a grouping of assets in a location homing to the same connections into the CBB
+      ###### Related Nodes
+      - TO complex (Many2One)
+      - FROM cloud-region
+      - FROM pserver
+      - FROM pnf
+      - FROM service-instance
+    required:
+    - zone-id
+    - zone-name
+    - design-type
+    - zone-context
+    properties:
+      zone-id:
+        type: string
+        description: Code assigned by AIC to the zone
+      zone-name:
+        type: string
+        description: English name associated with the zone
+      design-type:
+        type: string
+        description: Design of zone [Medium/Large?]
+      zone-context:
+        type: string
+        description: Context of zone [production/test]
+      status:
+        type: string
+        description: Status of a zone.
+      resource-version:
+        type: string
+        description: Concurrency value
+      relationship-list:
+        type: array
+        items:
+          $ref: "#/definitions/relationship"
+  zones:
+    description: |
+      Collection of zones
+    properties:
+      zone:
+        type: array
+        items:          
+          $ref: "#/definitions/zone"
+  network:
+    description: |
+      Namespace for network inventory resources.
+    properties:
+      logical-links:
+        type: array
+        items:
+          $ref: "#/definitions/logical-link"
+      site-pair-sets:
+        type: array
+        items:
+          $ref: "#/definitions/site-pair-set"
+      vpn-bindings:
+        type: array
+        items:
+          $ref: "#/definitions/vpn-binding"
+      vpls-pes:
+        type: array
+        items:
+          $ref: "#/definitions/vpls-pe"
+      multicast-configurations:
+        type: array
+        items:
+          $ref: "#/definitions/multicast-configuration"
+      vces:
+        type: array
+        items:
+          $ref: "#/definitions/vce"
+      vnfcs:
+        type: array
+        items:
+          $ref: "#/definitions/vnfc"
+      l3-networks:
+        type: array
+        items:
+          $ref: "#/definitions/l3-network"
+      network-policies:
+        type: array
+        items:
+          $ref: "#/definitions/network-policy"
+      generic-vnfs:
+        type: array
+        items:
+          $ref: "#/definitions/generic-vnf"
+      lag-links:
+        type: array
+        items:
+          $ref: "#/definitions/lag-link"
+      newvces:
+        type: array
+        items:
+          $ref: "#/definitions/newvce"
+      pnfs:
+        type: array
+        items:
+          $ref: "#/definitions/pnf"
+      physical-links:
+        type: array
+        items:
+          $ref: "#/definitions/physical-link"
+      ipsec-configurations:
+        type: array
+        items:
+          $ref: "#/definitions/ipsec-configuration"
+      route-table-references:
+        type: array
+        items:
+          $ref: "#/definitions/route-table-reference"
+      instance-groups:
+        type: array
+        items:
+          $ref: "#/definitions/instance-group"
+      zones:
+        type: array
+        items:
+          $ref: "#/definitions/zone"
+  inventory:
+    properties:
+      search:
+        type: object
+        $ref: "#/definitions/search"
+      actions:
+        type: object
+        $ref: "#/definitions/actions"
+      cloud-infrastructure:
+        type: object
+        $ref: "#/definitions/cloud-infrastructure"
+      external-system:
+        type: object
+        $ref: "#/definitions/external-system"
+      business:
+        type: object
+        $ref: "#/definitions/business"
+      service-design-and-creation:
+        type: object
+        $ref: "#/definitions/service-design-and-creation"
+      network:
+        type: object
+        $ref: "#/definitions/network"
+  edge-tag-query-result:
+    properties:
+      tagged-inventory-item-list:
+        type: array
+        items:          
+          $ref: "#/definitions/tagged-inventory-item-list"
+  tagged-inventory-item-list:
+    properties:
+      inventory-item:
+        type: array
+        items:          
+          $ref: "#/definitions/inventory-item"
+  inventory-item:
+    properties:
+      inventory-item-type:
+        type: string
+      inventory-item-link:
+        type: string
+      inventory-item-data:
+        type: array
+        items:          
+          $ref: "#/definitions/inventory-item-data"
+      tagged-inventory-item-list:
+        type: array
+        items:          
+          $ref: "#/definitions/tagged-inventory-item-list"
+  inventory-item-data:
+    properties:
+      property-name:
+        type: string
+      property-value:
+        type: string
+  edge-tag-query-request:
+    properties:
+      edge-tag:
+        type: string
+      result-detail:
+        type: string
+      start-node-type:
+        type: string
+      start-node-filter:
+        type: array
+        items:          
+          $ref: "#/definitions/start-node-filter"
+      include-node-filter:
+        type: array
+        items:          
+          $ref: "#/definitions/include-node-filter"
+      secondary-filter:
+        type: array
+        items:          
+          $ref: "#/definitions/secondary-filter"
+  start-node-filter:
+    properties:
+      property-name:
+        type: string
+      property-value:
+        type: string
+  include-node-filter:
+    properties:
+      include-node-type:
+        type: string
+  secondary-filter:
+    properties:
+      property-name:
+        type: string
+      filter-type:
+        type: string
+      property-value:
+        type: string
+  search-results:
+    properties:
+      result-data:
+        type: array
+        items:          
+          $ref: "#/definitions/result-data"
+  result-data:
+    properties:
+      resource-type:
+        type: string
+        description: The specific type of node in the A&AI graph
+      resource-link:
+        type: string
+        description: The URL to the specific resource
+  sdn-zone-response:
+    properties:
+      oam-networks:
+        type: object
+        $ref: "#/definitions/oam-networks"
+      az-and-dvs-switches:
+        type: array
+        items:          
+          $ref: "#/definitions/az-and-dvs-switches"
+  az-and-dvs-switches:
+    properties:
+      dvs-switches:
+        type: object
+        $ref: "#/definitions/dvs-switches"
+      availability-zone:
+        type: object
+        $ref: "#/definitions/availability-zone"
+  update:
+    description: |
+      Serves a PATCH like function.  Does not enforce concurrency control.  Clear each usage with AAI team.
+    required:
+    - update-node-type
+    properties:
+      update-node-type:
+        type: string
+      update-node-key:
+        type: array
+        items:          
+          $ref: "#/definitions/update-node-key"
+      update-node-uri:
+        type: string
+      action:
+        type: array
+        items:          
+          $ref: "#/definitions/action"
+  action:
+    properties:
+      action-type:
+        type: string
+      action-data:
+        type: array
+        items:          
+          $ref: "#/definitions/action-data"
+  action-data:
+    properties:
+      property-name:
+        type: string
+      property-value:
+        type: string
+  update-node-key:
+    properties:
+      key-name:
+        type: string
+      key-value:
+        type: string
+  notify:
+    required:
+    - event-id
+    properties:
+      event-id:
+        type: string
+      node-type:
+        type: string
+      event-trigger:
+        type: string
+      key-data:
+        type: array
+        items:          
+          $ref: "#/definitions/key-data"
+      selflink:
+        type: string
+  key-data:
+    properties:
+      key-name:
+        type: string
+      key-value:
+        type: string
+  configurations:
+    description: |
+      Collection of configurations
+    properties:
+      configuration:
+        type: array
+        items:          
+          $ref: "#/definitions/configuration"
+  configuration:
+    description: |
+      Port Mirror Configuration.
+      ###### Related Nodes
+      - TO logical-link (One2Many)
+      - TO metadatum (comprises configuration, One2Many)
+      - TO allotted-resource (One2One)
+      - FROM service-instance
+      - FROM generic-vnf
+    required:
+    - configuration-id
+    - configuration-type
+    - configuration-sub-type
+    - orchestration-status
+    - operational-status
+    - configuration-selflink
+    - model-customization-id
+    properties:
+      management-option:
+        type: string
+        description: Indicates the entity that will manage this feature. Could be an organization or the name of the application as well.
+      configuration-id:
+        type: string
+        description: UUID assigned to configuration.
+      configuration-name:
+        type: string
+        description: Name of the configuration.
+      configuration-type:
+        type: string
+        description: port-mirroring-configuration.
+      configuration-sub-type:
+        type: string
+        description: vprobe, pprobe.
+      model-invariant-id:
+        type: string
+        description: the ASDC model id for this resource or service model.
+      model-version-id:
+        type: string
+        description: the ASDC model version for this resource or service model.
+      orchestration-status:
+        type: string
+        description: Orchestration status of the configuration.
+      operational-status:
+        type: string
+        description: Indicator for whether the resource is considered operational.
+      configuration-selflink:
+        type: string
+        description: URL to endpoint where AAI can get more details from SDN-GC.
+      model-customization-id:
+        type: string
+        description: id of  the configuration used to customize the resource
+      resource-version:
+        type: string
+        description: Used for optimistic concurrency.  Must be empty on create, valid on update and delete.
+      relationship-list:
+        type: object
+        $ref: "#/definitions/relationship-list"
+      metadata:
+        type: object
+        $ref: "#/definitions/metadata"
+  notification-event:
+    properties:
+      cambria.partition:
+        type: string
+      notification-event-header:
+        type: object
+        $ref: "#/definitions/notification-event-header"
+  notification-event-header:
+    properties:
+      id:
+        type: string
+      timestamp:
+        type: string
+      source-name:
+        type: string
+      domain:
+        type: string
+      sequence-number:
+        type: string
+      severity:
+        type: string
+      event-type:
+        type: string
+      version:
+        type: string
+      action:
+        type: string
+      entity-type:
+        type: string
+      top-entity-type:
+        type: string
+      entity-link:
+        type: string
+      status:
+        type: string
+  reserved-prop-names:
+    description: |
+      Internal map to define some reserved properties of a vertex
+    properties:
+      last-mod-source-of-truth:
+        type: string
+      aai-node-type:
+        type: string
+      aai-created-ts:
+        type: integer
+        format: int64
+      aai-unique-key:
+        type: string
+      aai-last-mod-ts:
+        type: integer
+        format: int64
+      source-of-truth:
+        type: string
+      aai-uri:
+        type: string
+  edge-prop-names:
+    description: |
+      Internal map to define the properties of an edge and interpret the map EdgeRules
+    properties:
+      edgeLabel:
+        type: string
+      direction:
+        type: string
+      multiplicityRule:
+        type: string
+      contains-other-v:
+        type: string
+      delete-other-v:
+        type: string
+      SVC-INFRA:
+        type: string
+      prevent-delete:
+        type: string
+  model-and-named-query-search:
+    description: |
+      ModelAndNamedQuerySearch holds query-parameters and instance-properties for performing a named-query or model query
+    properties:
+      query-parameters:
+        type: object
+        $ref: "#/definitions/query-parameters"
+      instance-filters:
+        type: object
+        $ref: "#/definitions/instance-filters"
+      secondary-filts:
+        type: object
+        $ref: "#/definitions/secondary-filts"
+      top-node-type:
+        type: string
+      secondary-filter-cut-point:
+        type: string
+  query-parameters:
+    description: |
+      QueryParameters for performing a named-query or model query
+    properties:
+      named-query:
+        type: object
+        $ref: "#/definitions/named-query"
+      overloaded-model:
+        type: object
+        $ref: "#/definitions/overloaded-model"
+  overloaded-model:
+    description: |
+      Allows for legacy POST of old-style and new-style models
+    required:
+    - model-invariant-id
+    - model-name-version-id
+    - model-type
+    - model-name
+    - model-id
+    - model-version
+    properties:
+      model-invariant-id:
+        type: string
+        description: Unique identifier corresponding to the main definition of a model in ASDC
+      model-name-version-id:
+        type: string
+        description: Unique identifier corresponding to one version of a model in ASDC
+      model-type:
+        type: string
+        description: Type of the model, e.g., service, resource, widget, etc.
+      model-name:
+        type: string
+        description: Name of the model, which can change from version to version.
+      model-id:
+        type: string
+        description: Invariant unique ID which does not change from version to version
+      model-version:
+        type: string
+        description: Version
+      model-description:
+        type: string
+        description: Description
+      resource-version:
+        type: string
+        description: Used for optimistic concurrency.  Must be empty on create, valid on update and delete.
+      model-vers:
+        type: object
+        $ref: "#/definitions/model-vers"
+      relationship-list:
+        type: object
+        $ref: "#/definitions/relationship-list"
+  instance-filters:
+    description: |
+      InstanceFilters for performing a named-query or model query
+    properties:
+      instance-filter:
+        type: array
+        items:          
+          $ref: "#/definitions/instance-filter"
+  instance-filter:
+    description: |
+      InstanceFilter for performing a named-query or model query
+  secondary-filts:
+    description: |
+      SecondaryFilts for performing a named-query or model query
+    properties:
+      secondary-filt:
+        type: array
+        items:          
+          $ref: "#/definitions/secondary-filt"
+  secondary-filt:
+    description: |
+      SecondaryFilt for performing a named-query or model query
+  properties:
+    description: |
+      Property holder for query properties or instance properties
+    properties:
+      property-name:
+        type: string
+      property-value:
+        type: string
+  response-list:
+    description: |
+      Response container for the results of a named-query or model query
+    properties:
+      inventory-response-items:
+        type: object
+        $ref: "#/definitions/inventory-response-items"
+  inventory-response-items:
+    description: |
+      Container for inventory items in response list
+    properties:
+      inventory-response-item:
+        type: array
+        items:          
+          $ref: "#/definitions/inventory-response-item"
+  inventory-response-item:
+    description: |
+      Inventory item for response list
+    properties:
+      model-name:
+        type: string
+      extra-properties:
+        type: object
+        $ref: "#/definitions/extra-properties"
+      inventory-response-items:
+        type: object
+        $ref: "#/definitions/inventory-response-items"
+  extra-properties:
+    description: |
+      Extra properties for inventory item for response list
+    properties:
+      extra-property:
+        type: array
+        items:          
+          $ref: "#/definitions/extra-property"
+  extra-property:
+    properties:
+      property-name:
+        type: string
+      property-value:
+        type: string
+  vnf:
+    description: |
+      Abstract vnf class
+    required:
+    - vnf-id
+    properties:
+      vnf-id:
+        type: string
+        description: Unique id of VNF.  This is unique across the graph.
index f7e1108..63e185e 100644 (file)
@@ -16,6 +16,7 @@
 
 import com.nokia.cbam.lcm.v32.ApiClient;
 import com.nokia.cbam.lcm.v32.model.*;
+import com.nokia.cbam.lcm.v32.JSON;
 import okhttp3.Headers;
 import okhttp3.RequestBody;
 import okhttp3.ResponseBody;
@@ -24,11 +25,15 @@ import okio.Buffer;
 import okio.BufferedSource;
 import org.junit.Test;
 
+import org.threeten.bp.OffsetDateTime;
+import org.threeten.bp.ZoneOffset;
+
 import java.io.ByteArrayOutputStream;
 import java.io.IOException;
 import java.lang.annotation.Annotation;
 
 import static junit.framework.TestCase.assertEquals;
+import static junit.framework.TestCase.assertNotNull;
 import static junit.framework.TestCase.assertTrue;
 
 public class TestInhertence {
@@ -37,7 +42,7 @@ public class TestInhertence {
      * test OpenStack v2 inheritence handling in serialization and deserialization
      */
     @Test
-    public void testOpenStackV2() throws IOException{
+    public void testInheritence() throws IOException{
         InstantiateVnfRequest req = new InstantiateVnfRequest();
         OPENSTACKV2INFO vim = new OPENSTACKV2INFO();
         req.getVims().add(vim);
@@ -55,6 +60,42 @@ public class TestInhertence {
         assertEquals("myPassword", deserializedVim.getAccessInfo().getPassword());
     }
 
+    /**
+     * Test how dates are handled
+     */
+    @Test
+    public void testDateHandling() throws Exception{
+        VnfLifecycleChangeNotification vnfLifecycleChangeNotification = new VnfLifecycleChangeNotification();
+        OffsetDateTime fixedTime = OffsetDateTime.of(1981, 7, 4, 1,2,3,4, ZoneOffset.ofHours(0));
+        vnfLifecycleChangeNotification.setTimestamp(fixedTime);
+        vnfLifecycleChangeNotification.setNotificationType(VnfNotificationType.VNFLIFECYCLECHANGENOTIFICATION);
+        vnfLifecycleChangeNotification.setVnfInstanceId("vnfId");
+        Annotation[] x = new Annotation[0];
+        RequestBody requestBody = new ApiClient().getAdapterBuilder().build().requestBodyConverter(VnfLifecycleChangeNotification.class, x, new Annotation[0]).convert(vnfLifecycleChangeNotification);
+        String content = getContent(requestBody);
+        assertTrue(content.contains("1981-07-04T01:02:03"));
+        ResponseBody responseBody = toResponse(requestBody);
+        VnfLifecycleChangeNotification deserialize = (VnfLifecycleChangeNotification) new ApiClient().getAdapterBuilder().build().responseBodyConverter(VnfLifecycleChangeNotification.class, new Annotation[0]).convert(responseBody);
+        assertEquals(fixedTime, deserialize.getTimestamp());
+    }
+
+    @Test
+    public void testRawDateHAndling()throws  Exception{
+        String content= "{\n" +
+                "\t\"status\": \"STARTED\",\n" +
+                "\t\"vnfInstanceId\": \"CBAM-3f081d70e0da4a44bd8d7b52e4dddbeb\",\n" +
+                "\t\"timestamp\": \"2018-03-24T07:11:09.910335Z\",\n" +
+                "\t\"notificationType\": \"VnfLifecycleChangeNotification\",\n" +
+                "\t\"lifecycleOperationOccurrenceId\": \"CBAM-158182e3df6744109cd980d52f608698\",\n" +
+                "\t\"subscriptionId\": \"CBAM-190e87ba3c0d4348a8d5b0c21bccc11d\",\n" +
+                "\t\"operation\": \"TERMINATE\"\n" +
+                "}";
+
+
+        VnfLifecycleChangeNotification deserialized = new JSON().getGson().fromJson(content, VnfLifecycleChangeNotification.class);
+        assertNotNull(deserialized.getTimestamp());
+    }
+
     private ResponseBody toResponse(RequestBody convert) throws IOException {
         Headers headers = new Headers.Builder().build();
         Buffer buffer = new Buffer();
index 49e94a9..2309cf2 100644 (file)
@@ -30,7 +30,7 @@
     <jacoco.version>0.8.0</jacoco.version>
     <spring.boot.version>2.0.0.RELEASE</spring.boot.version>
   </properties>
-<!-- used to test dependency convergence locally
+  <!-- used to test dependency convergence locally
   <build>
     <plugins>
       <plugin>
diff --git a/pom.xml b/pom.xml
index 1625b41..ea84369 100644 (file)
--- a/pom.xml
+++ b/pom.xml
     limitations under the License.
 -->
 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-    <parent>
-        <groupId>org.onap.oparent</groupId>
-        <artifactId>oparent</artifactId>
-        <version>1.1.0</version>
-    </parent>
-    <modelVersion>4.0.0</modelVersion>
-    <groupId>org.onap.vfc.nfvo.driver.vnfm.svnfm</groupId>
-    <artifactId>vfc-nfvo-driver-vnfm-svnfm</artifactId>
-    <version>1.1.0-SNAPSHOT</version>
-    <packaging>pom</packaging>
-    <name>vfc-nfvo-driver-vnfm-svnfm</name>
-    <description>vfc-nfvo-driver-vnfm-svnfm</description>
-    <modules>
-        <module>zte</module>
-        <module>huawei</module>
-        <module>nokia</module>
-        <module>nokiav2</module>
-    </modules>
+  <parent>
+    <groupId>org.onap.oparent</groupId>
+    <artifactId>oparent</artifactId>
+    <version>1.1.0</version>
+  </parent>
+  <modelVersion>4.0.0</modelVersion>
+  <groupId>org.onap.vfc.nfvo.driver.vnfm.svnfm</groupId>
+  <artifactId>vfc-nfvo-driver-vnfm-svnfm</artifactId>
+  <version>1.1.0-SNAPSHOT</version>
+  <packaging>pom</packaging>
+  <name>vfc-nfvo-driver-vnfm-svnfm</name>
+  <description>vfc-nfvo-driver-vnfm-svnfm</description>
+  <modules>
+    <module>zte</module>
+    <module>huawei</module>
+    <module>nokia</module>
+    <module>nokiav2</module>
+  </modules>
 </project>