Feature 10997: add oci flag as new property in k8s repos
[osm/SOL005.git] / osm-openapi.yaml
index 5e00a2a..e9eaad4 100644 (file)
@@ -1,14 +1,15 @@
 openapi: 3.0.0
+
 servers:
   - description: OSM NB API
-    url: https://osm.etsi.org/nbapi/v1.0.0
+    url: 'https://osm.etsi.org/nbapi/v1.0.0'
+
 info:
   description: |
     This is Open Source MANO Northbound API featuring ETSI NFV SOL005.
-    For more information on OSM, you can visit
-    [http://osm.etsi.org](http://osm.etsi.org) or connect to IRCs
-    [Freenode, #etsi-osm](http://webchat.freenode.net?channels=etsi-osm) or on
-    [OSM IRC, #tech](https://osm.etsi.org:8080/kiwi)
+    For more information on OSM, you can visit [http://osm.etsi.org](http://osm.etsi.org).
+    You can send us your comments and questions to OSM_TECH@list.etsi.org
+    or join the [OpenSourceMANO Slack Workplace](https://join.slack.com/t/opensourcemano/shared_invite/enQtMzQ3MzYzNTQ0NDIyLWVkNTE4ZjZjNWI0ZTQyN2VhOTI1MjViMzU1NWYwMWM3ODI4NTQyY2VlODA2ZjczMWIyYTFkZWNiZmFkM2M2ZDk)
   version: "1.0.0"
   title: OSM NB API featuring ETSI NFV SOL005
   contact:
@@ -16,6 +17,7 @@ info:
   license:
     name: Apache 2.0
     url: 'http://www.apache.org/licenses/LICENSE-2.0.html'
+
 tags:
   - name: 'VNF packages'
     description: Management operations of VNF descriptors and packages
@@ -23,7 +25,31 @@ tags:
     description: Management operations of NS descriptors and packages
   - name: 'NS instances'
     description: Management operations of NS instances
+  - name: 'NetSlice templates'
+    description: Management operations of NetSlice Templates
+  - name: 'NetSlice instances'
+    description: Management operations of NetSlice Instances
+  - name: 'NS Performance Management'
+    description: Management operations related to Performance Mangement of NS instances
+  - name: 'Physical Data Units (PDU)'
+    description: Management operations of PDUs
+  - name: 'Authentication'
+    description: Authentication operations
+  - name: 'Identity'
+    description: Management operations of users, projects and roles
+  - name: 'Infrastructure'
+    description: Management operations of VIM, VIM accounts, WIM and SDN controllers
+  - name: 'Repositories'
+    description: Management operations of repositories
+  - name: 'Admin'
+    description: Management operations of Administration items
+
+security:
+  - bearerAuth: []
+
 paths:
+
+# BEGIN NS Packages
   '/nsd/v1/ns_descriptors':
     get:
       tags:
@@ -31,8 +57,6 @@ paths:
       summary: Query information about multiple NS descriptor resources
       description: Query information about multiple NS descriptor resources
       operationId: getNSDs
-      security:
-        - bearerAuth: []
       responses:
         '200':
           description: OK
@@ -73,8 +97,6 @@ paths:
       summary: Create a new NS descriptor resource
       description: Create a new NS descriptor resource
       operationId: addNSD
-      security:
-        - bearerAuth: []
       requestBody:
         $ref: '#/components/requestBodies/CreateNsdInfoRequest'
       responses:
@@ -88,10 +110,10 @@ paths:
           content:
             application/json:
               schema:
-                $ref: '#/components/schemas/NsdInfo'
+                $ref: '#/components/schemas/ObjectId'
             application/yaml:
               schema:
-                $ref: '#/components/schemas/NsdInfo'
+                $ref: '#/components/schemas/ObjectId'
         '400':
           $ref: '#/components/responses/BadRequest'
         '401':
@@ -117,14 +139,19 @@ paths:
         default:
           $ref: '#/components/responses/UnexpectedError'
   '/nsd/v1/ns_descriptors/{nsdInfoId}':
+    parameters:
+      - name: nsdInfoId
+        in: path
+        required: true
+        description: NSD Info ID
+        schema:
+          type: string
     get:
       tags:
         - "NS packages"
       summary: Read information about an individual NS descriptor resource
       description: Read information about an individual NS descriptor resource
       operationId: getNSD
-      security:
-        - bearerAuth: []
       responses:
         '200':
           description: OK
@@ -165,8 +192,6 @@ paths:
       summary: Delete an individual NS descriptor resource
       description: Delete an individual NS descriptor resource
       operationId: deleteNSD
-      security:
-        - bearerAuth: []
       responses:
         '204':
           description: No Content
@@ -197,23 +222,14 @@ paths:
     patch:
       tags:
         - "NS packages"
-      summary: Modify the operational state and/or the user defined data of an  individual NS descriptor resource
-      description: Modify the operational state and/or the user defined data of an  individual NS descriptor resource
+      summary: Modify the data of an  individual NS descriptor resource
+      description: Modify the data of an  individual NS descriptor resource
       operationId: updateNSD
-      security:
-        - bearerAuth: []
       requestBody:
         $ref: '#/components/requestBodies/NsdInfoModifications'
       responses:
-        '200':
-          description: OK
-          content:
-            application/json:
-              schema:
-                $ref: '#/components/schemas/NsdInfoModifications'
-            application/yaml:
-              schema:
-                $ref: '#/components/schemas/NsdInfoModifications'
+        '204':
+          description: No Content
         '400':
           $ref: '#/components/responses/BadRequest'
         '401':
@@ -239,25 +255,36 @@ paths:
         default:
           $ref: '#/components/responses/UnexpectedError'
   '/nsd/v1/ns_descriptors/{nsdInfoId}/nsd_content':
+    parameters:
+      - name: nsdInfoId
+        in: path
+        required: true
+        description: NSD Info ID
+        schema:
+          type: string
     get:
       tags:
         - "NS packages"
       summary: Fetch the content of a NSD
       description: Fetch the content of a NSD
       operationId: getNSDcontent
-      security:
-        - bearerAuth: []
       responses:
         '200':
           description: OK
-          $ref: '#/components/requestBodies/NsdContent'
+          content:
+            application/zip:
+              schema:
+                $ref: '#/components/schemas/NsPackage'
         '206':
           description: Partial Content
           headers:
             Content-Range:
               schema:
                 type: string
-          $ref: '#/components/requestBodies/NsdContent'
+          content:
+            application/zip:
+              schema:
+                $ref: '#/components/schemas/NsPackage'
         '400':
           $ref: '#/components/responses/BadRequest'
         '401':
@@ -288,10 +315,8 @@ paths:
       summary: Upload the content of a NSD
       description: Upload the content of a NSD
       operationId: updateNSDcontent
-      security:
-        - bearerAuth: []
       requestBody:
-        $ref: '#/components/requestBodies/NsdContent'
+        $ref: '#/components/requestBodies/NsPackage'
       responses:
         '202':
           description: Accepted
@@ -321,25 +346,45 @@ paths:
           $ref: '#/components/responses/UnexpectedError'
         default:
           $ref: '#/components/responses/UnexpectedError'
-  '/vnfpkgm/v1/vnf_packages':
+  '/nsd/v1/ns_descriptors/{nsdInfoId}/artifacts/{artifactPath}':
+    parameters:
+      - name: nsdInfoId
+        in: path
+        required: true
+        description: NS Package ID
+        schema:
+          type: string
+      - name: artifactPath
+        in: path
+        required: true
+        description: Artifact Path
+        schema:
+          type: string
     get:
       tags:
-        - "VNF packages"
-      summary: Query information about multiple VNF package resources
-      description: Query information about multiple VNF package resoureces
-      operationId: getVnfPkgs
-      security:
-        - bearerAuth: []
+        - "NS packages"
+      summary: Fetch individual NS package artifact
+      description: Fetch individual NS package artifact
+      operationId: getNsPkgArtifact
       responses:
         '200':
           description: OK
           content:
-            application/json:
+            application/octet-stream:
               schema:
-                $ref: '#/components/schemas/ArrayOfVnfPkgInfo'
-            application/yaml:
+                type: string
+                format: binary
+        '206':
+          description: Partial Content
+          headers:
+            Content-Range:
               schema:
-                $ref: '#/components/schemas/ArrayOfVnfPkgInfo'
+                type: string
+          content:
+            application/octet-stream:
+              schema:
+                type: string
+                format: binary
         '400':
           $ref: '#/components/responses/BadRequest'
         '401':
@@ -364,31 +409,27 @@ paths:
           $ref: '#/components/responses/UnexpectedError'
         default:
           $ref: '#/components/responses/UnexpectedError'
-    post:
+  '/nsd/v1/ns_descriptors/{nsdInfoId}/nsd':
+    parameters:
+      - name: nsdInfoId
+        in: path
+        required: true
+        description: NS Package ID
+        schema:
+          type: string
+    get:
       tags:
-        - "VNF packages"
-      summary: Create a new VNF package resource
-      description: Create a new VNF package resource
-      operationId: addVnfPkg
-      security:
-        - bearerAuth: []
-      requestBody:
-        $ref: '#/components/requestBodies/CreateVnfPkgInfoRequest'
+        - "NS packages"
+      summary: Read NSD of an on-boarded NS package
+      description: Read NSD of an on-boarded NS package
+      operationId: getNsPkgNsd
       responses:
-        '201':
-          description: Created
-          headers:
-            Location:
-              schema:
-                type: string
-                format: uri
+        '200':
+          description: OK
           content:
-            application/json:
-              schema:
-                $ref: '#/components/schemas/VnfPkgInfo'
-            application/yaml:
+            text/plain:
               schema:
-                $ref: '#/components/schemas/VnfPkgInfo'
+                $ref: '#/components/schemas/NsDescriptor'
         '400':
           $ref: '#/components/responses/BadRequest'
         '401':
@@ -413,25 +454,37 @@ paths:
           $ref: '#/components/responses/UnexpectedError'
         default:
           $ref: '#/components/responses/UnexpectedError'
-  '/vnfpkgm/v1/vnf_packages/{vnfPkgId}':
-    get:
+  '/nsd/v1/ns_descriptors_content':
+    post:
       tags:
-        - "VNF packages"
-      summary: Read information about an individual VNF package resource
-      description: Read information about an individual VNF package resource
-      operationId: getVnfPkg
-      security:
-        - bearerAuth: []
+        - "NS packages"
+      summary: Upload a NS package by providing the content of the NS package
+      description: Upload a NS package by providing the content of the NS package
+      operationId: uploadNsPkgsContent
+      requestBody:
+        content:
+          application/zip:
+            schema:
+              $ref: '#/components/schemas/NsPackage'
       responses:
-        '200':
-          description: OK
+        '201':
+          description: Created
+          headers:
+            Location:
+              schema:
+                type: string
+                format: uri
           content:
             application/json:
               schema:
-                $ref: '#/components/schemas/VnfPkgInfo'
+                $ref: '#/components/schemas/ObjectId'
             application/yaml:
               schema:
-                $ref: '#/components/schemas/VnfPkgInfo'
+                $ref: '#/components/schemas/ObjectId'
+        '202':
+          description: Accepted
+        '204':
+          description: No Content
         '400':
           $ref: '#/components/responses/BadRequest'
         '401':
@@ -456,17 +509,33 @@ paths:
           $ref: '#/components/responses/UnexpectedError'
         default:
           $ref: '#/components/responses/UnexpectedError'
-    delete:
+    get:
       tags:
-        - "VNF packages"
-      summary: Delete an individual VNF package resource
-      description: Delete an individual VNF package resource
-      operationId: deleteVnfPkg
-      security:
-        - bearerAuth: []
+        - "NS packages"
+      summary: Query information about multiple NS package resources
+      description: Query information about multiple NS package resources
+      operationId: getNsPkgsContent
       responses:
-        '204':
-          description: No Content
+        '200':
+          description: OK
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/ArrayOfNsdInfo'
+            application/yaml:
+              schema:
+                $ref: '#/components/schemas/ArrayOfNsdInfo'
+        '206':
+          description: Partial Content
+          headers:
+            Content-Range:
+              schema:
+                type: string
+          content:
+            application/octet-stream:
+              schema:
+                type: string
+                format: binary
         '400':
           $ref: '#/components/responses/BadRequest'
         '401':
@@ -491,26 +560,30 @@ paths:
           $ref: '#/components/responses/UnexpectedError'
         default:
           $ref: '#/components/responses/UnexpectedError'
-    patch:
+  '/nsd/v1/ns_descriptors_content/{nsdInfoId}':
+    parameters:
+      - name: nsdInfoId
+        in: path
+        required: true
+        description: NS Package ID
+        schema:
+          type: string
+    get:
       tags:
-        - "VNF packages"
-      summary: Modify the operational state and/or the user defined data of an individual VNF package resource
-      description: Modify the operational state and/or the user defined data of an individual VNF package resource
-      operationId: updateVnfPkg
-      security:
-        - bearerAuth: []
-      requestBody:
-        $ref: '#/components/requestBodies/VnfPkgInfoModifications'
+        - "NS packages"
+      summary: Read information about an individual NS package resource
+      description: Read information about an individual NS package resource
+      operationId: getNsPkgsIdContent
       responses:
         '200':
           description: OK
           content:
             application/json:
               schema:
-                $ref: '#/components/schemas/VnfPkgInfoModifications'
+                $ref: '#/components/schemas/NsdInfo'
             application/yaml:
               schema:
-                $ref: '#/components/schemas/VnfPkgInfoModifications'
+                $ref: '#/components/schemas/NsdInfo'
         '400':
           $ref: '#/components/responses/BadRequest'
         '401':
@@ -535,22 +608,17 @@ paths:
           $ref: '#/components/responses/UnexpectedError'
         default:
           $ref: '#/components/responses/UnexpectedError'
-  '/vnfpkgm/v1/vnf_packages/{vnfPkgId}/vnfd':
-    get:
+    put:
       tags:
-        - "VNF packages"
-      summary: Read VNFD of an on-boarded VNF package
-      description: Read VNFD of an on-boarded VNF package
-      operationId: getVnfPkgVNFD
-      security:
-        - bearerAuth: []
+        - "NS packages"
+      summary: Modify an individual NS package resource
+      description: Modify an individual NS package resource
+      operationId: updateNsPkgsIdContent
+      requestBody:
+        $ref: '#/components/requestBodies/NsdInfoModifications'
       responses:
-        '200':
-          description: OK
-          content:
-            text/plain:
-              schema:
-                $ref: '#/components/schemas/VnfDescriptor'
+        '204':
+          description: No Content
         '400':
           $ref: '#/components/responses/BadRequest'
         '401':
@@ -575,32 +643,15 @@ paths:
           $ref: '#/components/responses/UnexpectedError'
         default:
           $ref: '#/components/responses/UnexpectedError'
-  '/vnfpkgm/v1/vnf_packages/{vnfPkgId}/package_content':
-    get:
+    delete:
       tags:
-        - "VNF packages"
-      summary: Fetch an on-boarded VNF package
-      description: Fetch an on-boarded VNF package
-      operationId: getVnfPkgContent
-      security:
-        - bearerAuth: []
+        - "NS packages"
+      summary: Delete an individual NS package resource
+      description: Delete an individual NS package resource
+      operationId: deleteNSPkgsIdContent
       responses:
-        '200':
-          description: OK
-          content:
-            application/zip:
-              schema:
-                $ref: '#/components/schemas/VnfPackage'
-        '206':
-          description: Partial Content
-          headers:
-            Content-Range:
-              schema:
-                type: string
-          content:
-            application/zip:
-              schema:
-                $ref: '#/components/schemas/VnfPackage'
+        '204':
+          description: No Content
         '400':
           $ref: '#/components/responses/BadRequest'
         '401':
@@ -625,21 +676,26 @@ paths:
           $ref: '#/components/responses/UnexpectedError'
         default:
           $ref: '#/components/responses/UnexpectedError'
-    put:
+# END NS Packages
+
+# BEGIN VNF Packages
+  '/vnfpkgm/v1/vnf_packages':
+    get:
       tags:
         - "VNF packages"
-      summary: Upload a VNF package by providing the content of the VNF package
-      description: Upload a VNF package by providing the content of the VNF package
-      operationId: uploadVnfPkgContent
-      security:
-        - bearerAuth: []
-      requestBody:
-        $ref: '#/components/requestBodies/VnfPackage'
+      summary: Query information about multiple VNF package resources
+      description: Query information about multiple VNF package resources
+      operationId: getVnfPkgs
       responses:
-        '202':
-          description: Accepted
-        #'204':
-        #  description: No Content
+        '200':
+          description: OK
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/ArrayOfVnfPkgInfo'
+            application/yaml:
+              schema:
+                $ref: '#/components/schemas/ArrayOfVnfPkgInfo'
         '400':
           $ref: '#/components/responses/BadRequest'
         '401':
@@ -664,22 +720,29 @@ paths:
           $ref: '#/components/responses/UnexpectedError'
         default:
           $ref: '#/components/responses/UnexpectedError'
-  '/vnfpkgm/v1/vnf_packages/{vnfPkgId}/package_content/upload_from_uri':
     post:
       tags:
         - "VNF packages"
-      summary: Upload a VNF package by providing the URI of the VNF package
-      description: Upload a VNF package by providing the URI of the VNF package
-      operationId: uploadVnfPkgContentFromURI
-      security:
-        - bearerAuth: []
+      summary: Create a new VNF package resource
+      description: Create a new VNF package resource
+      operationId: addVnfPkg
       requestBody:
-        $ref: '#/components/requestBodies/UploadVnfPackageFromUriRequest'
+        $ref: '#/components/requestBodies/CreateVnfPkgInfoRequest'
       responses:
-        '202':
-          description: Accepted
-        #'204':
-        #  description: No Content
+        '201':
+          description: Created
+          headers:
+            Location:
+              schema:
+                type: string
+                format: uri
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/ObjectId'
+            application/yaml:
+              schema:
+                $ref: '#/components/schemas/ObjectId'
         '400':
           $ref: '#/components/responses/BadRequest'
         '401':
@@ -704,34 +767,30 @@ paths:
           $ref: '#/components/responses/UnexpectedError'
         default:
           $ref: '#/components/responses/UnexpectedError'
-  '/vnfpkgm/v1/vnf_packages/{vnfPkgId}/artifacts/{artifactPath}':
+  '/vnfpkgm/v1/vnf_packages/{vnfPkgId}':
+    parameters:
+      - name: vnfPkgId
+        in: path
+        required: true
+        description: VNF Package ID
+        schema:
+          type: string
     get:
       tags:
         - "VNF packages"
-      summary: Fetch individual VNF package artifact
-      description: Fetch individual VNF package artifact
-      operationId: getVnfPkgArtifact
-      security:
-        - bearerAuth: []
+      summary: Read information about an individual VNF package resource
+      description: Read information about an individual VNF package resource
+      operationId: getVnfPkg
       responses:
         '200':
           description: OK
           content:
-            application/octet-stream:
-              schema:
-                type: string
-                format: binary
-        '206':
-          description: Partial Content
-          headers:
-            Content-Range:
+            application/json:
               schema:
-                type: string
-          content:
-            application/octet-stream:
+                $ref: '#/components/schemas/VnfPkgInfo'
+            application/yaml:
               schema:
-                type: string
-                format: binary
+                $ref: '#/components/schemas/VnfPkgInfo'
         '400':
           $ref: '#/components/responses/BadRequest'
         '401':
@@ -756,25 +815,15 @@ paths:
           $ref: '#/components/responses/UnexpectedError'
         default:
           $ref: '#/components/responses/UnexpectedError'
-  '/nslcm/v1/ns_instances':
-    get:
+    delete:
       tags:
-        - "NS instances"
-      summary: Query information about multiple NS instances
-      description: Query information about multiple NS isntances
-      operationId: getNSinstances
-      security:
-        - bearerAuth: []
+        - "VNF packages"
+      summary: Delete an individual VNF package resource
+      description: Delete an individual VNF package resource
+      operationId: deleteVnfPkg
       responses:
-        '200':
-          description: OK
-          content:
-            application/json:
-              schema:
-                $ref: '#/components/schemas/ArrayOfNsInstance'
-            application/yaml:
-              schema:
-                $ref: '#/components/schemas/ArrayOfNsInstance'
+        '204':
+          description: No Content
         '400':
           $ref: '#/components/responses/BadRequest'
         '401':
@@ -799,31 +848,17 @@ paths:
           $ref: '#/components/responses/UnexpectedError'
         default:
           $ref: '#/components/responses/UnexpectedError'
-    post:
+    patch:
       tags:
-        - "NS instances"
-      summary: Create a new NS instance resource
-      description: Create a new NS instance resource
-      operationId: addNSinstance
-      security:
-        - bearerAuth: []
+        - "VNF packages"
+      summary: Modify an individual VNF package resource
+      description: Modify an individual VNF package resource
+      operationId: updateVnfPkg
       requestBody:
-        $ref: '#/components/requestBodies/CreateNsRequest'
+        $ref: '#/components/requestBodies/VnfPkgInfoModifications'
       responses:
-        '201':
-          description: Created
-          headers:
-            Location:
-              schema:
-                type: string
-                format: uri
-          content:
-            application/json:
-              schema:
-                $ref: '#/components/schemas/NsInstance'
-            application/yaml:
-              schema:
-                $ref: '#/components/schemas/NsInstance'
+        '204':
+          description: No Content
         '400':
           $ref: '#/components/responses/BadRequest'
         '401':
@@ -848,25 +883,27 @@ paths:
           $ref: '#/components/responses/UnexpectedError'
         default:
           $ref: '#/components/responses/UnexpectedError'
-  '/nslcm/v1/ns_instances/{nsInstanceId}':
+  '/vnfpkgm/v1/vnf_packages/{vnfPkgId}/vnfd':
+    parameters:
+      - name: vnfPkgId
+        in: path
+        required: true
+        description: VNF Package ID
+        schema:
+          type: string
     get:
       tags:
-        - "NS instances"
-      summary: Read an individual NS instance resource
-      description: Read an individual NS instance resource
-      operationId: getNSinstance
-      security:
-        - bearerAuth: []
+        - "VNF packages"
+      summary: Read VNFD of an on-boarded VNF package
+      description: Read VNFD of an on-boarded VNF package
+      operationId: getVnfPkgVnfd
       responses:
         '200':
           description: OK
           content:
-            application/json:
-              schema:
-                $ref: '#/components/schemas/NsInstance'
-            application/yaml:
+            text/plain:
               schema:
-                $ref: '#/components/schemas/NsInstance'
+                $ref: '#/components/schemas/VnfDescriptor'
         '400':
           $ref: '#/components/responses/BadRequest'
         '401':
@@ -891,17 +928,37 @@ paths:
           $ref: '#/components/responses/UnexpectedError'
         default:
           $ref: '#/components/responses/UnexpectedError'
-    delete:
+  '/vnfpkgm/v1/vnf_packages/{vnfPkgId}/package_content':
+    parameters:
+      - name: vnfPkgId
+        in: path
+        required: true
+        description: VNF Package ID
+        schema:
+          type: string
+    get:
       tags:
-        - "NS instances"
-      summary: Delete an individual NS instance resource
-      description: Delete an individual NS instance resource
-      operationId: deleteNSinstance
-      security:
-        - bearerAuth: []
+        - "VNF packages"
+      summary: Fetch an on-boarded VNF package
+      description: Fetch an on-boarded VNF package
+      operationId: getVnfPkgContent
       responses:
-        '204':
-          description: No Content
+        '200':
+          description: OK
+          content:
+            application/zip:
+              schema:
+                $ref: '#/components/schemas/VnfPackage'
+        '206':
+          description: Partial Content
+          headers:
+            Content-Range:
+              schema:
+                type: string
+          content:
+            application/zip:
+              schema:
+                $ref: '#/components/schemas/VnfPackage'
         '400':
           $ref: '#/components/responses/BadRequest'
         '401':
@@ -926,33 +983,22 @@ paths:
           $ref: '#/components/responses/UnexpectedError'
         default:
           $ref: '#/components/responses/UnexpectedError'
-  '/nslcm/v1/ns_instances/{nsInstanceId}/instantiate':
-    post:
+    put:
       tags:
-        - "NS instances"
-      summary: Instantiate a NS
-      description: |
-        Instantiate a NS. The precondition is that the NS instance must have
-        been created and must be in NOT_INSTANTIATED state. As a result of the
-        success of this operation, the NFVO creates a "NS Lifecycle Operation
-        Occurrence" resource for the request, and the NS instance state becomes
-        INSTANTIATED.
-      operationId: instantiateNSinstance
-      security:
-        - bearerAuth: []
+        - "VNF packages"
+      summary: Upload a VNF package by providing the content of the VNF package
+      description: Upload a VNF package by providing the content of the VNF package
+      operationId: uploadVnfPkgContent
       requestBody:
-        $ref: '#/components/requestBodies/InstantiateNsRequest'
+        content:
+          application/zip:
+            schema:
+              $ref: '#/components/schemas/VnfPackage'
       responses:
         '202':
           description: Accepted
-          headers:
-            Location:
-              description: |
-                It must point to the new "NS Lifecycle Operation Occurrence"
-                resource, i.e. an URI like ".../ns_lcm_op_occs/{nsLcmOpOccId}"
-              schema:
-                type: string
-                format: uri
+        '204':
+          description: No Content
         '400':
           $ref: '#/components/responses/BadRequest'
         '401':
@@ -977,33 +1023,45 @@ paths:
           $ref: '#/components/responses/UnexpectedError'
         default:
           $ref: '#/components/responses/UnexpectedError'
-  '/nslcm/v1/ns_instances/{nsInstanceId}/scale':
-    post:
+  '/vnfpkgm/v1/vnf_packages/{vnfPkgId}/artifacts/{artifactPath}':
+    parameters:
+      - name: vnfPkgId
+        in: path
+        required: true
+        description: VNF Package ID
+        schema:
+          type: string
+      - name: artifactPath
+        in: path
+        required: true
+        description: Artifact Path
+        schema:
+          type: string
+    get:
       tags:
-        - "NS instances"
-      summary: Scale a NS instance
-      description: |
-        Scale a NS instance. The precondition is that the NS instance must have
-        been created and must be in INSTANTIATED state. As a result of the
-        success of this operation, the NFVO creates a "NS Lifecycle Operation
-        Occurrence" resource for the request, and the NS instance state remains
-        INSTANTIATED.
-      operationId: scaleNSinstance
-      security:
-        - bearerAuth: []
-      requestBody:
-        $ref: '#/components/requestBodies/ScaleNsRequest'
+        - "VNF packages"
+      summary: Fetch individual VNF package artifact
+      description: Fetch individual VNF package artifact
+      operationId: getVnfPkgArtifact
       responses:
-        '202':
-          description: Accepted
+        '200':
+          description: OK
+          content:
+            application/octet-stream:
+              schema:
+                type: string
+                format: binary
+        '206':
+          description: Partial Content
           headers:
-            Location:
-              description: |
-                It must point to the new "NS Lifecycle Operation Occurrence"
-                resource, i.e. an URI like ".../ns_lcm_op_occs/{nsLcmOpOccId}"
+            Content-Range:
               schema:
                 type: string
-                format: uri
+          content:
+            application/octet-stream:
+              schema:
+                type: string
+                format: binary
         '400':
           $ref: '#/components/responses/BadRequest'
         '401':
@@ -1028,33 +1086,37 @@ paths:
           $ref: '#/components/responses/UnexpectedError'
         default:
           $ref: '#/components/responses/UnexpectedError'
-  '/nslcm/v1/ns_instances/{nsInstanceId}/update':
+  '/vnfpkgm/v1/vnf_packages_content':
     post:
       tags:
-        - "NS instances"
-      summary: Update a NS instance
-      description: |
-        Update a NS instance. The precondition is that the NS instance must have
-        been created and must be in INSTANTIATED state. As a result of the
-        success of this operation, the NFVO creates a "NS Lifecycle Operation
-        Occurrence" resource for the request, and the NS instance state remains
-        INSTANTIATED.
-      operationId: updateNSinstance
-      security:
-        - bearerAuth: []
+        - "VNF packages"
+      summary: Upload a VNF package by providing the content of the VNF package
+      description: Upload a VNF package by providing the content of the VNF package
+      operationId: uploadVnfPkgsContent
       requestBody:
-        $ref: '#/components/requestBodies/UpdateNsRequest'
+        content:
+          application/zip:
+            schema:
+              $ref: '#/components/schemas/VnfPackage'
       responses:
-        '202':
-          description: Accepted
+        '201':
+          description: Created
           headers:
             Location:
-              description: |
-                It must point to the new "NS Lifecycle Operation Occurrence"
-                resource, i.e. an URI like ".../ns_lcm_op_occs/{nsLcmOpOccId}"
               schema:
                 type: string
                 format: uri
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/ObjectId'
+            application/yaml:
+              schema:
+                $ref: '#/components/schemas/ObjectId'
+        '202':
+          description: Accepted
+        '204':
+          description: No Content
         '400':
           $ref: '#/components/responses/BadRequest'
         '401':
@@ -1079,33 +1141,33 @@ paths:
           $ref: '#/components/responses/UnexpectedError'
         default:
           $ref: '#/components/responses/UnexpectedError'
-  '/nslcm/v1/ns_instances/{nsInstanceId}/heal':
-    post:
+    get:
       tags:
-        - "NS instances"
-      summary: Heal a NS instance
-      description: |
-        Heal a NS instance. The precondition is that the NS instance must have
-        been created and must be in INSTANTIATED state. As a result of the
-        success of this operation, the NFVO creates a "NS Lifecycle Operation
-        Occurrence" resource for the request, and the NS instance state remains
-        INSTANTIATED.
-      operationId: healNSinstance
-      security:
-        - bearerAuth: []
-      requestBody:
-        $ref: '#/components/requestBodies/HealNsRequest'
+        - "VNF packages"
+      summary: Query information about multiple VNF package resources
+      description: Query information about multiple VNF package resources
+      operationId: getVnfPkgsContent
       responses:
-        '202':
-          description: Accepted
+        '200':
+          description: OK
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/ArrayOfVnfPkgInfo'
+            application/yaml:
+              schema:
+                $ref: '#/components/schemas/ArrayOfVnfPkgInfo'
+        '206':
+          description: Partial Content
           headers:
-            Location:
-              description: |
-                It must point to the new "NS Lifecycle Operation Occurrence"
-                resource, i.e. an URI like ".../ns_lcm_op_occs/{nsLcmOpOccId}"
+            Content-Range:
               schema:
                 type: string
-                format: uri
+          content:
+            application/octet-stream:
+              schema:
+                type: string
+                format: binary
         '400':
           $ref: '#/components/responses/BadRequest'
         '401':
@@ -1130,35 +1192,32 @@ paths:
           $ref: '#/components/responses/UnexpectedError'
         default:
           $ref: '#/components/responses/UnexpectedError'
-  '/nslcm/v1/ns_instances/{nsInstanceId}/terminate':
-    post:
+  '/vnfpkgm/v1/vnf_packages_content/{packageContentId}':
+    parameters:
+      - name: packageContentId
+        in: path
+        required: true
+        description: VNF Package Content ID
+        schema:
+          type: string
+    get:
       tags:
-        - "NS instances"
-      summary: Terminate a NS instance
-      description: |
-        Terminate a NS instance. The precondition is that the NS instance must have
-        been created and must be in INSTANTIATED state. As a result of the
-        success of this operation, the NFVO creates a "NS Lifecycle Operation
-        Occurrence" resource for the request, and the NS instance state becomes
-        NOT_INSTANTIATED.
-      operationId: terminateNSinstance
-      security:
-        - bearerAuth: []
-      requestBody:
-        $ref: '#/components/requestBodies/TerminateNsRequest'
+        - "VNF packages"
+      summary: Read information about an individual VNF package resource
+      description: Read information about an individual VNF package resource
+      operationId: getVnfPkgsIdContent
       responses:
-        '202':
-          description: Accepted
-          headers:
-            Location:
-              description: |
-                It must point to the new "NS Lifecycle Operation Occurrence"
-                resource, i.e. an URI like ".../ns_lcm_op_occs/{nsLcmOpOccId}"
+        '200':
+          description: OK
+          content:
+            application/json:
               schema:
-                type: string
-                format: uri
-        '400':
-          $ref: '#/components/responses/BadRequest'
+                $ref: '#/components/schemas/VnfPkgInfo'
+            application/yaml:
+              schema:
+                $ref: '#/components/schemas/VnfPkgInfo'
+        '400':
+          $ref: '#/components/responses/BadRequest'
         '401':
           $ref: '#/components/responses/Unauthorized'
         '403':
@@ -1181,858 +1240,8007 @@ paths:
           $ref: '#/components/responses/UnexpectedError'
         default:
           $ref: '#/components/responses/UnexpectedError'
-externalDocs:
-  description: Find out more OSM
-  url: 'http://osm.etsi.org/wikipub'
-components:
-  responses:
-    BadRequest:
-      description: Bad request. The server cannot process the request due to a client error.
-      content:
-        application/json:
-          schema:
-            $ref: '#/components/schemas/ProblemDetails'
-    Unauthorized:
-      description: Authorization information is missing or invalid.
-      content:
-        application/json:
-          schema:
-            $ref: '#/components/schemas/ProblemDetails'
-    Forbidden:
-      description: Not enough permissions to do this operation.
-      content:
-        application/json:
-          schema:
-            $ref: '#/components/schemas/ProblemDetails'
-    NotFound:
-      description: The specified resource was not found.
-      content:
-        application/json:
-          schema:
-            $ref: '#/components/schemas/ProblemDetails'
-    MethodNotAllowed:
-      description: This method is not supported for the requested resource.
-      content:
-        application/json:
-          schema:
-            $ref: '#/components/schemas/ProblemDetails'
-    NotAcceptable:
-      description: The requested resource content cannot match the Accept headers sent in the request.
-      content:
-        application/json:
-          schema:
-            $ref: '#/components/schemas/ProblemDetails'
-    Conflict:
-      description: The operation cannot be executed currently, due to a conflict with the state of the resource.
-      content:
-        application/json:
-          schema:
-            $ref: '#/components/schemas/ProblemDetails'
-    UnprocessableEntity:
-      description: The request was well-formed but was unable to be followed due to semantic errors.
-      content:
-        application/json:
-          schema:
-            $ref: '#/components/schemas/ProblemDetails'
-    InternalServerError:
-      description: Internal server error.
-      content:
-        application/json:
-          schema:
-            $ref: '#/components/schemas/ProblemDetails'
-    ServiceUnavailable:
-      description: Service temporarily unavailable.
-      content:
-        application/json:
-          schema:
-            $ref: '#/components/schemas/ProblemDetails'
-    UnexpectedError:
-      description: Unexpected error.
-      content:
-        application/json:
-          schema:
-            $ref: '#/components/schemas/ProblemDetails'
-  schemas:
-    NsDescriptor:
-      type: string
-    NsPackage:
-      type: string
-      format: binary
-    KeyValuePairs:
-      type: object
-      additionalProperties:
-        type: string
-    CreateNsdInfoRequest:
-      type: object
-      properties:
-        userDefinedData:
-          $ref: '#/components/schemas/KeyValuePairs'
-    NsdOnboardingStateType:
-      type: string
-      enum: [CREATED, UPLAODING, PROCESSING, ONBOARDED]
-      description: |
-        NSD onboarding state:
-         * `CREATED` - The NSD information object is created.
-         * `UPLOADING` - The associated NSD content is being uploaded.
-         * `PROCESSING` - The associated NSD content is being processed, e.g. validation.
-         * `ONBOARDED` - The associated NSD content is on-boarded. 
-    NsdOperationalStateType:
-      type: string
-      enum: [ENABLED, DISABLED]
-      description: |
-        NSD operational state:
-         * `ENABLED` - The NSD is enabled.
-         * `DISABLED` - The NSD is disabled.
-    NsdUsageStateType:
-      type: string
-      enum: [IN_USE, NOT_IN_USE]
-      description: |
-        NSD usage state:
-         * `IN_USE` - The NSD is in use.
-         * `NOT_IN_USE` - The NSD is not in use.
-    NsdInfoModifications:
-      type: object
-      properties:
-        nsdOperationalState:
-          $ref: '#/components/schemas/NsdOperationalStateType'
-        userDefinedData:
-          $ref: '#/components/schemas/KeyValuePairs'
-    NsdInfo:
-      type: object
-      properties:
-        id:
-          description: |
-            Identifier of the onboarded individual NS descriptor
-            resource. This identifier is allocated by the NFVO.
-          type: string
-          format: uuid
-        nsdId:
-          description: |
-            This identifier, which is allocated by the NSD
-            designer, identifies the NSD in a globally unique
-            way. It is copied from the NSD content and shall be
-            present after the NSD content is on-boarded.
-          type: string
-          format: uuid
-        nsdName:
-          description: |
-            Name of the onboarded NSD. This information is
-            copied from the NSD content and shall be present
-            after the NSD content is on-boarded. 
-          type: string
-        nsdVersion:
-          description: |
-            Version of the on-boarded NSD. This information is
-            copied from the NSD content and shall be present
-            after the NSD content is on-boarded.
-          type: string
-        nsdDesigner:
-          description: |
-            Designer of the on-boarded NSD. This information is
-            copied from the NSD content and shall be present
-            after the NSD content is on-boarded.
-          type: string
-        nsdInvariantId:
-          description: |
-            This identifier, which is allocated by the NSD designer,
-            identifies an NSD in a version independent manner. This
-            information is copied from the NSD content and shall be
-            present after the NSD content is on-boarded. 
+    put:
+      tags:
+        - "VNF packages"
+      summary: Modify an individual VNF package resource
+      description: Modify an individual VNF package resource
+      operationId: updateVnfPkgsIdContent
+      requestBody:
+        $ref: '#/components/requestBodies/VnfPkgInfoModifications'
+      responses:
+        '204':
+          description: No Content
+        '400':
+          $ref: '#/components/responses/BadRequest'
+        '401':
+          $ref: '#/components/responses/Unauthorized'
+        '403':
+          $ref: '#/components/responses/Forbidden'
+        '404':
+          $ref: '#/components/responses/NotFound'
+        '405':
+          $ref: '#/components/responses/MethodNotAllowed'
+        '406':
+          $ref: '#/components/responses/NotAcceptable'
+        '409':
+          $ref: '#/components/responses/Conflict'
+        '422':
+          $ref: '#/components/responses/UnprocessableEntity'
+        '500':
+          $ref: '#/components/responses/InternalServerError'
+        '503':
+          $ref: '#/components/responses/ServiceUnavailable'
+        '5XX':
+          $ref: '#/components/responses/UnexpectedError'
+        default:
+          $ref: '#/components/responses/UnexpectedError'
+    delete:
+      tags:
+        - "VNF packages"
+      summary: Delete an individual VNF package resource
+      description: Delete an individual VNF package resource
+      operationId: deleteVnfPkgsIdContent
+      responses:
+        '204':
+          description: No Content
+        '400':
+          $ref: '#/components/responses/BadRequest'
+        '401':
+          $ref: '#/components/responses/Unauthorized'
+        '403':
+          $ref: '#/components/responses/Forbidden'
+        '404':
+          $ref: '#/components/responses/NotFound'
+        '405':
+          $ref: '#/components/responses/MethodNotAllowed'
+        '406':
+          $ref: '#/components/responses/NotAcceptable'
+        '409':
+          $ref: '#/components/responses/Conflict'
+        '422':
+          $ref: '#/components/responses/UnprocessableEntity'
+        '500':
+          $ref: '#/components/responses/InternalServerError'
+        '503':
+          $ref: '#/components/responses/ServiceUnavailable'
+        '5XX':
+          $ref: '#/components/responses/UnexpectedError'
+        default:
+          $ref: '#/components/responses/UnexpectedError'
+# END VNF Packages
+
+# BEGIN NS Instances
+  '/nslcm/v1/ns_instances':
+    get:
+      tags:
+        - "NS instances"
+      summary: Query information about multiple NS instances
+      description: Query information about multiple NS isntances
+      operationId: getNSinstances
+      responses:
+        '200':
+          description: OK
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/ArrayOfNsInstance'
+            application/yaml:
+              schema:
+                $ref: '#/components/schemas/ArrayOfNsInstance'
+        '400':
+          $ref: '#/components/responses/BadRequest'
+        '401':
+          $ref: '#/components/responses/Unauthorized'
+        '403':
+          $ref: '#/components/responses/Forbidden'
+        '404':
+          $ref: '#/components/responses/NotFound'
+        '405':
+          $ref: '#/components/responses/MethodNotAllowed'
+        '406':
+          $ref: '#/components/responses/NotAcceptable'
+        '409':
+          $ref: '#/components/responses/Conflict'
+        '422':
+          $ref: '#/components/responses/UnprocessableEntity'
+        '500':
+          $ref: '#/components/responses/InternalServerError'
+        '503':
+          $ref: '#/components/responses/ServiceUnavailable'
+        '5XX':
+          $ref: '#/components/responses/UnexpectedError'
+        default:
+          $ref: '#/components/responses/UnexpectedError'
+    post:
+      tags:
+        - "NS instances"
+      summary: Create a new NS instance resource
+      description: Create a new NS instance resource
+      operationId: addNSinstance
+      requestBody:
+        $ref: '#/components/requestBodies/InstantiateNsRequest'
+      responses:
+        '201':
+          description: Created
+          headers:
+            Location:
+              schema:
+                type: string
+                format: uri
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/ObjectId'
+            application/yaml:
+              schema:
+                $ref: '#/components/schemas/ObjectId'
+        '400':
+          $ref: '#/components/responses/BadRequest'
+        '401':
+          $ref: '#/components/responses/Unauthorized'
+        '403':
+          $ref: '#/components/responses/Forbidden'
+        '404':
+          $ref: '#/components/responses/NotFound'
+        '405':
+          $ref: '#/components/responses/MethodNotAllowed'
+        '406':
+          $ref: '#/components/responses/NotAcceptable'
+        '409':
+          $ref: '#/components/responses/Conflict'
+        '422':
+          $ref: '#/components/responses/UnprocessableEntity'
+        '500':
+          $ref: '#/components/responses/InternalServerError'
+        '503':
+          $ref: '#/components/responses/ServiceUnavailable'
+        '5XX':
+          $ref: '#/components/responses/UnexpectedError'
+        default:
+          $ref: '#/components/responses/UnexpectedError'
+  '/nslcm/v1/ns_instances/{nsInstanceId}':
+    parameters:
+      - name: nsInstanceId
+        in: path
+        required: true
+        description: NS Instance ID
+        schema:
+          type: string
+      - name: vcaStatusRefresh
+        in: query
+        required: false
+        description: Set to true if vca status needs to be refreshed.
+        schema:
+          type: boolean
+    get:
+      tags:
+        - "NS instances"
+      summary: Read an individual NS instance resource
+      description: Read an individual NS instance resource
+      operationId: getNSinstance
+      responses:
+        '200':
+          description: OK
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/NsInstance'
+            application/yaml:
+              schema:
+                $ref: '#/components/schemas/NsInstance'
+        '400':
+          $ref: '#/components/responses/BadRequest'
+        '401':
+          $ref: '#/components/responses/Unauthorized'
+        '403':
+          $ref: '#/components/responses/Forbidden'
+        '404':
+          $ref: '#/components/responses/NotFound'
+        '405':
+          $ref: '#/components/responses/MethodNotAllowed'
+        '406':
+          $ref: '#/components/responses/NotAcceptable'
+        '409':
+          $ref: '#/components/responses/Conflict'
+        '422':
+          $ref: '#/components/responses/UnprocessableEntity'
+        '500':
+          $ref: '#/components/responses/InternalServerError'
+        '503':
+          $ref: '#/components/responses/ServiceUnavailable'
+        '5XX':
+          $ref: '#/components/responses/UnexpectedError'
+        default:
+          $ref: '#/components/responses/UnexpectedError'
+    delete:
+      tags:
+        - "NS instances"
+      summary: Delete an individual NS instance resource
+      description: Delete an individual NS instance resource
+      operationId: deleteNSinstance
+      responses:
+        '204':
+          description: No Content
+        '400':
+          $ref: '#/components/responses/BadRequest'
+        '401':
+          $ref: '#/components/responses/Unauthorized'
+        '403':
+          $ref: '#/components/responses/Forbidden'
+        '404':
+          $ref: '#/components/responses/NotFound'
+        '405':
+          $ref: '#/components/responses/MethodNotAllowed'
+        '406':
+          $ref: '#/components/responses/NotAcceptable'
+        '409':
+          $ref: '#/components/responses/Conflict'
+        '422':
+          $ref: '#/components/responses/UnprocessableEntity'
+        '500':
+          $ref: '#/components/responses/InternalServerError'
+        '503':
+          $ref: '#/components/responses/ServiceUnavailable'
+        '5XX':
+          $ref: '#/components/responses/UnexpectedError'
+        default:
+          $ref: '#/components/responses/UnexpectedError'
+  '/nslcm/v1/ns_instances/{nsInstanceId}/instantiate':
+    parameters:
+      - name: nsInstanceId
+        in: path
+        required: true
+        description: NS Instance ID
+        schema:
+          type: string
+    post:
+      tags:
+        - "NS instances"
+      summary: Instantiate a NS
+      description: |
+        Instantiate a NS. The precondition is that the NS instance must have
+        been created and must be in NOT_INSTANTIATED state. As a result of the
+        success of this operation, the NFVO creates a "NS Lifecycle Operation
+        Occurrence" resource for the request, and the NS instance state becomes
+        INSTANTIATED.
+      operationId: instantiateNSinstance
+      requestBody:
+        $ref: '#/components/requestBodies/InstantiateNsRequest'
+      responses:
+        '202':
+          description: Accepted
+          headers:
+            Location:
+              description: |
+                It must point to the new "NS Lifecycle Operation Occurrence"
+                resource, i.e. an URI like ".../ns_lcm_op_occs/{nsLcmOpOccId}"
+              schema:
+                type: string
+                format: uri
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/ObjectId'
+            application/yaml:
+              schema:
+                $ref: '#/components/schemas/ObjectId'
+        '400':
+          $ref: '#/components/responses/BadRequest'
+        '401':
+          $ref: '#/components/responses/Unauthorized'
+        '403':
+          $ref: '#/components/responses/Forbidden'
+        '404':
+          $ref: '#/components/responses/NotFound'
+        '405':
+          $ref: '#/components/responses/MethodNotAllowed'
+        '406':
+          $ref: '#/components/responses/NotAcceptable'
+        '409':
+          $ref: '#/components/responses/Conflict'
+        '422':
+          $ref: '#/components/responses/UnprocessableEntity'
+        '500':
+          $ref: '#/components/responses/InternalServerError'
+        '503':
+          $ref: '#/components/responses/ServiceUnavailable'
+        '5XX':
+          $ref: '#/components/responses/UnexpectedError'
+        default:
+          $ref: '#/components/responses/UnexpectedError'
+  '/nslcm/v1/ns_instances/{nsInstanceId}/scale':
+    parameters:
+      - name: nsInstanceId
+        in: path
+        required: true
+        description: NS Instance ID
+        schema:
+          type: string
+    post:
+      tags:
+        - "NS instances"
+      summary: Scale a NS instance
+      description: |
+        Scale a NS instance. The precondition is that the NS instance must have
+        been created and must be in INSTANTIATED state. As a result of the
+        success of this operation, the NFVO creates a "NS Lifecycle Operation
+        Occurrence" resource for the request, and the NS instance state remains
+        INSTANTIATED.
+      operationId: scaleNSinstance
+      requestBody:
+        $ref: '#/components/requestBodies/ScaleNsRequest'
+      responses:
+        '202':
+          description: Accepted
+          headers:
+            Location:
+              description: |
+                It must point to the new "NS Lifecycle Operation Occurrence"
+                resource, i.e. an URI like ".../ns_lcm_op_occs/{nsLcmOpOccId}"
+              schema:
+                type: string
+                format: uri
+        '400':
+          $ref: '#/components/responses/BadRequest'
+        '401':
+          $ref: '#/components/responses/Unauthorized'
+        '403':
+          $ref: '#/components/responses/Forbidden'
+        '404':
+          $ref: '#/components/responses/NotFound'
+        '405':
+          $ref: '#/components/responses/MethodNotAllowed'
+        '406':
+          $ref: '#/components/responses/NotAcceptable'
+        '409':
+          $ref: '#/components/responses/Conflict'
+        '422':
+          $ref: '#/components/responses/UnprocessableEntity'
+        '500':
+          $ref: '#/components/responses/InternalServerError'
+        '503':
+          $ref: '#/components/responses/ServiceUnavailable'
+        '5XX':
+          $ref: '#/components/responses/UnexpectedError'
+        default:
+          $ref: '#/components/responses/UnexpectedError'
+  '/nslcm/v1/ns_instances/{nsInstanceId}/heal':
+    parameters:
+      - name: nsInstanceId
+        in: path
+        required: true
+        description: NS Instance ID
+        schema:
+          type: string
+    post:
+      tags:
+        - "NS instances"
+      summary: Heal a NS instance
+      description: |
+        Heal a NS instance. The precondition is that the NS instance must have
+        been created and must be in INSTANTIATED state. As a result of the
+        success of this operation, the NFVO creates a "NS Lifecycle Operation
+        Occurrence" resource for the request, and the NS instance state remains
+        INSTANTIATED.
+      operationId: healNSinstance
+      requestBody:
+        $ref: '#/components/requestBodies/HealNsRequest'
+      responses:
+        '202':
+          description: Accepted
+          headers:
+            Location:
+              description: |
+                It must point to the new "NS Lifecycle Operation Occurrence"
+                resource, i.e. an URI like ".../ns_lcm_op_occs/{nsLcmOpOccId}"
+              schema:
+                type: string
+                format: uri
+        '400':
+          $ref: '#/components/responses/BadRequest'
+        '401':
+          $ref: '#/components/responses/Unauthorized'
+        '403':
+          $ref: '#/components/responses/Forbidden'
+        '404':
+          $ref: '#/components/responses/NotFound'
+        '405':
+          $ref: '#/components/responses/MethodNotAllowed'
+        '406':
+          $ref: '#/components/responses/NotAcceptable'
+        '409':
+          $ref: '#/components/responses/Conflict'
+        '422':
+          $ref: '#/components/responses/UnprocessableEntity'
+        '500':
+          $ref: '#/components/responses/InternalServerError'
+        '503':
+          $ref: '#/components/responses/ServiceUnavailable'
+        '5XX':
+          $ref: '#/components/responses/UnexpectedError'
+        default:
+          $ref: '#/components/responses/UnexpectedError'
+  '/nslcm/v1/ns_instances/{nsInstanceId}/migrate':
+    parameters:
+      - name: nsInstanceId
+        in: path
+        required: true
+        description: NS Instance ID
+        schema:
+          type: string
+    post:
+      tags:
+        - "NS instances"
+      summary: Migrate VNFs in a NS instance
+      description: |
+        Migrate the VNFs and VDUs in a NS instance. The precondition is
+        that the NS instance must have been created and must be in
+        INSTANTIATED state. As a result of the success of this operation,
+        the NFVO creates a "NS Lifecycle Operation Occurrence" resource
+        for the request, and the NS instance state remains INSTANTIATED.
+      operationId: migrateNSinstance
+      requestBody:
+        $ref: '#/components/requestBodies/NSinstanceMigrateRequest'
+      responses:
+        '202':
+          description: Accepted
+          headers:
+            Location:
+              description: |
+                It must point to the new "NS Lifecycle Operation Occurrence"
+                resource, i.e. an URI like ".../ns_lcm_op_occs/{nsLcmOpOccId}"
+              schema:
+                type: string
+                format: uri
+        '400':
+          $ref: '#/components/responses/BadRequest'
+        '401':
+          $ref: '#/components/responses/Unauthorized'
+        '403':
+          $ref: '#/components/responses/Forbidden'
+        '404':
+          $ref: '#/components/responses/NotFound'
+        '405':
+          $ref: '#/components/responses/MethodNotAllowed'
+        '406':
+          $ref: '#/components/responses/NotAcceptable'
+        '409':
+          $ref: '#/components/responses/Conflict'
+        '422':
+          $ref: '#/components/responses/UnprocessableEntity'
+        '500':
+          $ref: '#/components/responses/InternalServerError'
+        '503':
+          $ref: '#/components/responses/ServiceUnavailable'
+        '5XX':
+          $ref: '#/components/responses/UnexpectedError'
+        default:
+          $ref: '#/components/responses/UnexpectedError'
+  '/nslcm/v1/ns_instances/{nsInstanceId}/terminate':
+    parameters:
+      - name: nsInstanceId
+        in: path
+        required: true
+        description: NS Instance ID
+        schema:
+          type: string
+    post:
+      tags:
+        - "NS instances"
+      summary: Terminate a NS instance
+      description: |
+        Terminate a NS instance. The precondition is that the NS instance must have
+        been created and must be in INSTANTIATED state. As a result of the
+        success of this operation, the NFVO creates a "NS Lifecycle Operation
+        Occurrence" resource for the request, and the NS instance state becomes
+        NOT_INSTANTIATED.
+      operationId: terminateNSinstance
+      requestBody:
+        # Request data is not required
+        $ref: '#/components/requestBodies/TerminateNsRequest'
+      responses:
+        '202':
+          description: Accepted
+          headers:
+            Location:
+              description: |
+                It must point to the new "NS Lifecycle Operation Occurrence"
+                resource, i.e. an URI like ".../ns_lcm_op_occs/{nsLcmOpOccId}"
+              schema:
+                type: string
+                format: uri
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/ObjectId'
+            application/yaml:
+              schema:
+                $ref: '#/components/schemas/ObjectId'
+        '400':
+          $ref: '#/components/responses/BadRequest'
+        '401':
+          $ref: '#/components/responses/Unauthorized'
+        '403':
+          $ref: '#/components/responses/Forbidden'
+        '404':
+          $ref: '#/components/responses/NotFound'
+        '405':
+          $ref: '#/components/responses/MethodNotAllowed'
+        '406':
+          $ref: '#/components/responses/NotAcceptable'
+        '409':
+          $ref: '#/components/responses/Conflict'
+        '422':
+          $ref: '#/components/responses/UnprocessableEntity'
+        '500':
+          $ref: '#/components/responses/InternalServerError'
+        '503':
+          $ref: '#/components/responses/ServiceUnavailable'
+        '5XX':
+          $ref: '#/components/responses/UnexpectedError'
+        default:
+          $ref: '#/components/responses/UnexpectedError'
+  '/nslcm/v1/ns_instances/{nsInstanceId}/action':
+    parameters:
+      - name: nsInstanceId
+        in: path
+        required: true
+        description: NS Instance ID
+        schema:
+          type: string
+    post:
+      tags:
+        - "NS instances"
+      summary: Execute an action on a NS instance
+      description: |
+        Execute an action on a NS instance.
+        The NS instance must have been created and must be in INSTANTIATED state.
+      operationId: actionOnNSinstance
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/NSinstanceActionRequest'
+          application/yaml:
+            schema:
+              $ref: '#/components/schemas/NSinstanceActionRequest'
+      responses:
+        '202':
+          description: Accepted
+          headers:
+            Location:
+              description: |
+                It must point to the new "NS Lifecycle Operation Occurrence"
+                resource, i.e. an URI like ".../ns_lcm_op_occs/{nsLcmOpOccId}"
+              schema:
+                type: string
+                format: uri
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/ObjectId'
+            application/yaml:
+              schema:
+                $ref: '#/components/schemas/ObjectId'
+        '400':
+          $ref: '#/components/responses/BadRequest'
+        '401':
+          $ref: '#/components/responses/Unauthorized'
+        '403':
+          $ref: '#/components/responses/Forbidden'
+        '404':
+          $ref: '#/components/responses/NotFound'
+        '405':
+          $ref: '#/components/responses/MethodNotAllowed'
+        '406':
+          $ref: '#/components/responses/NotAcceptable'
+        '409':
+          $ref: '#/components/responses/Conflict'
+        '422':
+          $ref: '#/components/responses/UnprocessableEntity'
+        '500':
+          $ref: '#/components/responses/InternalServerError'
+        '503':
+          $ref: '#/components/responses/ServiceUnavailable'
+        '5XX':
+          $ref: '#/components/responses/UnexpectedError'
+        default:
+          $ref: '#/components/responses/UnexpectedError'
+  '/nslcm/v1/ns_instances/{nsInstanceId}/update':
+    parameters:
+      - name: nsInstanceId
+        in: path
+        required: true
+        description: NS Instance ID
+        schema:
+          type: string
+    post:
+      tags:
+        - "NS instances"
+      summary: Update a NS instance
+      description: |
+        Update a NS instance. The precondition is that the NS instance must have
+        been created and must be in INSTANTIATED state. As a result of the
+        success of this operation, the NFVO creates a "NS Lifecycle Operation
+        Occurrence" resource for the request, and the NS instance state remains
+        INSTANTIATED.
+      operationId: updateNSinstance
+      requestBody:
+        $ref: '#/components/requestBodies/UpdateNsRequest'
+      responses:
+        '202':
+          description: Accepted
+          headers:
+            Location:
+              description: |
+                It must point to the new "NS Lifecycle Operation Occurrence"
+                resource, i.e. an URI like ".../ns_lcm_op_occs/{nsLcmOpOccId}"
+              schema:
+                type: string
+                format: uri
+        '400':
+          $ref: '#/components/responses/BadRequest'
+        '401':
+          $ref: '#/components/responses/Unauthorized'
+        '403':
+          $ref: '#/components/responses/Forbidden'
+        '404':
+          $ref: '#/components/responses/NotFound'
+        '405':
+          $ref: '#/components/responses/MethodNotAllowed'
+        '406':
+          $ref: '#/components/responses/NotAcceptable'
+        '409':
+          $ref: '#/components/responses/Conflict'
+        '422':
+          $ref: '#/components/responses/UnprocessableEntity'
+        '500':
+          $ref: '#/components/responses/InternalServerError'
+        '503':
+          $ref: '#/components/responses/ServiceUnavailable'
+        '5XX':
+          $ref: '#/components/responses/UnexpectedError'
+        default:
+          $ref: '#/components/responses/UnexpectedError'
+  '/nslcm/v1/ns_instances/{nsInstanceId}/verticalscale':
+    parameters:
+      - name: nsInstanceId
+        in: path
+        required: true
+        description: NS Instance ID
+        schema:
+          type: string
+    post:
+      tags:
+        - "NS instances"
+      summary: Vertical scale a NS instance
+      description:
+        Execute an verticalscale on a NS instance.
+        The NS instance must have been created and must be in INSTANTIATED state.
+      operationId: verticalscaleNSinstance
+      requestBody:
+        $ref: '#/components/requestBodies/VerticalscaleNsRequest'
+      responses:
+        '202':
+          description: Accepted
+          headers:
+            Location:
+              description: |
+                It must point to the new "NS Lifecycle Operation Occurrence"
+                resource, i.e. an URI like ".../ns_lcm_op_occs/{nsLcmOpOccId}"
+              schema:
+                type: string
+                format: uri
+        '400':
+          $ref: '#/components/responses/BadRequest'
+        '401':
+          $ref: '#/components/responses/Unauthorized'
+        '403':
+          $ref: '#/components/responses/Forbidden'
+        '404':
+          $ref: '#/components/responses/NotFound'
+        '405':
+          $ref: '#/components/responses/MethodNotAllowed'
+        '406':
+          $ref: '#/components/responses/NotAcceptable'
+        '409':
+          $ref: '#/components/responses/Conflict'
+        '422':
+          $ref: '#/components/responses/UnprocessableEntity'
+        '500':
+          $ref: '#/components/responses/InternalServerError'
+        '503':
+          $ref: '#/components/responses/ServiceUnavailable'
+        '5XX':
+          $ref: '#/components/responses/UnexpectedError'
+        default:
+          $ref: '#/components/responses/UnexpectedError'
+  '/nslcm/v1/ns_instances_content':
+    get:
+      tags:
+        - "NS instances"
+      summary: Query information about multiple NS instances
+      description: Query information about multiple NS isntances
+      operationId: getNSinstancesContent
+      responses:
+        '200':
+          description: OK
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/ArrayOfNsInstance'
+            application/yaml:
+              schema:
+                $ref: '#/components/schemas/ArrayOfNsInstance'
+        '400':
+          $ref: '#/components/responses/BadRequest'
+        '401':
+          $ref: '#/components/responses/Unauthorized'
+        '403':
+          $ref: '#/components/responses/Forbidden'
+        '404':
+          $ref: '#/components/responses/NotFound'
+        '405':
+          $ref: '#/components/responses/MethodNotAllowed'
+        '406':
+          $ref: '#/components/responses/NotAcceptable'
+        '409':
+          $ref: '#/components/responses/Conflict'
+        '422':
+          $ref: '#/components/responses/UnprocessableEntity'
+        '500':
+          $ref: '#/components/responses/InternalServerError'
+        '503':
+          $ref: '#/components/responses/ServiceUnavailable'
+        '5XX':
+          $ref: '#/components/responses/UnexpectedError'
+        default:
+          $ref: '#/components/responses/UnexpectedError'
+    post:
+      tags:
+        - "NS instances"
+      summary: Create a new NS instance
+      description: Create a new NS instance
+      operationId: createNSinstanceContent
+      requestBody:
+        $ref: '#/components/requestBodies/InstantiateNsRequest'
+      responses:
+        '201':
+          description: Created
+          headers:
+            Location:
+              schema:
+                type: string
+                format: uri
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/CreateNSinstanceContentResponse'
+            application/yaml:
+              schema:
+                $ref: '#/components/schemas/CreateNSinstanceContentResponse'
+        '400':
+          $ref: '#/components/responses/BadRequest'
+        '401':
+          $ref: '#/components/responses/Unauthorized'
+        '403':
+          $ref: '#/components/responses/Forbidden'
+        '404':
+          $ref: '#/components/responses/NotFound'
+        '405':
+          $ref: '#/components/responses/MethodNotAllowed'
+        '406':
+          $ref: '#/components/responses/NotAcceptable'
+        '409':
+          $ref: '#/components/responses/Conflict'
+        '422':
+          $ref: '#/components/responses/UnprocessableEntity'
+        '500':
+          $ref: '#/components/responses/InternalServerError'
+        '503':
+          $ref: '#/components/responses/ServiceUnavailable'
+        '5XX':
+          $ref: '#/components/responses/UnexpectedError'
+        default:
+          $ref: '#/components/responses/UnexpectedError'
+  '/nslcm/v1/ns_instances_content/{nsInstanceContentId}':
+    parameters:
+      - name: nsInstanceContentId
+        in: path
+        required: true
+        description: NS Instance Content ID
+        schema:
+          type: string
+    get:
+      tags:
+        - "NS instances"
+      summary: Read an individual NS instance resource
+      description: Read an individual NS instance resource
+      operationId: getNSinstanceContent
+      responses:
+        '200':
+          description: OK
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/NsInstance'
+            application/yaml:
+              schema:
+                $ref: '#/components/schemas/NsInstance'
+        '400':
+          $ref: '#/components/responses/BadRequest'
+        '401':
+          $ref: '#/components/responses/Unauthorized'
+        '403':
+          $ref: '#/components/responses/Forbidden'
+        '404':
+          $ref: '#/components/responses/NotFound'
+        '405':
+          $ref: '#/components/responses/MethodNotAllowed'
+        '406':
+          $ref: '#/components/responses/NotAcceptable'
+        '409':
+          $ref: '#/components/responses/Conflict'
+        '422':
+          $ref: '#/components/responses/UnprocessableEntity'
+        '500':
+          $ref: '#/components/responses/InternalServerError'
+        '503':
+          $ref: '#/components/responses/ServiceUnavailable'
+        '5XX':
+          $ref: '#/components/responses/UnexpectedError'
+        default:
+          $ref: '#/components/responses/UnexpectedError'
+    delete:
+      tags:
+        - "NS instances"
+      summary: Delete an individual NS instance resource
+      description: Delete an individual NS instance resource
+      operationId: deleteNSinstanceContent
+      responses:
+        '202':
+          description: Accepted
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/ObjectId'
+            application/yaml:
+              schema:
+                $ref: '#/components/schemas/ObjectId'
+        '204':
+          description: No Content
+        '400':
+          $ref: '#/components/responses/BadRequest'
+        '401':
+          $ref: '#/components/responses/Unauthorized'
+        '403':
+          $ref: '#/components/responses/Forbidden'
+        '404':
+          $ref: '#/components/responses/NotFound'
+        '405':
+          $ref: '#/components/responses/MethodNotAllowed'
+        '406':
+          $ref: '#/components/responses/NotAcceptable'
+        '409':
+          $ref: '#/components/responses/Conflict'
+        '422':
+          $ref: '#/components/responses/UnprocessableEntity'
+        '500':
+          $ref: '#/components/responses/InternalServerError'
+        '503':
+          $ref: '#/components/responses/ServiceUnavailable'
+        '5XX':
+          $ref: '#/components/responses/UnexpectedError'
+        default:
+          $ref: '#/components/responses/UnexpectedError'
+  '/nslcm/v1/ns_lcm_op_occs':
+    get:
+      tags:
+        - "NS instances"
+      summary: Query information about multiple NS LCM Operation Occurrences
+      description: Query information about multiple NS LCM Operation Occurrences
+      operationId: getNSLCMOpOccs
+      responses:
+        '200':
+          description: OK
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/ArrayOfNsLcmOpOcc'
+            application/yaml:
+              schema:
+                $ref: '#/components/schemas/ArrayOfNsLcmOpOcc'
+        '400':
+          $ref: '#/components/responses/BadRequest'
+        '401':
+          $ref: '#/components/responses/Unauthorized'
+        '403':
+          $ref: '#/components/responses/Forbidden'
+        '404':
+          $ref: '#/components/responses/NotFound'
+        '405':
+          $ref: '#/components/responses/MethodNotAllowed'
+        '406':
+          $ref: '#/components/responses/NotAcceptable'
+        '409':
+          $ref: '#/components/responses/Conflict'
+        '422':
+          $ref: '#/components/responses/UnprocessableEntity'
+        '500':
+          $ref: '#/components/responses/InternalServerError'
+        '503':
+          $ref: '#/components/responses/ServiceUnavailable'
+        '5XX':
+          $ref: '#/components/responses/UnexpectedError'
+        default:
+          $ref: '#/components/responses/UnexpectedError'
+  '/nslcm/v1/ns_lcm_op_occs/{nsLcmOpOccId}':
+    parameters:
+      - name: nsLcmOpOccId
+        in: path
+        required: true
+        description: NS LCM Operation Occurrence ID
+        schema:
+          type: string
+    get:
+      tags:
+        - "NS instances"
+      summary: Query information about an individual NS LCM Operation Occurrence
+      description: Query information about an individual NS LCM Operation Occurrence
+      operationId: getNSLCMOpOcc
+      responses:
+        '200':
+          description: OK
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/NsLcmOpOcc'
+            application/yaml:
+              schema:
+                $ref: '#/components/schemas/NsLcmOpOcc'
+        '400':
+          $ref: '#/components/responses/BadRequest'
+        '401':
+          $ref: '#/components/responses/Unauthorized'
+        '403':
+          $ref: '#/components/responses/Forbidden'
+        '404':
+          $ref: '#/components/responses/NotFound'
+        '405':
+          $ref: '#/components/responses/MethodNotAllowed'
+        '406':
+          $ref: '#/components/responses/NotAcceptable'
+        '409':
+          $ref: '#/components/responses/Conflict'
+        '422':
+          $ref: '#/components/responses/UnprocessableEntity'
+        '500':
+          $ref: '#/components/responses/InternalServerError'
+        '503':
+          $ref: '#/components/responses/ServiceUnavailable'
+        '5XX':
+          $ref: '#/components/responses/UnexpectedError'
+        default:
+          $ref: '#/components/responses/UnexpectedError'
+  '/nslcm/v1/ns_lcm_op_occs/{nsLcmOpOccId}/cancel':
+    parameters:
+      - name: nsLcmOpOccId
+        in: path
+        required: true
+        description: NS LCM Operation Occurrence ID
+        schema:
+          type: string
+    post:
+      tags:
+        - "NS instances"
+      summary: Cancel an ongoing NS lifecycle management operation
+      description: Cancel an ongoing NS lifecycle management operation while it is being executed or rolled back
+      operationId: cancelNSLCMOpOcc
+      requestBody:
+        $ref: '#/components/requestBodies/CancelNSLCMOpOccRequest'
+      responses:
+        '202':
+          description: Accepted
+        '400':
+          $ref: '#/components/responses/BadRequest'
+        '401':
+          $ref: '#/components/responses/Unauthorized'
+        '403':
+          $ref: '#/components/responses/Forbidden'
+        '404':
+          $ref: '#/components/responses/NotFound'
+        '405':
+          $ref: '#/components/responses/MethodNotAllowed'
+        '406':
+          $ref: '#/components/responses/NotAcceptable'
+        '409':
+          $ref: '#/components/responses/Conflict'
+        '422':
+          $ref: '#/components/responses/UnprocessableEntity'
+        '500':
+          $ref: '#/components/responses/InternalServerError'
+        '503':
+          $ref: '#/components/responses/ServiceUnavailable'
+        '5XX':
+          $ref: '#/components/responses/UnexpectedError'
+        default:
+          $ref: '#/components/responses/UnexpectedError'
+  '/nslcm/v1/vnf_instances':
+    get:
+      tags:
+        - "NS instances"
+      summary: Query information about multiple VNF Instances
+      description: Query information about multiple VNF Instances
+      operationId: getVnfInstances
+      responses:
+        '200':
+          description: OK
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/ArrayOfVnfInstanceInfo'
+            application/yaml:
+              schema:
+                $ref: '#/components/schemas/ArrayOfVnfInstanceInfo'
+        '400':
+          $ref: '#/components/responses/BadRequest'
+        '401':
+          $ref: '#/components/responses/Unauthorized'
+        '403':
+          $ref: '#/components/responses/Forbidden'
+        '404':
+          $ref: '#/components/responses/NotFound'
+        '405':
+          $ref: '#/components/responses/MethodNotAllowed'
+        '406':
+          $ref: '#/components/responses/NotAcceptable'
+        '409':
+          $ref: '#/components/responses/Conflict'
+        '422':
+          $ref: '#/components/responses/UnprocessableEntity'
+        '500':
+          $ref: '#/components/responses/InternalServerError'
+        '503':
+          $ref: '#/components/responses/ServiceUnavailable'
+        '5XX':
+          $ref: '#/components/responses/UnexpectedError'
+        default:
+          $ref: '#/components/responses/UnexpectedError'
+  '/nslcm/v1/vnf_instances/{vnfInstanceId}':
+    parameters:
+      - name: vnfInstanceId
+        in: path
+        required: true
+        description: VNF Instance ID
+        schema:
+          type: string
+    get:
+      tags:
+        - "NS instances"
+      summary: Query information about an individual VNF Instance
+      description: Query information about an individual VNF Instance
+      operationId: getVnfInstance
+      responses:
+        '200':
+          description: OK
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/VnfInstanceInfo'
+            application/yaml:
+              schema:
+                $ref: '#/components/schemas/VnfInstanceInfo'
+        '400':
+          $ref: '#/components/responses/BadRequest'
+        '401':
+          $ref: '#/components/responses/Unauthorized'
+        '403':
+          $ref: '#/components/responses/Forbidden'
+        '404':
+          $ref: '#/components/responses/NotFound'
+        '405':
+          $ref: '#/components/responses/MethodNotAllowed'
+        '406':
+          $ref: '#/components/responses/NotAcceptable'
+        '409':
+          $ref: '#/components/responses/Conflict'
+        '422':
+          $ref: '#/components/responses/UnprocessableEntity'
+        '500':
+          $ref: '#/components/responses/InternalServerError'
+        '503':
+          $ref: '#/components/responses/ServiceUnavailable'
+        '5XX':
+          $ref: '#/components/responses/UnexpectedError'
+        default:
+          $ref: '#/components/responses/UnexpectedError'
+  '/nslcm/v1/subscriptions':
+    get:
+      tags:
+        - NS instances
+      summary: Query information about multiple NS instance subscription
+      description: Query information about multiple NS instance subscription
+      operationId: getNsSubcriptions
+      responses:
+        '200':
+          description: OK
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/ArrayOfNslcmSubscriptionInfo'
+            application/yaml:
+              schema:
+                $ref: '#/components/schemas/ArrayOfNslcmSubscriptionInfo'
+        '400':
+          $ref: '#/components/responses/BadRequest'
+        '401':
+          $ref: '#/components/responses/Unauthorized'
+        '403':
+          $ref: '#/components/responses/Forbidden'
+        '404':
+          $ref: '#/components/responses/NotFound'
+        '405':
+          $ref: '#/components/responses/MethodNotAllowed'
+        '406':
+          $ref: '#/components/responses/NotAcceptable'
+        '409':
+          $ref: '#/components/responses/Conflict'
+        '422':
+          $ref: '#/components/responses/UnprocessableEntity'
+        '500':
+          $ref: '#/components/responses/InternalServerError'
+        '503':
+          $ref: '#/components/responses/ServiceUnavailable'
+        5XX:
+          $ref: '#/components/responses/UnexpectedError'
+        default:
+          $ref: '#/components/responses/UnexpectedError'
+    post:
+      tags:
+        - NS instances
+      summary: Create a new subscription for the Network service
+      description: Create a new subscription for the Network service
+      operationId: addNsSubcriptions
+      requestBody:
+        $ref: '#/components/requestBodies/NslcmSubscriptionRequest'
+      responses:
+        '201':
+          description: Created
+          headers:
+            Location:
+              schema:
+                type: object
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/NslcmSubscriptionResponse'
+            application/yaml:
+              schema:
+                $ref: '#/components/schemas/NslcmSubscriptionResponse'
+        '400':
+          $ref: '#/components/responses/BadRequest'
+        '401':
+          $ref: '#/components/responses/Unauthorized'
+        '403':
+          $ref: '#/components/responses/Forbidden'
+        '404':
+          $ref: '#/components/responses/NotFound'
+        '405':
+          $ref: '#/components/responses/MethodNotAllowed'
+        '406':
+          $ref: '#/components/responses/NotAcceptable'
+        '409':
+          $ref: '#/components/responses/Conflict'
+        '422':
+          $ref: '#/components/responses/UnprocessableEntity'
+        '500':
+          $ref: '#/components/responses/InternalServerError'
+        '503':
+          $ref: '#/components/responses/ServiceUnavailable'
+        5XX:
+          $ref: '#/components/responses/UnexpectedError'
+        default:
+          $ref: '#/components/responses/UnexpectedError'
+  '/nslcm/v1/subscriptions/{nsSubscriptionsId}':
+    parameters:
+      - name: nsSubscriptionsId
+        in: path
+        required: true
+        description: Network Service Subscription ID
+        schema:
+          type: string
+    get:
+      tags:
+        - NS instances
+      summary: Read information about an individual Network Service Subscription
+      description: Read information about an individual Network Service Subscription
+      operationId: getNsSubcriptionId
+      responses:
+        '200':
+          description: OK
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/NslcmSubscriptionInfo'
+            application/yaml:
+              schema:
+                $ref: '#/components/schemas/NslcmSubscriptionInfo'
+        '400':
+          $ref: '#/components/responses/BadRequest'
+        '401':
+          $ref: '#/components/responses/Unauthorized'
+        '403':
+          $ref: '#/components/responses/Forbidden'
+        '404':
+          $ref: '#/components/responses/NotFound'
+        '405':
+          $ref: '#/components/responses/MethodNotAllowed'
+        '406':
+          $ref: '#/components/responses/NotAcceptable'
+        '409':
+          $ref: '#/components/responses/Conflict'
+        '422':
+          $ref: '#/components/responses/UnprocessableEntity'
+        '500':
+          $ref: '#/components/responses/InternalServerError'
+        '503':
+          $ref: '#/components/responses/ServiceUnavailable'
+        5XX:
+          $ref: '#/components/responses/UnexpectedError'
+        default:
+          $ref: '#/components/responses/UnexpectedError'
+    delete:
+      tags:
+        - NS instances
+      summary: Delete an individual Network Service Subscription
+      description: Delete an individual Network Service Subscription
+      operationId: deleteNsSubcriptionId
+      responses:
+        '204':
+          description: No Content
+        '400':
+          $ref: '#/components/responses/BadRequest'
+        '401':
+          $ref: '#/components/responses/Unauthorized'
+        '403':
+          $ref: '#/components/responses/Forbidden'
+        '404':
+          $ref: '#/components/responses/NotFound'
+        '405':
+          $ref: '#/components/responses/MethodNotAllowed'
+        '406':
+          $ref: '#/components/responses/NotAcceptable'
+        '409':
+          $ref: '#/components/responses/Conflict'
+        '422':
+          $ref: '#/components/responses/UnprocessableEntity'
+        '500':
+          $ref: '#/components/responses/InternalServerError'
+        '503':
+          $ref: '#/components/responses/ServiceUnavailable'
+        5XX:
+          $ref: '#/components/responses/UnexpectedError'
+        default:
+          $ref: '#/components/responses/UnexpectedError'
+# END NS Instances
+
+# BEGIN Alarms
+  '/nsfm/v1/alarms':
+    get:
+      tags:
+        - "Alarms"
+      summary: Query information about multiple alarms
+      description: Query information about multiple alarms
+      operationId: getAlarms
+      responses:
+        '200':
+          description: OK
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/ArrayOfAlarm'
+            application/yaml:
+              schema:
+                $ref: '#/components/schemas/ArrayOfAlarm'
+        '400':
+          $ref: '#/components/responses/BadRequest'
+        '401':
+          $ref: '#/components/responses/Unauthorized'
+        '403':
+          $ref: '#/components/responses/Forbidden'
+        '404':
+          $ref: '#/components/responses/NotFound'
+        '405':
+          $ref: '#/components/responses/MethodNotAllowed'
+        '406':
+          $ref: '#/components/responses/NotAcceptable'
+        '409':
+          $ref: '#/components/responses/Conflict'
+        '422':
+          $ref: '#/components/responses/UnprocessableEntity'
+        '500':
+          $ref: '#/components/responses/InternalServerError'
+        '503':
+          $ref: '#/components/responses/ServiceUnavailable'
+        '5XX':
+          $ref: '#/components/responses/UnexpectedError'
+        default:
+          $ref: '#/components/responses/UnexpectedError'
+  '/nsfm/v1/alarms/{uuid}':
+    parameters:
+      - name: uuid
+        in: path
+        required: true
+        description: Alarm UUID
+        schema:
+          type: string
+    get:
+      tags:
+        - "Alarms"
+      summary: Read an individual Alarm
+      description: Read an individual Alarm
+      operationId: getAlarm
+      responses:
+        '200':
+          description: OK
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/Alarm'
+            application/yaml:
+              schema:
+                $ref: '#/components/schemas/Alarm'
+        '400':
+          $ref: '#/components/responses/BadRequest'
+        '401':
+          $ref: '#/components/responses/Unauthorized'
+        '403':
+          $ref: '#/components/responses/Forbidden'
+        '404':
+          $ref: '#/components/responses/NotFound'
+        '405':
+          $ref: '#/components/responses/MethodNotAllowed'
+        '406':
+          $ref: '#/components/responses/NotAcceptable'
+        '409':
+          $ref: '#/components/responses/Conflict'
+        '422':
+          $ref: '#/components/responses/UnprocessableEntity'
+        '500':
+          $ref: '#/components/responses/InternalServerError'
+        '503':
+          $ref: '#/components/responses/ServiceUnavailable'
+        '5XX':
+          $ref: '#/components/responses/UnexpectedError'
+        default:
+          $ref: '#/components/responses/UnexpectedError'
+    patch:
+      tags:
+        - "Alarms"
+      summary: Modify the data of an  individual Alarm
+      description: Modify the data of an  individual Alarm
+      operationId: updateAlarm
+      requestBody:
+        $ref: '#/components/requestBodies/AlarmInfoModifications'
+      responses:
+        '204':
+          description: No Content
+        '400':
+          $ref: '#/components/responses/BadRequest'
+        '401':
+          $ref: '#/components/responses/Unauthorized'
+        '403':
+          $ref: '#/components/responses/Forbidden'
+        '404':
+          $ref: '#/components/responses/NotFound'
+        '405':
+          $ref: '#/components/responses/MethodNotAllowed'
+        '406':
+          $ref: '#/components/responses/NotAcceptable'
+        '409':
+          $ref: '#/components/responses/Conflict'
+        '422':
+          $ref: '#/components/responses/UnprocessableEntity'
+        '500':
+          $ref: '#/components/responses/InternalServerError'
+        '503':
+          $ref: '#/components/responses/ServiceUnavailable'
+        '5XX':
+          $ref: '#/components/responses/UnexpectedError'
+        default:
+          $ref: '#/components/responses/UnexpectedError'
+# END Alarms
+
+# BEGIN NetSlice Templates
+  '/nst/v1/netslice_templates':
+    get:
+      tags:
+        - "NetSlice templates"
+      summary: Query information about multiple NetSlice template resources
+      description: Query information about multiple NetSlice template resources
+      operationId: getNSTs
+      responses:
+        '200':
+          description: OK
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/ArrayOfNstInfo'
+            application/yaml:
+              schema:
+                $ref: '#/components/schemas/ArrayOfNstInfo'
+        '400':
+          $ref: '#/components/responses/BadRequest'
+        '401':
+          $ref: '#/components/responses/Unauthorized'
+        '403':
+          $ref: '#/components/responses/Forbidden'
+        '404':
+          $ref: '#/components/responses/NotFound'
+        '405':
+          $ref: '#/components/responses/MethodNotAllowed'
+        '406':
+          $ref: '#/components/responses/NotAcceptable'
+        '409':
+          $ref: '#/components/responses/Conflict'
+        '422':
+          $ref: '#/components/responses/UnprocessableEntity'
+        '500':
+          $ref: '#/components/responses/InternalServerError'
+        '503':
+          $ref: '#/components/responses/ServiceUnavailable'
+        '5XX':
+          $ref: '#/components/responses/UnexpectedError'
+        default:
+          $ref: '#/components/responses/UnexpectedError'
+    post:
+      tags:
+        - "NetSlice templates"
+      summary: Create a new NetSlice template resource
+      description: Create a new NetSlice template resource
+      operationId: addNST
+      requestBody:
+        $ref: '#/components/requestBodies/CreateNstInfoRequest'
+      responses:
+        '201':
+          description: Created
+          headers:
+            Location:
+              schema:
+                type: string
+                format: uri
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/ObjectId'
+            application/yaml:
+              schema:
+                $ref: '#/components/schemas/ObjectId'
+        '400':
+          $ref: '#/components/responses/BadRequest'
+        '401':
+          $ref: '#/components/responses/Unauthorized'
+        '403':
+          $ref: '#/components/responses/Forbidden'
+        '404':
+          $ref: '#/components/responses/NotFound'
+        '405':
+          $ref: '#/components/responses/MethodNotAllowed'
+        '406':
+          $ref: '#/components/responses/NotAcceptable'
+        '409':
+          $ref: '#/components/responses/Conflict'
+        '422':
+          $ref: '#/components/responses/UnprocessableEntity'
+        '500':
+          $ref: '#/components/responses/InternalServerError'
+        '503':
+          $ref: '#/components/responses/ServiceUnavailable'
+        '5XX':
+          $ref: '#/components/responses/UnexpectedError'
+        default:
+          $ref: '#/components/responses/UnexpectedError'
+  '/nst/v1/netslice_templates/{netsliceTemplateId}':
+    parameters:
+      - name: netsliceTemplateId
+        in: path
+        required: true
+        description: NetSlice Template ID
+        schema:
+          type: string
+    get:
+      tags:
+        - "NetSlice templates"
+      summary: Read information about an individual NetSlice template resource
+      description: Read information about an individual NetSlice template resource
+      operationId: getNST
+      responses:
+        '200':
+          description: OK
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/NstInfo'
+            application/yaml:
+              schema:
+                $ref: '#/components/schemas/NstInfo'
+        '400':
+          $ref: '#/components/responses/BadRequest'
+        '401':
+          $ref: '#/components/responses/Unauthorized'
+        '403':
+          $ref: '#/components/responses/Forbidden'
+        '404':
+          $ref: '#/components/responses/NotFound'
+        '405':
+          $ref: '#/components/responses/MethodNotAllowed'
+        '406':
+          $ref: '#/components/responses/NotAcceptable'
+        '409':
+          $ref: '#/components/responses/Conflict'
+        '422':
+          $ref: '#/components/responses/UnprocessableEntity'
+        '500':
+          $ref: '#/components/responses/InternalServerError'
+        '503':
+          $ref: '#/components/responses/ServiceUnavailable'
+        '5XX':
+          $ref: '#/components/responses/UnexpectedError'
+        default:
+          $ref: '#/components/responses/UnexpectedError'
+    delete:
+      tags:
+        - "NetSlice templates"
+      summary: Delete an individual NetSlice template resource
+      description: Delete an individual NetSlice template resource
+      operationId: deleteNST
+      responses:
+        '204':
+          description: No Content
+        '400':
+          $ref: '#/components/responses/BadRequest'
+        '401':
+          $ref: '#/components/responses/Unauthorized'
+        '403':
+          $ref: '#/components/responses/Forbidden'
+        '404':
+          $ref: '#/components/responses/NotFound'
+        '405':
+          $ref: '#/components/responses/MethodNotAllowed'
+        '406':
+          $ref: '#/components/responses/NotAcceptable'
+        '409':
+          $ref: '#/components/responses/Conflict'
+        '422':
+          $ref: '#/components/responses/UnprocessableEntity'
+        '500':
+          $ref: '#/components/responses/InternalServerError'
+        '503':
+          $ref: '#/components/responses/ServiceUnavailable'
+        '5XX':
+          $ref: '#/components/responses/UnexpectedError'
+        default:
+          $ref: '#/components/responses/UnexpectedError'
+  '/nst/v1/netslice_templates/{netsliceTemplateId}/artifacts/{artifactPath}':
+    parameters:
+      - name: netsliceTemplateId
+        in: path
+        required: true
+        description: NetSlice Template ID
+        schema:
+          type: string
+      - name: artifactPath
+        in: path
+        required: true
+        description: Artifact Path
+        schema:
+          type: string
+    get:
+      tags:
+        - "NetSlice templates"
+      summary: Fetch individual NetSlice Template artifact
+      description: Fetch individual NetSlice Template artifact
+      operationId: getNstArtifact
+      responses:
+        '200':
+          description: OK
+          content:
+            application/octet-stream:
+              schema:
+                type: string
+                format: binary
+        '206':
+          description: Partial Content
+          headers:
+            Content-Range:
+              schema:
+                type: string
+          content:
+            application/octet-stream:
+              schema:
+                type: string
+                format: binary
+        '400':
+          $ref: '#/components/responses/BadRequest'
+        '401':
+          $ref: '#/components/responses/Unauthorized'
+        '403':
+          $ref: '#/components/responses/Forbidden'
+        '404':
+          $ref: '#/components/responses/NotFound'
+        '405':
+          $ref: '#/components/responses/MethodNotAllowed'
+        '406':
+          $ref: '#/components/responses/NotAcceptable'
+        '409':
+          $ref: '#/components/responses/Conflict'
+        '422':
+          $ref: '#/components/responses/UnprocessableEntity'
+        '500':
+          $ref: '#/components/responses/InternalServerError'
+        '503':
+          $ref: '#/components/responses/ServiceUnavailable'
+        '5XX':
+          $ref: '#/components/responses/UnexpectedError'
+        default:
+          $ref: '#/components/responses/UnexpectedError'
+  '/nst/v1/netslice_templates/{netsliceTemplateId}/nst':
+    parameters:
+      - name: netsliceTemplateId
+        in: path
+        required: true
+        description: NetSlice Template ID
+        schema:
+          type: string
+    get:
+      tags:
+        - "NetSlice templates"
+      summary: Read NST of an on-boarded NetSlice Template
+      description: Read NST of an on-boarded NetSlice Template
+      operationId: getNstNst
+      responses:
+        '200':
+          description: OK
+          content:
+            text/plain:
+              schema:
+                $ref: '#/components/schemas/NetSliceTemplate'
+        '400':
+          $ref: '#/components/responses/BadRequest'
+        '401':
+          $ref: '#/components/responses/Unauthorized'
+        '403':
+          $ref: '#/components/responses/Forbidden'
+        '404':
+          $ref: '#/components/responses/NotFound'
+        '405':
+          $ref: '#/components/responses/MethodNotAllowed'
+        '406':
+          $ref: '#/components/responses/NotAcceptable'
+        '409':
+          $ref: '#/components/responses/Conflict'
+        '422':
+          $ref: '#/components/responses/UnprocessableEntity'
+        '500':
+          $ref: '#/components/responses/InternalServerError'
+        '503':
+          $ref: '#/components/responses/ServiceUnavailable'
+        '5XX':
+          $ref: '#/components/responses/UnexpectedError'
+        default:
+          $ref: '#/components/responses/UnexpectedError'
+  '/nst/v1/netslice_templates/{netsliceTemplateId}/nst_content':
+    parameters:
+      - name: netsliceTemplateId
+        in: path
+        required: true
+        description: NetSlice Template ID
+        schema:
+          type: string
+    get:
+      tags:
+        - "NetSlice templates"
+      summary: Fetch the content of a NST
+      description: Fetch the content of a NST
+      operationId: getNSTcontent
+      responses:
+        '200':
+          description: OK
+          content:
+            application/zip:
+              schema:
+                $ref: '#/components/schemas/NetSlicePackage'
+        '206':
+          description: Partial Content
+          headers:
+            Content-Range:
+              schema:
+                type: string
+          content:
+            application/zip:
+              schema:
+                $ref: '#/components/schemas/NetSlicePackage'
+        '400':
+          $ref: '#/components/responses/BadRequest'
+        '401':
+          $ref: '#/components/responses/Unauthorized'
+        '403':
+          $ref: '#/components/responses/Forbidden'
+        '404':
+          $ref: '#/components/responses/NotFound'
+        '405':
+          $ref: '#/components/responses/MethodNotAllowed'
+        '406':
+          $ref: '#/components/responses/NotAcceptable'
+        '409':
+          $ref: '#/components/responses/Conflict'
+        '422':
+          $ref: '#/components/responses/UnprocessableEntity'
+        '500':
+          $ref: '#/components/responses/InternalServerError'
+        '503':
+          $ref: '#/components/responses/ServiceUnavailable'
+        '5XX':
+          $ref: '#/components/responses/UnexpectedError'
+        default:
+          $ref: '#/components/responses/UnexpectedError'
+    put:
+      tags:
+        - "NetSlice templates"
+      summary: Upload the content of a NST
+      description: Upload the content of a NST
+      operationId: updateNSTcontent
+      requestBody:
+        $ref: '#/components/requestBodies/NetSlicePackage'
+      responses:
+        '202':
+          description: Accepted
+        '204':
+          description: No Content
+        '400':
+          $ref: '#/components/responses/BadRequest'
+        '401':
+          $ref: '#/components/responses/Unauthorized'
+        '403':
+          $ref: '#/components/responses/Forbidden'
+        '404':
+          $ref: '#/components/responses/NotFound'
+        '405':
+          $ref: '#/components/responses/MethodNotAllowed'
+        '406':
+          $ref: '#/components/responses/NotAcceptable'
+        '409':
+          $ref: '#/components/responses/Conflict'
+        '422':
+          $ref: '#/components/responses/UnprocessableEntity'
+        '500':
+          $ref: '#/components/responses/InternalServerError'
+        '503':
+          $ref: '#/components/responses/ServiceUnavailable'
+        '5XX':
+          $ref: '#/components/responses/UnexpectedError'
+        default:
+          $ref: '#/components/responses/UnexpectedError'
+  '/nst/v1/netslice_templates_content':
+    post:
+      tags:
+        - "NetSlice templates"
+      summary: Upload a NetSlice package by providing the content of the NetSlice package
+      description: Upload a NetSlice package by providing the content of the NetSlice package
+      operationId: uploadNstContent
+      requestBody:
+        content:
+          application/zip:
+            schema:
+              $ref: '#/components/schemas/NetSlicePackage'
+      responses:
+        '201':
+          description: Created
+          headers:
+            Location:
+              schema:
+                type: string
+                format: uri
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/ObjectId'
+            application/yaml:
+              schema:
+                $ref: '#/components/schemas/ObjectId'
+        '202':
+          description: Accepted
+        '204':
+          description: No Content
+        '400':
+          $ref: '#/components/responses/BadRequest'
+        '401':
+          $ref: '#/components/responses/Unauthorized'
+        '403':
+          $ref: '#/components/responses/Forbidden'
+        '404':
+          $ref: '#/components/responses/NotFound'
+        '405':
+          $ref: '#/components/responses/MethodNotAllowed'
+        '406':
+          $ref: '#/components/responses/NotAcceptable'
+        '409':
+          $ref: '#/components/responses/Conflict'
+        '422':
+          $ref: '#/components/responses/UnprocessableEntity'
+        '500':
+          $ref: '#/components/responses/InternalServerError'
+        '503':
+          $ref: '#/components/responses/ServiceUnavailable'
+        '5XX':
+          $ref: '#/components/responses/UnexpectedError'
+        default:
+          $ref: '#/components/responses/UnexpectedError'
+    get:
+      tags:
+        - "NetSlice templates"
+      summary: Query information about multiple NetSlice Template resources
+      description: Query information about multiple NetSlice Template resources
+      operationId: getNstContent
+      responses:
+        '200':
+          description: OK
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/ArrayOfNstInfo'
+            application/yaml:
+              schema:
+                $ref: '#/components/schemas/ArrayOfNstInfo'
+        '206':
+          description: Partial Content
+          headers:
+            Content-Range:
+              schema:
+                type: string
+          content:
+            application/octet-stream:
+              schema:
+                type: string
+                format: binary
+        '400':
+          $ref: '#/components/responses/BadRequest'
+        '401':
+          $ref: '#/components/responses/Unauthorized'
+        '403':
+          $ref: '#/components/responses/Forbidden'
+        '404':
+          $ref: '#/components/responses/NotFound'
+        '405':
+          $ref: '#/components/responses/MethodNotAllowed'
+        '406':
+          $ref: '#/components/responses/NotAcceptable'
+        '409':
+          $ref: '#/components/responses/Conflict'
+        '422':
+          $ref: '#/components/responses/UnprocessableEntity'
+        '500':
+          $ref: '#/components/responses/InternalServerError'
+        '503':
+          $ref: '#/components/responses/ServiceUnavailable'
+        '5XX':
+          $ref: '#/components/responses/UnexpectedError'
+        default:
+          $ref: '#/components/responses/UnexpectedError'
+  '/nst/v1/netslice_templates_content/{netsliceTemplateContentId}':
+    parameters:
+      - name: netsliceTemplateContentId
+        in: path
+        required: true
+        description: NetSlice Template ID
+        schema:
+          type: string
+    get:
+      tags:
+        - "NetSlice templates"
+      summary: Read information about an individual NetSlice Template resource
+      description: Read information about an individual NetSlice Template resource
+      operationId: getNstIdContent
+      responses:
+        '200':
+          description: OK
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/NstInfo'
+            application/yaml:
+              schema:
+                $ref: '#/components/schemas/NstInfo'
+        '400':
+          $ref: '#/components/responses/BadRequest'
+        '401':
+          $ref: '#/components/responses/Unauthorized'
+        '403':
+          $ref: '#/components/responses/Forbidden'
+        '404':
+          $ref: '#/components/responses/NotFound'
+        '405':
+          $ref: '#/components/responses/MethodNotAllowed'
+        '406':
+          $ref: '#/components/responses/NotAcceptable'
+        '409':
+          $ref: '#/components/responses/Conflict'
+        '422':
+          $ref: '#/components/responses/UnprocessableEntity'
+        '500':
+          $ref: '#/components/responses/InternalServerError'
+        '503':
+          $ref: '#/components/responses/ServiceUnavailable'
+        '5XX':
+          $ref: '#/components/responses/UnexpectedError'
+        default:
+          $ref: '#/components/responses/UnexpectedError'
+    put:
+      tags:
+        - "NetSlice templates"
+      summary: Modify an individual NetSlice Template resource
+      description: Modify an individual NetSlice Template resource
+      operationId: updateNstIdContent
+      requestBody:
+        $ref: '#/components/requestBodies/NstInfoModifications'
+      responses:
+        '204':
+          description: No Content
+        '400':
+          $ref: '#/components/responses/BadRequest'
+        '401':
+          $ref: '#/components/responses/Unauthorized'
+        '403':
+          $ref: '#/components/responses/Forbidden'
+        '404':
+          $ref: '#/components/responses/NotFound'
+        '405':
+          $ref: '#/components/responses/MethodNotAllowed'
+        '406':
+          $ref: '#/components/responses/NotAcceptable'
+        '409':
+          $ref: '#/components/responses/Conflict'
+        '422':
+          $ref: '#/components/responses/UnprocessableEntity'
+        '500':
+          $ref: '#/components/responses/InternalServerError'
+        '503':
+          $ref: '#/components/responses/ServiceUnavailable'
+        '5XX':
+          $ref: '#/components/responses/UnexpectedError'
+        default:
+          $ref: '#/components/responses/UnexpectedError'
+    delete:
+      tags:
+        - "NetSlice templates"
+      summary: Delete an individual NetSlice Template resource
+      description: Delete an individual NetSlice Template resource
+      operationId: deleteNstIdContent
+      responses:
+        '204':
+          description: No Content
+        '400':
+          $ref: '#/components/responses/BadRequest'
+        '401':
+          $ref: '#/components/responses/Unauthorized'
+        '403':
+          $ref: '#/components/responses/Forbidden'
+        '404':
+          $ref: '#/components/responses/NotFound'
+        '405':
+          $ref: '#/components/responses/MethodNotAllowed'
+        '406':
+          $ref: '#/components/responses/NotAcceptable'
+        '409':
+          $ref: '#/components/responses/Conflict'
+        '422':
+          $ref: '#/components/responses/UnprocessableEntity'
+        '500':
+          $ref: '#/components/responses/InternalServerError'
+        '503':
+          $ref: '#/components/responses/ServiceUnavailable'
+        '5XX':
+          $ref: '#/components/responses/UnexpectedError'
+        default:
+          $ref: '#/components/responses/UnexpectedError'
+# END NetSlice Templates
+
+# BEGIN NetSlice Instances
+  '/nsilcm/v1/netslice_instances':
+    get:
+      tags:
+        - "NetSlice instances"
+      summary: Query information about multiple NetSlice instances
+      description: Query information about multiple NetSlice isntances
+      operationId: getNSIs
+      responses:
+        '200':
+          description: OK
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/ArrayOfNetSliceInstance'
+            application/yaml:
+              schema:
+                $ref: '#/components/schemas/ArrayOfNetSliceInstance'
+        '400':
+          $ref: '#/components/responses/BadRequest'
+        '401':
+          $ref: '#/components/responses/Unauthorized'
+        '403':
+          $ref: '#/components/responses/Forbidden'
+        '404':
+          $ref: '#/components/responses/NotFound'
+        '405':
+          $ref: '#/components/responses/MethodNotAllowed'
+        '406':
+          $ref: '#/components/responses/NotAcceptable'
+        '409':
+          $ref: '#/components/responses/Conflict'
+        '422':
+          $ref: '#/components/responses/UnprocessableEntity'
+        '500':
+          $ref: '#/components/responses/InternalServerError'
+        '503':
+          $ref: '#/components/responses/ServiceUnavailable'
+        '5XX':
+          $ref: '#/components/responses/UnexpectedError'
+        default:
+          $ref: '#/components/responses/UnexpectedError'
+    post:
+      tags:
+        - "NetSlice instances"
+      summary: Create a new NetSlice instance resource
+      description: Create a new NetSlice instance resource
+      operationId: addNSI
+      requestBody:
+        $ref: '#/components/requestBodies/InstantiateNsiRequest'
+      responses:
+        '201':
+          description: Created
+          headers:
+            Location:
+              schema:
+                type: string
+                format: uri
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/ObjectId'
+            application/yaml:
+              schema:
+                $ref: '#/components/schemas/ObjectId'
+        '400':
+          $ref: '#/components/responses/BadRequest'
+        '401':
+          $ref: '#/components/responses/Unauthorized'
+        '403':
+          $ref: '#/components/responses/Forbidden'
+        '404':
+          $ref: '#/components/responses/NotFound'
+        '405':
+          $ref: '#/components/responses/MethodNotAllowed'
+        '406':
+          $ref: '#/components/responses/NotAcceptable'
+        '409':
+          $ref: '#/components/responses/Conflict'
+        '422':
+          $ref: '#/components/responses/UnprocessableEntity'
+        '500':
+          $ref: '#/components/responses/InternalServerError'
+        '503':
+          $ref: '#/components/responses/ServiceUnavailable'
+        '5XX':
+          $ref: '#/components/responses/UnexpectedError'
+        default:
+          $ref: '#/components/responses/UnexpectedError'
+  '/nsilcm/v1/netslice_instances/{netsliceInstanceId}':
+    parameters:
+      - name: netsliceInstanceId
+        in: path
+        required: true
+        description: NetSlice Instance ID
+        schema:
+          type: string
+    get:
+      tags:
+        - "NetSlice instances"
+      summary: Read an individual NetSlice instance resource
+      description: Read an individual NetSlice instance resource
+      operationId: getNSI
+      responses:
+        '200':
+          description: OK
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/NetSliceInstance'
+            application/yaml:
+              schema:
+                $ref: '#/components/schemas/NetSliceInstance'
+        '400':
+          $ref: '#/components/responses/BadRequest'
+        '401':
+          $ref: '#/components/responses/Unauthorized'
+        '403':
+          $ref: '#/components/responses/Forbidden'
+        '404':
+          $ref: '#/components/responses/NotFound'
+        '405':
+          $ref: '#/components/responses/MethodNotAllowed'
+        '406':
+          $ref: '#/components/responses/NotAcceptable'
+        '409':
+          $ref: '#/components/responses/Conflict'
+        '422':
+          $ref: '#/components/responses/UnprocessableEntity'
+        '500':
+          $ref: '#/components/responses/InternalServerError'
+        '503':
+          $ref: '#/components/responses/ServiceUnavailable'
+        '5XX':
+          $ref: '#/components/responses/UnexpectedError'
+        default:
+          $ref: '#/components/responses/UnexpectedError'
+    delete:
+      tags:
+        - "NetSlice instances"
+      summary: Delete an individual NetSlice instance resource
+      description: Delete an individual NetSlice instance resource
+      operationId: deleteNSI
+      responses:
+        '204':
+          description: No Content
+        '400':
+          $ref: '#/components/responses/BadRequest'
+        '401':
+          $ref: '#/components/responses/Unauthorized'
+        '403':
+          $ref: '#/components/responses/Forbidden'
+        '404':
+          $ref: '#/components/responses/NotFound'
+        '405':
+          $ref: '#/components/responses/MethodNotAllowed'
+        '406':
+          $ref: '#/components/responses/NotAcceptable'
+        '409':
+          $ref: '#/components/responses/Conflict'
+        '422':
+          $ref: '#/components/responses/UnprocessableEntity'
+        '500':
+          $ref: '#/components/responses/InternalServerError'
+        '503':
+          $ref: '#/components/responses/ServiceUnavailable'
+        '5XX':
+          $ref: '#/components/responses/UnexpectedError'
+        default:
+          $ref: '#/components/responses/UnexpectedError'
+  '/nsilcm/v1/netslice_instances/{netsliceInstanceId}/instantiate':
+    parameters:
+      - name: netsliceInstanceId
+        in: path
+        required: true
+        description: NetSlice Instance ID
+        schema:
+          type: string
+    post:
+      tags:
+        - "NetSlice instances"
+      summary: Instantiate a NetSlice
+      description: |
+        Instantiate a NetSlice. The precondition is that the NetSlice instance
+        must have been created and must be in NOT_INSTANTIATED state. As a result
+        of the success of this operation, the NFVO creates a "NetSlice Lifecycle
+        Operation Occurrence" resource for the request, and the NS instance state
+        becomes INSTANTIATED.
+      operationId: instantiateNSI
+      requestBody:
+        $ref: '#/components/requestBodies/InstantiateNsiRequest'
+      responses:
+        '202':
+          description: Accepted
+          headers:
+            Location:
+              description: |
+                It must point to the new "NetSlice Lifecycle Operation Occurrence"
+                resource, i.e. an URI like ".../nsi_lcm_op_occs/{nsiLcmOpOccId}"
+              schema:
+                type: string
+                format: uri
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/ObjectId'
+            application/yaml:
+              schema:
+                $ref: '#/components/schemas/ObjectId'
+        '400':
+          $ref: '#/components/responses/BadRequest'
+        '401':
+          $ref: '#/components/responses/Unauthorized'
+        '403':
+          $ref: '#/components/responses/Forbidden'
+        '404':
+          $ref: '#/components/responses/NotFound'
+        '405':
+          $ref: '#/components/responses/MethodNotAllowed'
+        '406':
+          $ref: '#/components/responses/NotAcceptable'
+        '409':
+          $ref: '#/components/responses/Conflict'
+        '422':
+          $ref: '#/components/responses/UnprocessableEntity'
+        '500':
+          $ref: '#/components/responses/InternalServerError'
+        '503':
+          $ref: '#/components/responses/ServiceUnavailable'
+        '5XX':
+          $ref: '#/components/responses/UnexpectedError'
+        default:
+          $ref: '#/components/responses/UnexpectedError'
+  '/nsilcm/v1/netslice_instances/{netsliceInstanceId}/terminate':
+    parameters:
+      - name: netsliceInstanceId
+        in: path
+        required: true
+        description: NetSlice Instance ID
+        schema:
+          type: string
+    post:
+      tags:
+        - "NetSlice instances"
+      summary: Terminate a NetSlice instance
+      description: |
+        Terminate a NetSlice instance. The precondition is that the NetSlice instance
+        must have been created and must be in INSTANTIATED state. As a result of the
+        success of this operation, the NFVO creates a "NetSlice Lifecycle Operation
+        Occurrence" resource for the request, and the NetSlice instance state becomes
+        NOT_INSTANTIATED.
+      operationId: terminateNSI
+      requestBody:
+        # Request data is not required
+        $ref: '#/components/requestBodies/TerminateNsiRequest'
+      responses:
+        '202':
+          description: Accepted
+          headers:
+            Location:
+              description: |
+                It must point to the new "NetSlice Lifecycle Operation Occurrence"
+                resource, i.e. an URI like ".../nsi_lcm_op_occs/{nsiLcmOpOccId}"
+              schema:
+                type: string
+                format: uri
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/ObjectId'
+            application/yaml:
+              schema:
+                $ref: '#/components/schemas/ObjectId'
+        '400':
+          $ref: '#/components/responses/BadRequest'
+        '401':
+          $ref: '#/components/responses/Unauthorized'
+        '403':
+          $ref: '#/components/responses/Forbidden'
+        '404':
+          $ref: '#/components/responses/NotFound'
+        '405':
+          $ref: '#/components/responses/MethodNotAllowed'
+        '406':
+          $ref: '#/components/responses/NotAcceptable'
+        '409':
+          $ref: '#/components/responses/Conflict'
+        '422':
+          $ref: '#/components/responses/UnprocessableEntity'
+        '500':
+          $ref: '#/components/responses/InternalServerError'
+        '503':
+          $ref: '#/components/responses/ServiceUnavailable'
+        '5XX':
+          $ref: '#/components/responses/UnexpectedError'
+        default:
+          $ref: '#/components/responses/UnexpectedError'
+  '/nsilcm/v1/netslice_instances/{netsliceInstanceId}/action':
+    parameters:
+      - name: netsliceInstanceId
+        in: path
+        required: true
+        description: NetSlice Instance ID
+        schema:
+          type: string
+    post:
+      tags:
+        - "NetSlice instances"
+      summary: Execute an action on a NetSlice instance
+      description: |
+        Execute an action on a NetSlice instance.
+        The NetSlice instance must have been created and must be in INSTANTIATED state.
+      operationId: actionOnNSI
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/NsiActionRequest'
+          application/yaml:
+            schema:
+              $ref: '#/components/schemas/NsiActionRequest'
+      responses:
+        '202':
+          description: Accepted
+          headers:
+            Location:
+              description: |
+                It must point to the new "NS Lifecycle Operation Occurrence"
+                resource, i.e. an URI like ".../ns_lcm_op_occs/{nsLcmOpOccId}"
+              schema:
+                type: string
+                format: uri
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/ObjectId'
+            application/yaml:
+              schema:
+                $ref: '#/components/schemas/ObjectId'
+        '400':
+          $ref: '#/components/responses/BadRequest'
+        '401':
+          $ref: '#/components/responses/Unauthorized'
+        '403':
+          $ref: '#/components/responses/Forbidden'
+        '404':
+          $ref: '#/components/responses/NotFound'
+        '405':
+          $ref: '#/components/responses/MethodNotAllowed'
+        '406':
+          $ref: '#/components/responses/NotAcceptable'
+        '409':
+          $ref: '#/components/responses/Conflict'
+        '422':
+          $ref: '#/components/responses/UnprocessableEntity'
+        '500':
+          $ref: '#/components/responses/InternalServerError'
+        '503':
+          $ref: '#/components/responses/ServiceUnavailable'
+        '5XX':
+          $ref: '#/components/responses/UnexpectedError'
+        default:
+          $ref: '#/components/responses/UnexpectedError'
+  '/nsilcm/v1/netslice_instances_content':
+    get:
+      tags:
+        - "NetSlice instances"
+      summary: Query information about multiple NetSlice instances
+      description: Query information about multiple NetSlice isntances
+      operationId: getNSIsContent
+      responses:
+        '200':
+          description: OK
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/ArrayOfNetSliceInstance'
+            application/yaml:
+              schema:
+                $ref: '#/components/schemas/ArrayOfNetSliceInstance'
+        '400':
+          $ref: '#/components/responses/BadRequest'
+        '401':
+          $ref: '#/components/responses/Unauthorized'
+        '403':
+          $ref: '#/components/responses/Forbidden'
+        '404':
+          $ref: '#/components/responses/NotFound'
+        '405':
+          $ref: '#/components/responses/MethodNotAllowed'
+        '406':
+          $ref: '#/components/responses/NotAcceptable'
+        '409':
+          $ref: '#/components/responses/Conflict'
+        '422':
+          $ref: '#/components/responses/UnprocessableEntity'
+        '500':
+          $ref: '#/components/responses/InternalServerError'
+        '503':
+          $ref: '#/components/responses/ServiceUnavailable'
+        '5XX':
+          $ref: '#/components/responses/UnexpectedError'
+        default:
+          $ref: '#/components/responses/UnexpectedError'
+    post:
+      tags:
+        - "NetSlice instances"
+      summary: Create a new NetSlice instance
+      description: Create a new NetSlice instance
+      operationId: createNSIContent
+      requestBody:
+        $ref: '#/components/requestBodies/InstantiateNsiRequest'
+      responses:
+        '201':
+          description: Created
+          headers:
+            Location:
+              schema:
+                type: string
+                format: uri
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/CreateNsiContentResponse'
+            application/yaml:
+              schema:
+                $ref: '#/components/schemas/CreateNsiContentResponse'
+        '400':
+          $ref: '#/components/responses/BadRequest'
+        '401':
+          $ref: '#/components/responses/Unauthorized'
+        '403':
+          $ref: '#/components/responses/Forbidden'
+        '404':
+          $ref: '#/components/responses/NotFound'
+        '405':
+          $ref: '#/components/responses/MethodNotAllowed'
+        '406':
+          $ref: '#/components/responses/NotAcceptable'
+        '409':
+          $ref: '#/components/responses/Conflict'
+        '422':
+          $ref: '#/components/responses/UnprocessableEntity'
+        '500':
+          $ref: '#/components/responses/InternalServerError'
+        '503':
+          $ref: '#/components/responses/ServiceUnavailable'
+        '5XX':
+          $ref: '#/components/responses/UnexpectedError'
+        default:
+          $ref: '#/components/responses/UnexpectedError'
+  '/nsilcm/v1/netslice_instances_content/{netsliceInstanceContentId}':
+    parameters:
+      - name: netsliceInstanceContentId
+        in: path
+        required: true
+        description: NetSlice Instance Content ID
+        schema:
+          type: string
+    get:
+      tags:
+        - "NetSlice instances"
+      summary: Read an individual NetSlice instance resource
+      description: Read an individual NetSlice instance resource
+      operationId: getNSIContent
+      responses:
+        '200':
+          description: OK
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/NetSliceInstance'
+            application/yaml:
+              schema:
+                $ref: '#/components/schemas/NetSliceInstance'
+        '400':
+          $ref: '#/components/responses/BadRequest'
+        '401':
+          $ref: '#/components/responses/Unauthorized'
+        '403':
+          $ref: '#/components/responses/Forbidden'
+        '404':
+          $ref: '#/components/responses/NotFound'
+        '405':
+          $ref: '#/components/responses/MethodNotAllowed'
+        '406':
+          $ref: '#/components/responses/NotAcceptable'
+        '409':
+          $ref: '#/components/responses/Conflict'
+        '422':
+          $ref: '#/components/responses/UnprocessableEntity'
+        '500':
+          $ref: '#/components/responses/InternalServerError'
+        '503':
+          $ref: '#/components/responses/ServiceUnavailable'
+        '5XX':
+          $ref: '#/components/responses/UnexpectedError'
+        default:
+          $ref: '#/components/responses/UnexpectedError'
+    delete:
+      tags:
+        - "NetSlice instances"
+      summary: Delete an individual NS instance resource
+      description: Delete an individual NS instance resource
+      operationId: deleteNSIContent
+      responses:
+        '202':
+          description: Accepted
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/ObjectId'
+            application/yaml:
+              schema:
+                $ref: '#/components/schemas/ObjectId'
+        '204':
+          description: No Content
+        '400':
+          $ref: '#/components/responses/BadRequest'
+        '401':
+          $ref: '#/components/responses/Unauthorized'
+        '403':
+          $ref: '#/components/responses/Forbidden'
+        '404':
+          $ref: '#/components/responses/NotFound'
+        '405':
+          $ref: '#/components/responses/MethodNotAllowed'
+        '406':
+          $ref: '#/components/responses/NotAcceptable'
+        '409':
+          $ref: '#/components/responses/Conflict'
+        '422':
+          $ref: '#/components/responses/UnprocessableEntity'
+        '500':
+          $ref: '#/components/responses/InternalServerError'
+        '503':
+          $ref: '#/components/responses/ServiceUnavailable'
+        '5XX':
+          $ref: '#/components/responses/UnexpectedError'
+        default:
+          $ref: '#/components/responses/UnexpectedError'
+  '/nsilcm/v1/nsi_lcm_op_occs':
+    get:
+      tags:
+        - "NetSlice instances"
+      summary: Query information about multiple NetSlice LCM Operation Occurrences
+      description: Query information about multiple NetSlice LCM Operation Occurrences
+      operationId: getNsiLcmOpOccs
+      responses:
+        '200':
+          description: OK
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/ArrayOfNsiLcmOpOcc'
+            application/yaml:
+              schema:
+                $ref: '#/components/schemas/ArrayOfNsiLcmOpOcc'
+        '400':
+          $ref: '#/components/responses/BadRequest'
+        '401':
+          $ref: '#/components/responses/Unauthorized'
+        '403':
+          $ref: '#/components/responses/Forbidden'
+        '404':
+          $ref: '#/components/responses/NotFound'
+        '405':
+          $ref: '#/components/responses/MethodNotAllowed'
+        '406':
+          $ref: '#/components/responses/NotAcceptable'
+        '409':
+          $ref: '#/components/responses/Conflict'
+        '422':
+          $ref: '#/components/responses/UnprocessableEntity'
+        '500':
+          $ref: '#/components/responses/InternalServerError'
+        '503':
+          $ref: '#/components/responses/ServiceUnavailable'
+        '5XX':
+          $ref: '#/components/responses/UnexpectedError'
+        default:
+          $ref: '#/components/responses/UnexpectedError'
+  '/nsilcm/v1/nsi_lcm_op_occs/{nsiLcmOpOccId}':
+    parameters:
+      - name: nsiLcmOpOccId
+        in: path
+        required: true
+        description: NetSlice LCM Operation Occurrence ID
+        schema:
+          type: string
+    get:
+      tags:
+        - "NetSlice instances"
+      summary: Query information about an individual NetSlice LCM Operation Occurrence
+      description: Query information about an individual NetSlice LCM Operation Occurrence
+      operationId: getNsiLcmOpOcc
+      responses:
+        '200':
+          description: OK
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/NsiLcmOpOcc'
+            application/yaml:
+              schema:
+                $ref: '#/components/schemas/NsiLcmOpOcc'
+        '400':
+          $ref: '#/components/responses/BadRequest'
+        '401':
+          $ref: '#/components/responses/Unauthorized'
+        '403':
+          $ref: '#/components/responses/Forbidden'
+        '404':
+          $ref: '#/components/responses/NotFound'
+        '405':
+          $ref: '#/components/responses/MethodNotAllowed'
+        '406':
+          $ref: '#/components/responses/NotAcceptable'
+        '409':
+          $ref: '#/components/responses/Conflict'
+        '422':
+          $ref: '#/components/responses/UnprocessableEntity'
+        '500':
+          $ref: '#/components/responses/InternalServerError'
+        '503':
+          $ref: '#/components/responses/ServiceUnavailable'
+        '5XX':
+          $ref: '#/components/responses/UnexpectedError'
+        default:
+          $ref: '#/components/responses/UnexpectedError'
+# END NetSlice Instances
+
+# BEGIN NSPM
+  '/nspm/v1/pm_jobs/{pmJobId}/reports/{nsId}':
+    parameters:
+      - name: pmJobId
+        in: path
+        required: true
+        description: NS PM Job ID
+        schema:
+          type: string
+      - name: nsId
+        in: path
+        required: true
+        description: NS ID
+        schema:
+          type: string
+    get:
+      tags:
+        - "NS Performance Management"
+      summary: Query information about an individual NS PM Job Report
+      description: Query information about an individual NS PM Job Report
+      operationId: getNsPmJobReport
+      responses:
+        '200':
+          description: OK
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/NsPmJobReportInfo'
+            application/yaml:
+              schema:
+                $ref: '#/components/schemas/NsPmJobReportInfo'
+        '400':
+          $ref: '#/components/responses/BadRequest'
+        '401':
+          $ref: '#/components/responses/Unauthorized'
+        '403':
+          $ref: '#/components/responses/Forbidden'
+        '404':
+          $ref: '#/components/responses/NotFound'
+        '405':
+          $ref: '#/components/responses/MethodNotAllowed'
+        '406':
+          $ref: '#/components/responses/NotAcceptable'
+        '409':
+          $ref: '#/components/responses/Conflict'
+        '422':
+          $ref: '#/components/responses/UnprocessableEntity'
+        '500':
+          $ref: '#/components/responses/InternalServerError'
+        '503':
+          $ref: '#/components/responses/ServiceUnavailable'
+        '5XX':
+          $ref: '#/components/responses/UnexpectedError'
+        default:
+          $ref: '#/components/responses/UnexpectedError'
+# END NSPM
+
+# BEGIN PDU
+  '/pdu/v1/pdu_descriptors':
+    get:
+      tags:
+        - "Physical Data Units (PDU)"
+      summary: Query information about multiple PDU Descriptors
+      description: Query information about multiple PDU Descriptors
+      operationId: getPDUs
+      responses:
+        '200':
+          description: OK
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/ArrayOfPduInfo'
+            application/yaml:
+              schema:
+                $ref: '#/components/schemas/ArrayOfPduInfo'
+        '400':
+          $ref: '#/components/responses/BadRequest'
+        '401':
+          $ref: '#/components/responses/Unauthorized'
+        '403':
+          $ref: '#/components/responses/Forbidden'
+        '404':
+          $ref: '#/components/responses/NotFound'
+        '405':
+          $ref: '#/components/responses/MethodNotAllowed'
+        '406':
+          $ref: '#/components/responses/NotAcceptable'
+        '409':
+          $ref: '#/components/responses/Conflict'
+        '422':
+          $ref: '#/components/responses/UnprocessableEntity'
+        '500':
+          $ref: '#/components/responses/InternalServerError'
+        '503':
+          $ref: '#/components/responses/ServiceUnavailable'
+        '5XX':
+          $ref: '#/components/responses/UnexpectedError'
+        default:
+          $ref: '#/components/responses/UnexpectedError'
+    post:
+      tags:
+        - "Physical Data Units (PDU)"
+      summary: Create a new PDU
+      description: Create a new PDU Descriptor
+      operationId: createPDU
+      requestBody:
+        $ref: '#/components/requestBodies/CreatePduRequest'
+      responses:
+        '200':
+          description: OK
+          headers:
+            Location:
+              schema:
+                type: string
+                format: uri
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/ObjectId'
+            application/yaml:
+              schema:
+                $ref: '#/components/schemas/ObjectId'
+        '400':
+          $ref: '#/components/responses/BadRequest'
+        '401':
+          $ref: '#/components/responses/Unauthorized'
+        '403':
+          $ref: '#/components/responses/Forbidden'
+        '404':
+          $ref: '#/components/responses/NotFound'
+        '405':
+          $ref: '#/components/responses/MethodNotAllowed'
+        '406':
+          $ref: '#/components/responses/NotAcceptable'
+        '409':
+          $ref: '#/components/responses/Conflict'
+        '422':
+          $ref: '#/components/responses/UnprocessableEntity'
+        '500':
+          $ref: '#/components/responses/InternalServerError'
+        '503':
+          $ref: '#/components/responses/ServiceUnavailable'
+        '5XX':
+          $ref: '#/components/responses/UnexpectedError'
+        default:
+          $ref: '#/components/responses/UnexpectedError'
+  '/pdu/v1/pdu_descriptors/{pduDescriptorId}':
+    parameters:
+      - name: pduDescriptorId
+        in: path
+        required: true
+        description: PDU Descriptor ID
+        schema:
+          type: string
+    get:
+      tags:
+        - "Physical Data Units (PDU)"
+      summary: Query information about an individual PDU Descriptor
+      description: Query information about an individual PDU Descriptor
+      operationId: getPDU
+      responses:
+        '200':
+          description: OK
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/PduInfo'
+            application/yaml:
+              schema:
+                $ref: '#/components/schemas/PduInfo'
+        '400':
+          $ref: '#/components/responses/BadRequest'
+        '401':
+          $ref: '#/components/responses/Unauthorized'
+        '403':
+          $ref: '#/components/responses/Forbidden'
+        '404':
+          $ref: '#/components/responses/NotFound'
+        '405':
+          $ref: '#/components/responses/MethodNotAllowed'
+        '406':
+          $ref: '#/components/responses/NotAcceptable'
+        '409':
+          $ref: '#/components/responses/Conflict'
+        '422':
+          $ref: '#/components/responses/UnprocessableEntity'
+        '500':
+          $ref: '#/components/responses/InternalServerError'
+        '503':
+          $ref: '#/components/responses/ServiceUnavailable'
+        '5XX':
+          $ref: '#/components/responses/UnexpectedError'
+        default:
+          $ref: '#/components/responses/UnexpectedError'
+    patch:
+      tags:
+        - "Physical Data Units (PDU)"
+      summary: Modify an individual PDU Descriptor
+      description: Modify an individual PDU Descriptor
+      operationId: editPDU
+      requestBody:
+        $ref: '#/components/requestBodies/EditPduRequest'
+      responses:
+        '204':
+          description: No Content
+        '400':
+          $ref: '#/components/responses/BadRequest'
+        '401':
+          $ref: '#/components/responses/Unauthorized'
+        '403':
+          $ref: '#/components/responses/Forbidden'
+        '404':
+          $ref: '#/components/responses/NotFound'
+        '405':
+          $ref: '#/components/responses/MethodNotAllowed'
+        '406':
+          $ref: '#/components/responses/NotAcceptable'
+        '409':
+          $ref: '#/components/responses/Conflict'
+        '422':
+          $ref: '#/components/responses/UnprocessableEntity'
+        '500':
+          $ref: '#/components/responses/InternalServerError'
+        '503':
+          $ref: '#/components/responses/ServiceUnavailable'
+        '5XX':
+          $ref: '#/components/responses/UnexpectedError'
+        default:
+          $ref: '#/components/responses/UnexpectedError'
+    delete:
+      tags:
+        - "Physical Data Units (PDU)"
+      summary: Delete an individual PDU Descriptor
+      description: Delete an individual PDU Descriptor
+      operationId: deletePDU
+      responses:
+        '204':
+          description: No Content
+        '400':
+          $ref: '#/components/responses/BadRequest'
+        '401':
+          $ref: '#/components/responses/Unauthorized'
+        '403':
+          $ref: '#/components/responses/Forbidden'
+        '404':
+          $ref: '#/components/responses/NotFound'
+        '405':
+          $ref: '#/components/responses/MethodNotAllowed'
+        '406':
+          $ref: '#/components/responses/NotAcceptable'
+        '409':
+          $ref: '#/components/responses/Conflict'
+        '422':
+          $ref: '#/components/responses/UnprocessableEntity'
+        '500':
+          $ref: '#/components/responses/InternalServerError'
+        '503':
+          $ref: '#/components/responses/ServiceUnavailable'
+        '5XX':
+          $ref: '#/components/responses/UnexpectedError'
+        default:
+          $ref: '#/components/responses/UnexpectedError'
+# END PDU
+
+# BEGIN Admin
+  '/admin/v1/tokens':
+    get:
+      tags:
+        - "Authentication"
+        - "Admin"
+      summary: Query information about multiple Tokens
+      description: Query information about multiple Tokens
+      operationId: getTokens
+      responses:
+        '200':
+          description: OK
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/ArrayOfTokenInfo'
+            application/yaml:
+              schema:
+                $ref: '#/components/schemas/ArrayOfTokenInfo'
+        '400':
+          $ref: '#/components/responses/BadRequest'
+        '401':
+          $ref: '#/components/responses/Unauthorized'
+        '403':
+          $ref: '#/components/responses/Forbidden'
+        '404':
+          $ref: '#/components/responses/NotFound'
+        '405':
+          $ref: '#/components/responses/MethodNotAllowed'
+        '406':
+          $ref: '#/components/responses/NotAcceptable'
+        '409':
+          $ref: '#/components/responses/Conflict'
+        '422':
+          $ref: '#/components/responses/UnprocessableEntity'
+        '500':
+          $ref: '#/components/responses/InternalServerError'
+        '503':
+          $ref: '#/components/responses/ServiceUnavailable'
+        '5XX':
+          $ref: '#/components/responses/UnexpectedError'
+        default:
+          $ref: '#/components/responses/UnexpectedError'
+    post:
+      tags:
+        - "Authentication"
+        - "Admin"
+      summary: Request a new Token
+      description: Request a new Token
+      operationId: createToken
+      requestBody:
+        $ref: '#/components/requestBodies/CreateTokenRequest'
+      responses:
+        '200':
+          description: OK
+          headers:
+            Location:
+              schema:
+                type: string
+                format: uri
+          content:
+            application/json:
+              schema:
+                oneOf:
+                  - $ref: '#/components/schemas/TokenInfo'
+                  - $ref: '#/components/schemas/PasswordExpiryInfo'
+            application/yaml:
+              schema:
+                oneOf:
+                  - $ref: '#/components/schemas/TokenInfo'
+                  - $ref: '#/components/schemas/PasswordExpiryInfo'
+        '400':
+          $ref: '#/components/responses/BadRequest'
+        '401':
+          $ref: '#/components/responses/Unauthorized'
+        '403':
+          $ref: '#/components/responses/Forbidden'
+        '404':
+          $ref: '#/components/responses/NotFound'
+        '405':
+          $ref: '#/components/responses/MethodNotAllowed'
+        '406':
+          $ref: '#/components/responses/NotAcceptable'
+        '409':
+          $ref: '#/components/responses/Conflict'
+        '422':
+          $ref: '#/components/responses/UnprocessableEntity'
+        '500':
+          $ref: '#/components/responses/InternalServerError'
+        '503':
+          $ref: '#/components/responses/ServiceUnavailable'
+        '5XX':
+          $ref: '#/components/responses/UnexpectedError'
+        default:
+          $ref: '#/components/responses/UnexpectedError'
+    delete:
+      tags:
+        - "Authentication"
+        - "Admin"
+      summary: Delete the Token indicated in the Authorization Header
+      description: Delete the Token indicated in the Authorization Header
+      operationId: deleteAuthToken
+      responses:
+        '200':
+          description: OK
+          content:
+            application/json:
+              schema:
+                type: string
+            application/yaml:
+              schema:
+                type: string
+        '400':
+          $ref: '#/components/responses/BadRequest'
+        '401':
+          $ref: '#/components/responses/Unauthorized'
+        '403':
+          $ref: '#/components/responses/Forbidden'
+        '404':
+          $ref: '#/components/responses/NotFound'
+        '405':
+          $ref: '#/components/responses/MethodNotAllowed'
+        '406':
+          $ref: '#/components/responses/NotAcceptable'
+        '409':
+          $ref: '#/components/responses/Conflict'
+        '422':
+          $ref: '#/components/responses/UnprocessableEntity'
+        '500':
+          $ref: '#/components/responses/InternalServerError'
+        '503':
+          $ref: '#/components/responses/ServiceUnavailable'
+        '5XX':
+          $ref: '#/components/responses/UnexpectedError'
+        default:
+          $ref: '#/components/responses/UnexpectedError'
+  '/admin/v1/tokens/{tokenId}':
+    parameters:
+      - name: tokenId
+        in: path
+        required: true
+        description: Token ID
+        schema:
+          type: string
+    get:
+      tags:
+        - "Authentication"
+        - "Admin"
+      summary: Query information about an individual Token
+      description: Query information about an individual Token
+      operationId: getToken
+      responses:
+        '200':
+          description: OK
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/TokenInfo'
+            application/yaml:
+              schema:
+                $ref: '#/components/schemas/TokenInfo'
+        '400':
+          $ref: '#/components/responses/BadRequest'
+        '401':
+          $ref: '#/components/responses/Unauthorized'
+        '403':
+          $ref: '#/components/responses/Forbidden'
+        '404':
+          $ref: '#/components/responses/NotFound'
+        '405':
+          $ref: '#/components/responses/MethodNotAllowed'
+        '406':
+          $ref: '#/components/responses/NotAcceptable'
+        '409':
+          $ref: '#/components/responses/Conflict'
+        '422':
+          $ref: '#/components/responses/UnprocessableEntity'
+        '500':
+          $ref: '#/components/responses/InternalServerError'
+        '503':
+          $ref: '#/components/responses/ServiceUnavailable'
+        '5XX':
+          $ref: '#/components/responses/UnexpectedError'
+        default:
+          $ref: '#/components/responses/UnexpectedError'
+    delete:
+      tags:
+        - "Authentication"
+        - "Admin"
+      summary: Delete the Token indicated as parameter
+      description: Delete the Token indicated as parameter
+      operationId: deleteToken
+      responses:
+        '200':
+          description: OK
+          content:
+            application/json:
+              schema:
+                type: string
+            application/yaml:
+              schema:
+                type: string
+        '400':
+          $ref: '#/components/responses/BadRequest'
+        '401':
+          $ref: '#/components/responses/Unauthorized'
+        '403':
+          $ref: '#/components/responses/Forbidden'
+        '404':
+          $ref: '#/components/responses/NotFound'
+        '405':
+          $ref: '#/components/responses/MethodNotAllowed'
+        '406':
+          $ref: '#/components/responses/NotAcceptable'
+        '409':
+          $ref: '#/components/responses/Conflict'
+        '422':
+          $ref: '#/components/responses/UnprocessableEntity'
+        '500':
+          $ref: '#/components/responses/InternalServerError'
+        '503':
+          $ref: '#/components/responses/ServiceUnavailable'
+        '5XX':
+          $ref: '#/components/responses/UnexpectedError'
+        default:
+          $ref: '#/components/responses/UnexpectedError'
+  '/admin/v1/users':
+    get:
+      tags:
+        - "Identity"
+        - "Admin"
+      summary: Query information about multiple Users
+      description: Query information about multiple Users
+      operationId: getUsers
+      responses:
+        '200':
+          description: OK
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/ArrayOfUserInfo'
+            application/yaml:
+              schema:
+                $ref: '#/components/schemas/ArrayOfUserInfo'
+        '400':
+          $ref: '#/components/responses/BadRequest'
+        '401':
+          $ref: '#/components/responses/Unauthorized'
+        '403':
+          $ref: '#/components/responses/Forbidden'
+        '404':
+          $ref: '#/components/responses/NotFound'
+        '405':
+          $ref: '#/components/responses/MethodNotAllowed'
+        '406':
+          $ref: '#/components/responses/NotAcceptable'
+        '409':
+          $ref: '#/components/responses/Conflict'
+        '422':
+          $ref: '#/components/responses/UnprocessableEntity'
+        '500':
+          $ref: '#/components/responses/InternalServerError'
+        '503':
+          $ref: '#/components/responses/ServiceUnavailable'
+        '5XX':
+          $ref: '#/components/responses/UnexpectedError'
+        default:
+          $ref: '#/components/responses/UnexpectedError'
+    post:
+      tags:
+        - "Identity"
+        - "Admin"
+      summary: Create a new User
+      description: Create a new User
+      operationId: createUser
+      requestBody:
+        $ref: '#/components/requestBodies/CreateUserRequest'
+      responses:
+        '201':
+          description: Created
+          headers:
+            Location:
+              schema:
+                type: string
+                format: uri
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/ObjectId'
+            application/yaml:
+              schema:
+                $ref: '#/components/schemas/ObjectId'
+        '400':
+          $ref: '#/components/responses/BadRequest'
+        '401':
+          $ref: '#/components/responses/Unauthorized'
+        '403':
+          $ref: '#/components/responses/Forbidden'
+        '404':
+          $ref: '#/components/responses/NotFound'
+        '405':
+          $ref: '#/components/responses/MethodNotAllowed'
+        '406':
+          $ref: '#/components/responses/NotAcceptable'
+        '409':
+          $ref: '#/components/responses/Conflict'
+        '422':
+          $ref: '#/components/responses/UnprocessableEntity'
+        '500':
+          $ref: '#/components/responses/InternalServerError'
+        '503':
+          $ref: '#/components/responses/ServiceUnavailable'
+        '5XX':
+          $ref: '#/components/responses/UnexpectedError'
+        default:
+          $ref: '#/components/responses/UnexpectedError'
+  '/admin/v1/users/{userId}':
+    parameters:
+      - name: userId
+        in: path
+        required: true
+        description: User ID/Name
+        schema:
+          type: string
+    get:
+      tags:
+        - "Identity"
+        - "Admin"
+      summary: Query information about an individual User
+      description: Query information about an individual User
+      operationId: getUser
+      responses:
+        '200':
+          description: OK
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/UserInfo'
+            application/yaml:
+              schema:
+                $ref: '#/components/schemas/UserInfo'
+        '400':
+          $ref: '#/components/responses/BadRequest'
+        '401':
+          $ref: '#/components/responses/Unauthorized'
+        '403':
+          $ref: '#/components/responses/Forbidden'
+        '404':
+          $ref: '#/components/responses/NotFound'
+        '405':
+          $ref: '#/components/responses/MethodNotAllowed'
+        '406':
+          $ref: '#/components/responses/NotAcceptable'
+        '409':
+          $ref: '#/components/responses/Conflict'
+        '422':
+          $ref: '#/components/responses/UnprocessableEntity'
+        '500':
+          $ref: '#/components/responses/InternalServerError'
+        '503':
+          $ref: '#/components/responses/ServiceUnavailable'
+        '5XX':
+          $ref: '#/components/responses/UnexpectedError'
+        default:
+          $ref: '#/components/responses/UnexpectedError'
+    patch:
+      tags:
+        - "Identity"
+        - "Admin"
+      summary: Modify a User
+      description: Modify a User
+      operationId: editUser
+      requestBody:
+        $ref: '#/components/requestBodies/EditUserRequest'
+      responses:
+        '204':
+          description: No Content
+        '400':
+          $ref: '#/components/responses/BadRequest'
+        '401':
+          $ref: '#/components/responses/Unauthorized'
+        '403':
+          $ref: '#/components/responses/Forbidden'
+        '404':
+          $ref: '#/components/responses/NotFound'
+        '405':
+          $ref: '#/components/responses/MethodNotAllowed'
+        '406':
+          $ref: '#/components/responses/NotAcceptable'
+        '409':
+          $ref: '#/components/responses/Conflict'
+        '422':
+          $ref: '#/components/responses/UnprocessableEntity'
+        '500':
+          $ref: '#/components/responses/InternalServerError'
+        '503':
+          $ref: '#/components/responses/ServiceUnavailable'
+        '5XX':
+          $ref: '#/components/responses/UnexpectedError'
+        default:
+          $ref: '#/components/responses/UnexpectedError'
+    delete:
+      tags:
+        - "Identity"
+        - "Admin"
+      summary: Delete a User
+      description: Delete a User
+      operationId: deleteUser
+      responses:
+        '204':
+          description: No Content
+        '400':
+          $ref: '#/components/responses/BadRequest'
+        '401':
+          $ref: '#/components/responses/Unauthorized'
+        '403':
+          $ref: '#/components/responses/Forbidden'
+        '404':
+          $ref: '#/components/responses/NotFound'
+        '405':
+          $ref: '#/components/responses/MethodNotAllowed'
+        '406':
+          $ref: '#/components/responses/NotAcceptable'
+        '409':
+          $ref: '#/components/responses/Conflict'
+        '422':
+          $ref: '#/components/responses/UnprocessableEntity'
+        '500':
+          $ref: '#/components/responses/InternalServerError'
+        '503':
+          $ref: '#/components/responses/ServiceUnavailable'
+        '5XX':
+          $ref: '#/components/responses/UnexpectedError'
+        default:
+          $ref: '#/components/responses/UnexpectedError'
+  '/admin/v1/projects':
+    get:
+      tags:
+        - "Identity"
+        - "Admin"
+      summary: Query information about multiple Projects
+      description: Query information about multiple Projects
+      operationId: getProjects
+      responses:
+        '200':
+          description: OK
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/ArrayOfProjectInfo'
+            application/yaml:
+              schema:
+                $ref: '#/components/schemas/ArrayOfProjectInfo'
+        '400':
+          $ref: '#/components/responses/BadRequest'
+        '401':
+          $ref: '#/components/responses/Unauthorized'
+        '403':
+          $ref: '#/components/responses/Forbidden'
+        '404':
+          $ref: '#/components/responses/NotFound'
+        '405':
+          $ref: '#/components/responses/MethodNotAllowed'
+        '406':
+          $ref: '#/components/responses/NotAcceptable'
+        '409':
+          $ref: '#/components/responses/Conflict'
+        '422':
+          $ref: '#/components/responses/UnprocessableEntity'
+        '500':
+          $ref: '#/components/responses/InternalServerError'
+        '503':
+          $ref: '#/components/responses/ServiceUnavailable'
+        '5XX':
+          $ref: '#/components/responses/UnexpectedError'
+        default:
+          $ref: '#/components/responses/UnexpectedError'
+    post:
+      tags:
+        - "Identity"
+        - "Admin"
+      summary: Create a new Project
+      description: Create a new Project
+      operationId: createProject
+      requestBody:
+        $ref: '#/components/requestBodies/CreateProjectRequest'
+      responses:
+        '201':
+          description: Created
+          headers:
+            Location:
+              schema:
+                type: string
+                format: uri
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/ObjectId'
+            application/yaml:
+              schema:
+                $ref: '#/components/schemas/ObjectId'
+        '400':
+          $ref: '#/components/responses/BadRequest'
+        '401':
+          $ref: '#/components/responses/Unauthorized'
+        '403':
+          $ref: '#/components/responses/Forbidden'
+        '404':
+          $ref: '#/components/responses/NotFound'
+        '405':
+          $ref: '#/components/responses/MethodNotAllowed'
+        '406':
+          $ref: '#/components/responses/NotAcceptable'
+        '409':
+          $ref: '#/components/responses/Conflict'
+        '422':
+          $ref: '#/components/responses/UnprocessableEntity'
+        '500':
+          $ref: '#/components/responses/InternalServerError'
+        '503':
+          $ref: '#/components/responses/ServiceUnavailable'
+        '5XX':
+          $ref: '#/components/responses/UnexpectedError'
+        default:
+          $ref: '#/components/responses/UnexpectedError'
+  '/admin/v1/projects/{projectId}':
+    parameters:
+      - name: projectId
+        in: path
+        required: true
+        description: Project ID/Name
+        schema:
+          type: string
+    get:
+      tags:
+        - "Identity"
+        - "Admin"
+      summary: Query information about an individual Project
+      description: Query information about an individual Project
+      operationId: getProject
+      responses:
+        '200':
+          description: OK
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/ProjectInfo'
+            application/yaml:
+              schema:
+                $ref: '#/components/schemas/ProjectInfo'
+        '400':
+          $ref: '#/components/responses/BadRequest'
+        '401':
+          $ref: '#/components/responses/Unauthorized'
+        '403':
+          $ref: '#/components/responses/Forbidden'
+        '404':
+          $ref: '#/components/responses/NotFound'
+        '405':
+          $ref: '#/components/responses/MethodNotAllowed'
+        '406':
+          $ref: '#/components/responses/NotAcceptable'
+        '409':
+          $ref: '#/components/responses/Conflict'
+        '422':
+          $ref: '#/components/responses/UnprocessableEntity'
+        '500':
+          $ref: '#/components/responses/InternalServerError'
+        '503':
+          $ref: '#/components/responses/ServiceUnavailable'
+        '5XX':
+          $ref: '#/components/responses/UnexpectedError'
+        default:
+          $ref: '#/components/responses/UnexpectedError'
+    patch:
+      tags:
+        - "Identity"
+        - "Admin"
+      summary: Modify a Project
+      description: Modify a Project
+      operationId: editProject
+      requestBody:
+        $ref: '#/components/requestBodies/EditProjectRequest'
+      responses:
+        '204':
+          description: No Content
+        '400':
+          $ref: '#/components/responses/BadRequest'
+        '401':
+          $ref: '#/components/responses/Unauthorized'
+        '403':
+          $ref: '#/components/responses/Forbidden'
+        '404':
+          $ref: '#/components/responses/NotFound'
+        '405':
+          $ref: '#/components/responses/MethodNotAllowed'
+        '406':
+          $ref: '#/components/responses/NotAcceptable'
+        '409':
+          $ref: '#/components/responses/Conflict'
+        '422':
+          $ref: '#/components/responses/UnprocessableEntity'
+        '500':
+          $ref: '#/components/responses/InternalServerError'
+        '503':
+          $ref: '#/components/responses/ServiceUnavailable'
+        '5XX':
+          $ref: '#/components/responses/UnexpectedError'
+        default:
+          $ref: '#/components/responses/UnexpectedError'
+    delete:
+      tags:
+        - "Identity"
+        - "Admin"
+      summary: Delete a Project
+      description: Delete a Project
+      operationId: deleteProject
+      responses:
+        '204':
+          description: No Content
+        '400':
+          $ref: '#/components/responses/BadRequest'
+        '401':
+          $ref: '#/components/responses/Unauthorized'
+        '403':
+          $ref: '#/components/responses/Forbidden'
+        '404':
+          $ref: '#/components/responses/NotFound'
+        '405':
+          $ref: '#/components/responses/MethodNotAllowed'
+        '406':
+          $ref: '#/components/responses/NotAcceptable'
+        '409':
+          $ref: '#/components/responses/Conflict'
+        '422':
+          $ref: '#/components/responses/UnprocessableEntity'
+        '500':
+          $ref: '#/components/responses/InternalServerError'
+        '503':
+          $ref: '#/components/responses/ServiceUnavailable'
+        '5XX':
+          $ref: '#/components/responses/UnexpectedError'
+        default:
+          $ref: '#/components/responses/UnexpectedError'
+  '/admin/v1/roles':
+    get:
+      tags:
+        - "Identity"
+        - "Admin"
+      summary: Query information about multiple Roles
+      description: Query information about multiple Roles
+      operationId: getRoles
+      responses:
+        '200':
+          description: OK
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/ArrayOfRoleInfo'
+            application/yaml:
+              schema:
+                $ref: '#/components/schemas/ArrayOfRoleInfo'
+        '400':
+          $ref: '#/components/responses/BadRequest'
+        '401':
+          $ref: '#/components/responses/Unauthorized'
+        '403':
+          $ref: '#/components/responses/Forbidden'
+        '404':
+          $ref: '#/components/responses/NotFound'
+        '405':
+          $ref: '#/components/responses/MethodNotAllowed'
+        '406':
+          $ref: '#/components/responses/NotAcceptable'
+        '409':
+          $ref: '#/components/responses/Conflict'
+        '422':
+          $ref: '#/components/responses/UnprocessableEntity'
+        '500':
+          $ref: '#/components/responses/InternalServerError'
+        '503':
+          $ref: '#/components/responses/ServiceUnavailable'
+        '5XX':
+          $ref: '#/components/responses/UnexpectedError'
+        default:
+          $ref: '#/components/responses/UnexpectedError'
+    post:
+      tags:
+        - "Identity"
+        - "Admin"
+      summary: Create a new Role
+      description: Create a new Role
+      operationId: createRole
+      requestBody:
+        $ref: '#/components/requestBodies/CreateRoleRequest'
+      responses:
+        '201':
+          description: Created
+          headers:
+            Location:
+              schema:
+                type: string
+                format: uri
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/ObjectId'
+            application/yaml:
+              schema:
+                $ref: '#/components/schemas/ObjectId'
+        '400':
+          $ref: '#/components/responses/BadRequest'
+        '401':
+          $ref: '#/components/responses/Unauthorized'
+        '403':
+          $ref: '#/components/responses/Forbidden'
+        '404':
+          $ref: '#/components/responses/NotFound'
+        '405':
+          $ref: '#/components/responses/MethodNotAllowed'
+        '406':
+          $ref: '#/components/responses/NotAcceptable'
+        '409':
+          $ref: '#/components/responses/Conflict'
+        '422':
+          $ref: '#/components/responses/UnprocessableEntity'
+        '500':
+          $ref: '#/components/responses/InternalServerError'
+        '503':
+          $ref: '#/components/responses/ServiceUnavailable'
+        '5XX':
+          $ref: '#/components/responses/UnexpectedError'
+        default:
+          $ref: '#/components/responses/UnexpectedError'
+  '/admin/v1/roles/{roleId}':
+    parameters:
+      - name: roleId
+        in: path
+        required: true
+        description: Role ID/Name
+        schema:
+          type: string
+    get:
+      tags:
+        - "Identity"
+        - "Admin"
+      summary: Query information about an individual Role
+      description: Query information about an individual Role
+      operationId: getRole
+      responses:
+        '200':
+          description: OK
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/RoleInfo'
+            application/yaml:
+              schema:
+                $ref: '#/components/schemas/RoleInfo'
+        '400':
+          $ref: '#/components/responses/BadRequest'
+        '401':
+          $ref: '#/components/responses/Unauthorized'
+        '403':
+          $ref: '#/components/responses/Forbidden'
+        '404':
+          $ref: '#/components/responses/NotFound'
+        '405':
+          $ref: '#/components/responses/MethodNotAllowed'
+        '406':
+          $ref: '#/components/responses/NotAcceptable'
+        '409':
+          $ref: '#/components/responses/Conflict'
+        '422':
+          $ref: '#/components/responses/UnprocessableEntity'
+        '500':
+          $ref: '#/components/responses/InternalServerError'
+        '503':
+          $ref: '#/components/responses/ServiceUnavailable'
+        '5XX':
+          $ref: '#/components/responses/UnexpectedError'
+        default:
+          $ref: '#/components/responses/UnexpectedError'
+    patch:
+      tags:
+        - "Identity"
+        - "Admin"
+      summary: Modify a Role
+      description: Modify a Role
+      operationId: editRole
+      requestBody:
+        $ref: '#/components/requestBodies/EditRoleRequest'
+      responses:
+        '204':
+          description: No Content
+        '400':
+          $ref: '#/components/responses/BadRequest'
+        '401':
+          $ref: '#/components/responses/Unauthorized'
+        '403':
+          $ref: '#/components/responses/Forbidden'
+        '404':
+          $ref: '#/components/responses/NotFound'
+        '405':
+          $ref: '#/components/responses/MethodNotAllowed'
+        '406':
+          $ref: '#/components/responses/NotAcceptable'
+        '409':
+          $ref: '#/components/responses/Conflict'
+        '422':
+          $ref: '#/components/responses/UnprocessableEntity'
+        '500':
+          $ref: '#/components/responses/InternalServerError'
+        '503':
+          $ref: '#/components/responses/ServiceUnavailable'
+        '5XX':
+          $ref: '#/components/responses/UnexpectedError'
+        default:
+          $ref: '#/components/responses/UnexpectedError'
+    delete:
+      tags:
+        - "Identity"
+        - "Admin"
+      summary: Delete a Role
+      description: Delete a Role
+      operationId: deleteRole
+      responses:
+        '204':
+          description: No Content
+        '400':
+          $ref: '#/components/responses/BadRequest'
+        '401':
+          $ref: '#/components/responses/Unauthorized'
+        '403':
+          $ref: '#/components/responses/Forbidden'
+        '404':
+          $ref: '#/components/responses/NotFound'
+        '405':
+          $ref: '#/components/responses/MethodNotAllowed'
+        '406':
+          $ref: '#/components/responses/NotAcceptable'
+        '409':
+          $ref: '#/components/responses/Conflict'
+        '422':
+          $ref: '#/components/responses/UnprocessableEntity'
+        '500':
+          $ref: '#/components/responses/InternalServerError'
+        '503':
+          $ref: '#/components/responses/ServiceUnavailable'
+        '5XX':
+          $ref: '#/components/responses/UnexpectedError'
+        default:
+          $ref: '#/components/responses/UnexpectedError'
+  '/admin/v1/vims':
+    get:
+      tags:
+        - "Infrastructure"
+        - "Admin"
+      summary: Query information about multiple VIMs
+      description: Query information about multiple VIMs
+      operationId: getVIMs
+      responses:
+        '200':
+          description: OK
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/ArrayOfVimInfo'
+            application/yaml:
+              schema:
+                $ref: '#/components/schemas/ArrayOfVimInfo'
+        '400':
+          $ref: '#/components/responses/BadRequest'
+        '401':
+          $ref: '#/components/responses/Unauthorized'
+        '403':
+          $ref: '#/components/responses/Forbidden'
+        '404':
+          $ref: '#/components/responses/NotFound'
+        '405':
+          $ref: '#/components/responses/MethodNotAllowed'
+        '406':
+          $ref: '#/components/responses/NotAcceptable'
+        '409':
+          $ref: '#/components/responses/Conflict'
+        '422':
+          $ref: '#/components/responses/UnprocessableEntity'
+        '500':
+          $ref: '#/components/responses/InternalServerError'
+        '503':
+          $ref: '#/components/responses/ServiceUnavailable'
+        '5XX':
+          $ref: '#/components/responses/UnexpectedError'
+        default:
+          $ref: '#/components/responses/UnexpectedError'
+    post:
+      tags:
+        - "Infrastructure"
+        - "Admin"
+      summary: Create a new VIM
+      description: Create a new VIM
+      operationId: createVIM
+      requestBody:
+        $ref: '#/components/requestBodies/CreateVimRequest'
+      responses:
+        '202':
+          description: Accepted
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/ObjectId_plus_OpId'
+            application/yaml:
+              schema:
+                $ref: '#/components/schemas/ObjectId_plus_OpId'
+        '400':
+          $ref: '#/components/responses/BadRequest'
+        '401':
+          $ref: '#/components/responses/Unauthorized'
+        '403':
+          $ref: '#/components/responses/Forbidden'
+        '404':
+          $ref: '#/components/responses/NotFound'
+        '405':
+          $ref: '#/components/responses/MethodNotAllowed'
+        '406':
+          $ref: '#/components/responses/NotAcceptable'
+        '409':
+          $ref: '#/components/responses/Conflict'
+        '422':
+          $ref: '#/components/responses/UnprocessableEntity'
+        '500':
+          $ref: '#/components/responses/InternalServerError'
+        '503':
+          $ref: '#/components/responses/ServiceUnavailable'
+        '5XX':
+          $ref: '#/components/responses/UnexpectedError'
+        default:
+          $ref: '#/components/responses/UnexpectedError'
+  '/admin/v1/vims/{vimId}':
+    parameters:
+      - name: vimId
+        in: path
+        required: true
+        description: VIM ID
+        schema:
+          type: string
+          format: uuid
+    get:
+      tags:
+        - "Infrastructure"
+        - "Admin"
+      summary: Query information about an individual VIM
+      description: Query information about an individual VIM
+      operationId: getVIM
+      responses:
+        '200':
+          description: OK
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/VimInfo'
+            application/yaml:
+              schema:
+                $ref: '#/components/schemas/VimInfo'
+        '400':
+          $ref: '#/components/responses/BadRequest'
+        '401':
+          $ref: '#/components/responses/Unauthorized'
+        '403':
+          $ref: '#/components/responses/Forbidden'
+        '404':
+          $ref: '#/components/responses/NotFound'
+        '405':
+          $ref: '#/components/responses/MethodNotAllowed'
+        '406':
+          $ref: '#/components/responses/NotAcceptable'
+        '409':
+          $ref: '#/components/responses/Conflict'
+        '422':
+          $ref: '#/components/responses/UnprocessableEntity'
+        '500':
+          $ref: '#/components/responses/InternalServerError'
+        '503':
+          $ref: '#/components/responses/ServiceUnavailable'
+        '5XX':
+          $ref: '#/components/responses/UnexpectedError'
+        default:
+          $ref: '#/components/responses/UnexpectedError'
+    patch:
+      tags:
+        - "Infrastructure"
+        - "Admin"
+      summary: Modify a VIM
+      description: Modify a VIM
+      operationId: editVIM
+      requestBody:
+        $ref: '#/components/requestBodies/EditVimRequest'
+      responses:
+        '202':
+          description: Accepted
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/OpId'
+            application/yaml:
+              schema:
+                $ref: '#/components/schemas/OpId'
+        '400':
+          $ref: '#/components/responses/BadRequest'
+        '401':
+          $ref: '#/components/responses/Unauthorized'
+        '403':
+          $ref: '#/components/responses/Forbidden'
+        '404':
+          $ref: '#/components/responses/NotFound'
+        '405':
+          $ref: '#/components/responses/MethodNotAllowed'
+        '406':
+          $ref: '#/components/responses/NotAcceptable'
+        '409':
+          $ref: '#/components/responses/Conflict'
+        '422':
+          $ref: '#/components/responses/UnprocessableEntity'
+        '500':
+          $ref: '#/components/responses/InternalServerError'
+        '503':
+          $ref: '#/components/responses/ServiceUnavailable'
+        '5XX':
+          $ref: '#/components/responses/UnexpectedError'
+        default:
+          $ref: '#/components/responses/UnexpectedError'
+    delete:
+      tags:
+        - "Infrastructure"
+        - "Admin"
+      summary: Delete a VIM
+      description: Delete a VIM
+      operationId: deleteVIM
+      responses:
+        '202':
+          description: Accepted
+        '400':
+          $ref: '#/components/responses/BadRequest'
+        '401':
+          $ref: '#/components/responses/Unauthorized'
+        '403':
+          $ref: '#/components/responses/Forbidden'
+        '404':
+          $ref: '#/components/responses/NotFound'
+        '405':
+          $ref: '#/components/responses/MethodNotAllowed'
+        '406':
+          $ref: '#/components/responses/NotAcceptable'
+        '409':
+          $ref: '#/components/responses/Conflict'
+        '422':
+          $ref: '#/components/responses/UnprocessableEntity'
+        '500':
+          $ref: '#/components/responses/InternalServerError'
+        '503':
+          $ref: '#/components/responses/ServiceUnavailable'
+        '5XX':
+          $ref: '#/components/responses/UnexpectedError'
+        default:
+          $ref: '#/components/responses/UnexpectedError'
+  '/admin/v1/vim_accounts':
+    get:
+      tags:
+        - "Infrastructure"
+        - "Admin"
+      summary: Query information about multiple VIM Accounts
+      description: Query information about multiple VIM Accounts
+      operationId: getVimAccounts
+      responses:
+        '200':
+          description: OK
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/ArrayOfVimInfo'
+            application/yaml:
+              schema:
+                $ref: '#/components/schemas/ArrayOfVimInfo'
+        '400':
+          $ref: '#/components/responses/BadRequest'
+        '401':
+          $ref: '#/components/responses/Unauthorized'
+        '403':
+          $ref: '#/components/responses/Forbidden'
+        '404':
+          $ref: '#/components/responses/NotFound'
+        '405':
+          $ref: '#/components/responses/MethodNotAllowed'
+        '406':
+          $ref: '#/components/responses/NotAcceptable'
+        '409':
+          $ref: '#/components/responses/Conflict'
+        '422':
+          $ref: '#/components/responses/UnprocessableEntity'
+        '500':
+          $ref: '#/components/responses/InternalServerError'
+        '503':
+          $ref: '#/components/responses/ServiceUnavailable'
+        '5XX':
+          $ref: '#/components/responses/UnexpectedError'
+        default:
+          $ref: '#/components/responses/UnexpectedError'
+    post:
+      tags:
+        - "Infrastructure"
+        - "Admin"
+      summary: Create a new VIM Account
+      description: Create a new VIM Account
+      operationId: createVimAccount
+      requestBody:
+        $ref: '#/components/requestBodies/CreateVimRequest'
+      responses:
+        '202':
+          description: Accepted
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/ObjectId_plus_OpId'
+            application/yaml:
+              schema:
+                $ref: '#/components/schemas/ObjectId_plus_OpId'
+        '400':
+          $ref: '#/components/responses/BadRequest'
+        '401':
+          $ref: '#/components/responses/Unauthorized'
+        '403':
+          $ref: '#/components/responses/Forbidden'
+        '404':
+          $ref: '#/components/responses/NotFound'
+        '405':
+          $ref: '#/components/responses/MethodNotAllowed'
+        '406':
+          $ref: '#/components/responses/NotAcceptable'
+        '409':
+          $ref: '#/components/responses/Conflict'
+        '422':
+          $ref: '#/components/responses/UnprocessableEntity'
+        '500':
+          $ref: '#/components/responses/InternalServerError'
+        '503':
+          $ref: '#/components/responses/ServiceUnavailable'
+        '5XX':
+          $ref: '#/components/responses/UnexpectedError'
+        default:
+          $ref: '#/components/responses/UnexpectedError'
+  '/admin/v1/vim_accounts/{vimAccountId}':
+    parameters:
+      - name: vimAccountId
+        in: path
+        required: true
+        description: VIM Account ID
+        schema:
+          type: string
+          format: uuid
+    get:
+      tags:
+        - "Infrastructure"
+        - "Admin"
+      summary: Query information about an individual VIM Account
+      description: Query information about an individual VIM Account
+      operationId: getVimAccount
+      responses:
+        '200':
+          description: OK
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/VimInfo'
+            application/yaml:
+              schema:
+                $ref: '#/components/schemas/VimInfo'
+        '400':
+          $ref: '#/components/responses/BadRequest'
+        '401':
+          $ref: '#/components/responses/Unauthorized'
+        '403':
+          $ref: '#/components/responses/Forbidden'
+        '404':
+          $ref: '#/components/responses/NotFound'
+        '405':
+          $ref: '#/components/responses/MethodNotAllowed'
+        '406':
+          $ref: '#/components/responses/NotAcceptable'
+        '409':
+          $ref: '#/components/responses/Conflict'
+        '422':
+          $ref: '#/components/responses/UnprocessableEntity'
+        '500':
+          $ref: '#/components/responses/InternalServerError'
+        '503':
+          $ref: '#/components/responses/ServiceUnavailable'
+        '5XX':
+          $ref: '#/components/responses/UnexpectedError'
+        default:
+          $ref: '#/components/responses/UnexpectedError'
+    patch:
+      tags:
+        - "Infrastructure"
+        - "Admin"
+      summary: Modify a VIM Account
+      description: Modify a VIM Account
+      operationId: editVimAccount
+      requestBody:
+        $ref: '#/components/requestBodies/EditVimRequest'
+      responses:
+        '202':
+          description: Accepted
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/OpId'
+            application/yaml:
+              schema:
+                $ref: '#/components/schemas/OpId'
+        '400':
+          $ref: '#/components/responses/BadRequest'
+        '401':
+          $ref: '#/components/responses/Unauthorized'
+        '403':
+          $ref: '#/components/responses/Forbidden'
+        '404':
+          $ref: '#/components/responses/NotFound'
+        '405':
+          $ref: '#/components/responses/MethodNotAllowed'
+        '406':
+          $ref: '#/components/responses/NotAcceptable'
+        '409':
+          $ref: '#/components/responses/Conflict'
+        '422':
+          $ref: '#/components/responses/UnprocessableEntity'
+        '500':
+          $ref: '#/components/responses/InternalServerError'
+        '503':
+          $ref: '#/components/responses/ServiceUnavailable'
+        '5XX':
+          $ref: '#/components/responses/UnexpectedError'
+        default:
+          $ref: '#/components/responses/UnexpectedError'
+    delete:
+      tags:
+        - "Infrastructure"
+        - "Admin"
+      summary: Delete a VIM Account
+      description: Delete a VIM Account
+      operationId: deleteVimAccount
+      responses:
+        '202':
+          description: Accepted
+        '400':
+          $ref: '#/components/responses/BadRequest'
+        '401':
+          $ref: '#/components/responses/Unauthorized'
+        '403':
+          $ref: '#/components/responses/Forbidden'
+        '404':
+          $ref: '#/components/responses/NotFound'
+        '405':
+          $ref: '#/components/responses/MethodNotAllowed'
+        '406':
+          $ref: '#/components/responses/NotAcceptable'
+        '409':
+          $ref: '#/components/responses/Conflict'
+        '422':
+          $ref: '#/components/responses/UnprocessableEntity'
+        '500':
+          $ref: '#/components/responses/InternalServerError'
+        '503':
+          $ref: '#/components/responses/ServiceUnavailable'
+        '5XX':
+          $ref: '#/components/responses/UnexpectedError'
+        default:
+          $ref: '#/components/responses/UnexpectedError'
+  '/admin/v1/wim_accounts':
+    get:
+      tags:
+        - "Infrastructure"
+        - "Admin"
+      summary: Query information about multiple WIM Accounts
+      description: Query information about multiple WIM Accounts
+      operationId: getWimAccounts
+      responses:
+        '200':
+          description: OK
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/ArrayOfWimInfo'
+            application/yaml:
+              schema:
+                $ref: '#/components/schemas/ArrayOfWimInfo'
+        '400':
+          $ref: '#/components/responses/BadRequest'
+        '401':
+          $ref: '#/components/responses/Unauthorized'
+        '403':
+          $ref: '#/components/responses/Forbidden'
+        '404':
+          $ref: '#/components/responses/NotFound'
+        '405':
+          $ref: '#/components/responses/MethodNotAllowed'
+        '406':
+          $ref: '#/components/responses/NotAcceptable'
+        '409':
+          $ref: '#/components/responses/Conflict'
+        '422':
+          $ref: '#/components/responses/UnprocessableEntity'
+        '500':
+          $ref: '#/components/responses/InternalServerError'
+        '503':
+          $ref: '#/components/responses/ServiceUnavailable'
+        '5XX':
+          $ref: '#/components/responses/UnexpectedError'
+        default:
+          $ref: '#/components/responses/UnexpectedError'
+    post:
+      tags:
+        - "Infrastructure"
+        - "Admin"
+      summary: Create a new WIM Account
+      description: Create a new WIM Account
+      operationId: createWimAccount
+      requestBody:
+        $ref: '#/components/requestBodies/CreateWimRequest'
+      responses:
+        '202':
+          description: Accepted
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/ObjectId_plus_OpId'
+            application/yaml:
+              schema:
+                $ref: '#/components/schemas/ObjectId_plus_OpId'
+        '400':
+          $ref: '#/components/responses/BadRequest'
+        '401':
+          $ref: '#/components/responses/Unauthorized'
+        '403':
+          $ref: '#/components/responses/Forbidden'
+        '404':
+          $ref: '#/components/responses/NotFound'
+        '405':
+          $ref: '#/components/responses/MethodNotAllowed'
+        '406':
+          $ref: '#/components/responses/NotAcceptable'
+        '409':
+          $ref: '#/components/responses/Conflict'
+        '422':
+          $ref: '#/components/responses/UnprocessableEntity'
+        '500':
+          $ref: '#/components/responses/InternalServerError'
+        '503':
+          $ref: '#/components/responses/ServiceUnavailable'
+        '5XX':
+          $ref: '#/components/responses/UnexpectedError'
+        default:
+          $ref: '#/components/responses/UnexpectedError'
+  '/admin/v1/wim_accounts/{wimAccountId}':
+    parameters:
+      - name: wimAccountId
+        in: path
+        required: true
+        description: WIM Account ID
+        schema:
+          type: string
+          format: uuid
+    get:
+      tags:
+        - "Infrastructure"
+        - "Admin"
+      summary: Query information about an individual WIM Account
+      description: Query information about an individual WIM Account
+      operationId: getWimAccount
+      responses:
+        '200':
+          description: OK
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/WimInfo'
+            application/yaml:
+              schema:
+                $ref: '#/components/schemas/WimInfo'
+        '400':
+          $ref: '#/components/responses/BadRequest'
+        '401':
+          $ref: '#/components/responses/Unauthorized'
+        '403':
+          $ref: '#/components/responses/Forbidden'
+        '404':
+          $ref: '#/components/responses/NotFound'
+        '405':
+          $ref: '#/components/responses/MethodNotAllowed'
+        '406':
+          $ref: '#/components/responses/NotAcceptable'
+        '409':
+          $ref: '#/components/responses/Conflict'
+        '422':
+          $ref: '#/components/responses/UnprocessableEntity'
+        '500':
+          $ref: '#/components/responses/InternalServerError'
+        '503':
+          $ref: '#/components/responses/ServiceUnavailable'
+        '5XX':
+          $ref: '#/components/responses/UnexpectedError'
+        default:
+          $ref: '#/components/responses/UnexpectedError'
+    patch:
+      tags:
+        - "Infrastructure"
+        - "Admin"
+      summary: Modify a WIM Account
+      description: Modify a WIM Account
+      operationId: editWimAccount
+      requestBody:
+        $ref: '#/components/requestBodies/EditWimRequest'
+      responses:
+        '202':
+          description: Accepted
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/OpId'
+            application/yaml:
+              schema:
+                $ref: '#/components/schemas/OpId'
+        '400':
+          $ref: '#/components/responses/BadRequest'
+        '401':
+          $ref: '#/components/responses/Unauthorized'
+        '403':
+          $ref: '#/components/responses/Forbidden'
+        '404':
+          $ref: '#/components/responses/NotFound'
+        '405':
+          $ref: '#/components/responses/MethodNotAllowed'
+        '406':
+          $ref: '#/components/responses/NotAcceptable'
+        '409':
+          $ref: '#/components/responses/Conflict'
+        '422':
+          $ref: '#/components/responses/UnprocessableEntity'
+        '500':
+          $ref: '#/components/responses/InternalServerError'
+        '503':
+          $ref: '#/components/responses/ServiceUnavailable'
+        '5XX':
+          $ref: '#/components/responses/UnexpectedError'
+        default:
+          $ref: '#/components/responses/UnexpectedError'
+    delete:
+      tags:
+        - "Infrastructure"
+        - "Admin"
+      summary: Delete a WIM Account
+      description: Delete a WIM Account
+      operationId: deleteWimAccount
+      responses:
+        '202':
+          description: Accepted
+        '400':
+          $ref: '#/components/responses/BadRequest'
+        '401':
+          $ref: '#/components/responses/Unauthorized'
+        '403':
+          $ref: '#/components/responses/Forbidden'
+        '404':
+          $ref: '#/components/responses/NotFound'
+        '405':
+          $ref: '#/components/responses/MethodNotAllowed'
+        '406':
+          $ref: '#/components/responses/NotAcceptable'
+        '409':
+          $ref: '#/components/responses/Conflict'
+        '422':
+          $ref: '#/components/responses/UnprocessableEntity'
+        '500':
+          $ref: '#/components/responses/InternalServerError'
+        '503':
+          $ref: '#/components/responses/ServiceUnavailable'
+        '5XX':
+          $ref: '#/components/responses/UnexpectedError'
+        default:
+          $ref: '#/components/responses/UnexpectedError'
+  '/admin/v1/sdns':
+    get:
+      tags:
+        - "Infrastructure"
+        - "Admin"
+      summary: Query information about multiple SDNs
+      description: Query information about multiple SDNs
+      operationId: getSDNs
+      responses:
+        '200':
+          description: OK
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/ArrayOfSdnInfo'
+            application/yaml:
+              schema:
+                $ref: '#/components/schemas/ArrayOfSdnInfo'
+        '400':
+          $ref: '#/components/responses/BadRequest'
+        '401':
+          $ref: '#/components/responses/Unauthorized'
+        '403':
+          $ref: '#/components/responses/Forbidden'
+        '404':
+          $ref: '#/components/responses/NotFound'
+        '405':
+          $ref: '#/components/responses/MethodNotAllowed'
+        '406':
+          $ref: '#/components/responses/NotAcceptable'
+        '409':
+          $ref: '#/components/responses/Conflict'
+        '422':
+          $ref: '#/components/responses/UnprocessableEntity'
+        '500':
+          $ref: '#/components/responses/InternalServerError'
+        '503':
+          $ref: '#/components/responses/ServiceUnavailable'
+        '5XX':
+          $ref: '#/components/responses/UnexpectedError'
+        default:
+          $ref: '#/components/responses/UnexpectedError'
+    post:
+      tags:
+        - "Infrastructure"
+        - "Admin"
+      summary: Create a new SDN
+      description: Create a new SDN
+      operationId: createSDN
+      requestBody:
+        $ref: '#/components/requestBodies/CreateSdnRequest'
+      responses:
+        '202':
+          description: Accepted
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/ObjectId_plus_OpId'
+            application/yaml:
+              schema:
+                $ref: '#/components/schemas/ObjectId_plus_OpId'
+        '400':
+          $ref: '#/components/responses/BadRequest'
+        '401':
+          $ref: '#/components/responses/Unauthorized'
+        '403':
+          $ref: '#/components/responses/Forbidden'
+        '404':
+          $ref: '#/components/responses/NotFound'
+        '405':
+          $ref: '#/components/responses/MethodNotAllowed'
+        '406':
+          $ref: '#/components/responses/NotAcceptable'
+        '409':
+          $ref: '#/components/responses/Conflict'
+        '422':
+          $ref: '#/components/responses/UnprocessableEntity'
+        '500':
+          $ref: '#/components/responses/InternalServerError'
+        '503':
+          $ref: '#/components/responses/ServiceUnavailable'
+        '5XX':
+          $ref: '#/components/responses/UnexpectedError'
+        default:
+          $ref: '#/components/responses/UnexpectedError'
+  '/admin/v1/sdns/{sdnId}':
+    parameters:
+      - name: sdnId
+        in: path
+        required: true
+        description: SDN ID
+        schema:
+          type: string
+          format: uuid
+    get:
+      tags:
+        - "Infrastructure"
+        - "Admin"
+      summary: Query information about an individual SDN
+      description: Query information about an individual SDN
+      operationId: getSDN
+      responses:
+        '200':
+          description: OK
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/SdnInfo'
+            application/yaml:
+              schema:
+                $ref: '#/components/schemas/SdnInfo'
+        '400':
+          $ref: '#/components/responses/BadRequest'
+        '401':
+          $ref: '#/components/responses/Unauthorized'
+        '403':
+          $ref: '#/components/responses/Forbidden'
+        '404':
+          $ref: '#/components/responses/NotFound'
+        '405':
+          $ref: '#/components/responses/MethodNotAllowed'
+        '406':
+          $ref: '#/components/responses/NotAcceptable'
+        '409':
+          $ref: '#/components/responses/Conflict'
+        '422':
+          $ref: '#/components/responses/UnprocessableEntity'
+        '500':
+          $ref: '#/components/responses/InternalServerError'
+        '503':
+          $ref: '#/components/responses/ServiceUnavailable'
+        '5XX':
+          $ref: '#/components/responses/UnexpectedError'
+        default:
+          $ref: '#/components/responses/UnexpectedError'
+    patch:
+      tags:
+        - "Infrastructure"
+        - "Admin"
+      summary: Modify a SDN
+      description: Modify a SDN
+      operationId: editSDN
+      requestBody:
+        $ref: '#/components/requestBodies/EditSdnRequest'
+      responses:
+        '202':
+          description: Accepted
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/OpId'
+            application/yaml:
+              schema:
+                $ref: '#/components/schemas/OpId'
+        '400':
+          $ref: '#/components/responses/BadRequest'
+        '401':
+          $ref: '#/components/responses/Unauthorized'
+        '403':
+          $ref: '#/components/responses/Forbidden'
+        '404':
+          $ref: '#/components/responses/NotFound'
+        '405':
+          $ref: '#/components/responses/MethodNotAllowed'
+        '406':
+          $ref: '#/components/responses/NotAcceptable'
+        '409':
+          $ref: '#/components/responses/Conflict'
+        '422':
+          $ref: '#/components/responses/UnprocessableEntity'
+        '500':
+          $ref: '#/components/responses/InternalServerError'
+        '503':
+          $ref: '#/components/responses/ServiceUnavailable'
+        '5XX':
+          $ref: '#/components/responses/UnexpectedError'
+        default:
+          $ref: '#/components/responses/UnexpectedError'
+    delete:
+      tags:
+        - "Infrastructure"
+        - "Admin"
+      summary: Delete a SDN
+      description: Delete a SDN
+      operationId: deleteSDN
+      responses:
+        '202':
+          description: Accepted
+        '400':
+          $ref: '#/components/responses/BadRequest'
+        '401':
+          $ref: '#/components/responses/Unauthorized'
+        '403':
+          $ref: '#/components/responses/Forbidden'
+        '404':
+          $ref: '#/components/responses/NotFound'
+        '405':
+          $ref: '#/components/responses/MethodNotAllowed'
+        '406':
+          $ref: '#/components/responses/NotAcceptable'
+        '409':
+          $ref: '#/components/responses/Conflict'
+        '422':
+          $ref: '#/components/responses/UnprocessableEntity'
+        '500':
+          $ref: '#/components/responses/InternalServerError'
+        '503':
+          $ref: '#/components/responses/ServiceUnavailable'
+        '5XX':
+          $ref: '#/components/responses/UnexpectedError'
+        default:
+          $ref: '#/components/responses/UnexpectedError'
+  '/admin/v1/k8sclusters':
+    get:
+      tags:
+        - "Infrastructure"
+        - "Admin"
+      summary: Query information about multiple K8s Clusters
+      description: Query information about multiple K8s Clusters
+      operationId: getK8sClusters
+      responses:
+        '200':
+          description: OK
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/ArrayOfK8sClusterInfo'
+            application/yaml:
+              schema:
+                $ref: '#/components/schemas/ArrayOfK8sClusterInfo'
+        '400':
+          $ref: '#/components/responses/BadRequest'
+        '401':
+          $ref: '#/components/responses/Unauthorized'
+        '403':
+          $ref: '#/components/responses/Forbidden'
+        '404':
+          $ref: '#/components/responses/NotFound'
+        '405':
+          $ref: '#/components/responses/MethodNotAllowed'
+        '406':
+          $ref: '#/components/responses/NotAcceptable'
+        '409':
+          $ref: '#/components/responses/Conflict'
+        '422':
+          $ref: '#/components/responses/UnprocessableEntity'
+        '500':
+          $ref: '#/components/responses/InternalServerError'
+        '503':
+          $ref: '#/components/responses/ServiceUnavailable'
+        '5XX':
+          $ref: '#/components/responses/UnexpectedError'
+        default:
+          $ref: '#/components/responses/UnexpectedError'
+    post:
+      tags:
+        - "Infrastructure"
+        - "Admin"
+      summary: Create a new K8s Cluster
+      description: Create a new K8s Cluster
+      operationId: createK8sCluster
+      requestBody:
+        $ref: '#/components/requestBodies/CreateK8sClusterRequest'
+      responses:
+        '202':
+          description: Accepted
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/ObjectId_plus_OpId'
+            application/yaml:
+              schema:
+                $ref: '#/components/schemas/ObjectId_plus_OpId'
+        '400':
+          $ref: '#/components/responses/BadRequest'
+        '401':
+          $ref: '#/components/responses/Unauthorized'
+        '403':
+          $ref: '#/components/responses/Forbidden'
+        '404':
+          $ref: '#/components/responses/NotFound'
+        '405':
+          $ref: '#/components/responses/MethodNotAllowed'
+        '406':
+          $ref: '#/components/responses/NotAcceptable'
+        '409':
+          $ref: '#/components/responses/Conflict'
+        '422':
+          $ref: '#/components/responses/UnprocessableEntity'
+        '500':
+          $ref: '#/components/responses/InternalServerError'
+        '503':
+          $ref: '#/components/responses/ServiceUnavailable'
+        '5XX':
+          $ref: '#/components/responses/UnexpectedError'
+        default:
+          $ref: '#/components/responses/UnexpectedError'
+  '/admin/v1/k8sclusters/{k8sClusterId}':
+    parameters:
+      - name: k8sClusterId
+        in: path
+        required: true
+        description: K8s Cluster ID
+        schema:
+          type: string
+          format: uuid
+    get:
+      tags:
+        - "Infrastructure"
+        - "Admin"
+      summary: Query information about an individual K8s Cluster
+      description: Query information about an individual K8s Cluster
+      operationId: getK8sCluster
+      responses:
+        '200':
+          description: OK
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/K8sClusterInfo'
+            application/yaml:
+              schema:
+                $ref: '#/components/schemas/K8sClusterInfo'
+        '400':
+          $ref: '#/components/responses/BadRequest'
+        '401':
+          $ref: '#/components/responses/Unauthorized'
+        '403':
+          $ref: '#/components/responses/Forbidden'
+        '404':
+          $ref: '#/components/responses/NotFound'
+        '405':
+          $ref: '#/components/responses/MethodNotAllowed'
+        '406':
+          $ref: '#/components/responses/NotAcceptable'
+        '409':
+          $ref: '#/components/responses/Conflict'
+        '422':
+          $ref: '#/components/responses/UnprocessableEntity'
+        '500':
+          $ref: '#/components/responses/InternalServerError'
+        '503':
+          $ref: '#/components/responses/ServiceUnavailable'
+        '5XX':
+          $ref: '#/components/responses/UnexpectedError'
+        default:
+          $ref: '#/components/responses/UnexpectedError'
+    patch:
+      tags:
+        - "Infrastructure"
+        - "Admin"
+      summary: Modify a K8s Cluster
+      description: Modify a K8s Cluster
+      operationId: editK8sCluster
+      requestBody:
+        $ref: '#/components/requestBodies/EditK8sClusterRequest'
+      responses:
+        '202':
+          description: Accepted
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/OpId'
+            application/yaml:
+              schema:
+                $ref: '#/components/schemas/OpId'
+        '400':
+          $ref: '#/components/responses/BadRequest'
+        '401':
+          $ref: '#/components/responses/Unauthorized'
+        '403':
+          $ref: '#/components/responses/Forbidden'
+        '404':
+          $ref: '#/components/responses/NotFound'
+        '405':
+          $ref: '#/components/responses/MethodNotAllowed'
+        '406':
+          $ref: '#/components/responses/NotAcceptable'
+        '409':
+          $ref: '#/components/responses/Conflict'
+        '422':
+          $ref: '#/components/responses/UnprocessableEntity'
+        '500':
+          $ref: '#/components/responses/InternalServerError'
+        '503':
+          $ref: '#/components/responses/ServiceUnavailable'
+        '5XX':
+          $ref: '#/components/responses/UnexpectedError'
+        default:
+          $ref: '#/components/responses/UnexpectedError'
+    delete:
+      tags:
+        - "Infrastructure"
+        - "Admin"
+      summary: Delete a K8s Cluster
+      description: Delete a K8s Cluster
+      operationId: deleteK8sCluster
+      responses:
+        '202':
+          description: Accepted
+        '400':
+          $ref: '#/components/responses/BadRequest'
+        '401':
+          $ref: '#/components/responses/Unauthorized'
+        '403':
+          $ref: '#/components/responses/Forbidden'
+        '404':
+          $ref: '#/components/responses/NotFound'
+        '405':
+          $ref: '#/components/responses/MethodNotAllowed'
+        '406':
+          $ref: '#/components/responses/NotAcceptable'
+        '409':
+          $ref: '#/components/responses/Conflict'
+        '422':
+          $ref: '#/components/responses/UnprocessableEntity'
+        '500':
+          $ref: '#/components/responses/InternalServerError'
+        '503':
+          $ref: '#/components/responses/ServiceUnavailable'
+        '5XX':
+          $ref: '#/components/responses/UnexpectedError'
+        default:
+          $ref: '#/components/responses/UnexpectedError'
+  '/admin/v1/vca':
+    get:
+      tags:
+        - "Infrastructure"
+        - "Admin"
+      summary: Query information about multiple VCAs
+      description: Query information about multiple VCAs
+      operationId: getVcas
+      responses:
+        '200':
+          description: OK
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/ArrayOfVcaInfo'
+            application/yaml:
+              schema:
+                $ref: '#/components/schemas/ArrayOfVcaInfo'
+        '400':
+          $ref: '#/components/responses/BadRequest'
+        '401':
+          $ref: '#/components/responses/Unauthorized'
+        '403':
+          $ref: '#/components/responses/Forbidden'
+        '404':
+          $ref: '#/components/responses/NotFound'
+        '405':
+          $ref: '#/components/responses/MethodNotAllowed'
+        '406':
+          $ref: '#/components/responses/NotAcceptable'
+        '409':
+          $ref: '#/components/responses/Conflict'
+        '422':
+          $ref: '#/components/responses/UnprocessableEntity'
+        '500':
+          $ref: '#/components/responses/InternalServerError'
+        '503':
+          $ref: '#/components/responses/ServiceUnavailable'
+        '5XX':
+          $ref: '#/components/responses/UnexpectedError'
+        default:
+          $ref: '#/components/responses/UnexpectedError'
+    post:
+      tags:
+        - "Infrastructure"
+        - "Admin"
+      summary: Create a new VCA
+      description: Create a new VCA
+      operationId: createVca
+      requestBody:
+        $ref: '#/components/requestBodies/CreateVcaRequest'
+      responses:
+        '202':
+          description: Accepted
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/ObjectId_plus_OpId'
+            application/yaml:
+              schema:
+                $ref: '#/components/schemas/ObjectId_plus_OpId'
+        '400':
+          $ref: '#/components/responses/BadRequest'
+        '401':
+          $ref: '#/components/responses/Unauthorized'
+        '403':
+          $ref: '#/components/responses/Forbidden'
+        '404':
+          $ref: '#/components/responses/NotFound'
+        '405':
+          $ref: '#/components/responses/MethodNotAllowed'
+        '406':
+          $ref: '#/components/responses/NotAcceptable'
+        '409':
+          $ref: '#/components/responses/Conflict'
+        '422':
+          $ref: '#/components/responses/UnprocessableEntity'
+        '500':
+          $ref: '#/components/responses/InternalServerError'
+        '503':
+          $ref: '#/components/responses/ServiceUnavailable'
+        '5XX':
+          $ref: '#/components/responses/UnexpectedError'
+        default:
+          $ref: '#/components/responses/UnexpectedError'
+  '/admin/v1/vca/{vcaId}':
+    parameters:
+      - name: vcaId
+        in: path
+        required: true
+        description: VCA ID
+        schema:
+          type: string
+          format: uuid
+    get:
+      tags:
+        - "Infrastructure"
+        - "Admin"
+      summary: Query information about an individual VCA
+      description: Query information about an individual VCA
+      operationId: getVca
+      responses:
+        '200':
+          description: OK
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/VcaInfo'
+            application/yaml:
+              schema:
+                $ref: '#/components/schemas/VcaInfo'
+        '400':
+          $ref: '#/components/responses/BadRequest'
+        '401':
+          $ref: '#/components/responses/Unauthorized'
+        '403':
+          $ref: '#/components/responses/Forbidden'
+        '404':
+          $ref: '#/components/responses/NotFound'
+        '405':
+          $ref: '#/components/responses/MethodNotAllowed'
+        '406':
+          $ref: '#/components/responses/NotAcceptable'
+        '409':
+          $ref: '#/components/responses/Conflict'
+        '422':
+          $ref: '#/components/responses/UnprocessableEntity'
+        '500':
+          $ref: '#/components/responses/InternalServerError'
+        '503':
+          $ref: '#/components/responses/ServiceUnavailable'
+        '5XX':
+          $ref: '#/components/responses/UnexpectedError'
+        default:
+          $ref: '#/components/responses/UnexpectedError'
+    patch:
+      tags:
+        - "Infrastructure"
+        - "Admin"
+      summary: Modify a VCA
+      description: Modify a VCA
+      operationId: editVca
+      requestBody:
+        $ref: '#/components/requestBodies/EditVcaRequest'
+      responses:
+        '202':
+          description: Accepted
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/OpId'
+            application/yaml:
+              schema:
+                $ref: '#/components/schemas/OpId'
+        '400':
+          $ref: '#/components/responses/BadRequest'
+        '401':
+          $ref: '#/components/responses/Unauthorized'
+        '403':
+          $ref: '#/components/responses/Forbidden'
+        '404':
+          $ref: '#/components/responses/NotFound'
+        '405':
+          $ref: '#/components/responses/MethodNotAllowed'
+        '406':
+          $ref: '#/components/responses/NotAcceptable'
+        '409':
+          $ref: '#/components/responses/Conflict'
+        '422':
+          $ref: '#/components/responses/UnprocessableEntity'
+        '500':
+          $ref: '#/components/responses/InternalServerError'
+        '503':
+          $ref: '#/components/responses/ServiceUnavailable'
+        '5XX':
+          $ref: '#/components/responses/UnexpectedError'
+        default:
+          $ref: '#/components/responses/UnexpectedError'
+    delete:
+      tags:
+        - "Infrastructure"
+        - "Admin"
+      summary: Delete a VCA
+      description: Delete a VCA
+      operationId: deleteVca
+      responses:
+        '202':
+          description: Accepted
+        '400':
+          $ref: '#/components/responses/BadRequest'
+        '401':
+          $ref: '#/components/responses/Unauthorized'
+        '403':
+          $ref: '#/components/responses/Forbidden'
+        '404':
+          $ref: '#/components/responses/NotFound'
+        '405':
+          $ref: '#/components/responses/MethodNotAllowed'
+        '406':
+          $ref: '#/components/responses/NotAcceptable'
+        '409':
+          $ref: '#/components/responses/Conflict'
+        '422':
+          $ref: '#/components/responses/UnprocessableEntity'
+        '500':
+          $ref: '#/components/responses/InternalServerError'
+        '503':
+          $ref: '#/components/responses/ServiceUnavailable'
+        '5XX':
+          $ref: '#/components/responses/UnexpectedError'
+        default:
+          $ref: '#/components/responses/UnexpectedError'
+  '/admin/v1/k8srepos':
+    get:
+      tags:
+        - "Repositories"
+        - "Admin"
+      summary: Query information about multiple K8s Repos
+      description: Query information about multiple K8s Repos
+      operationId: getK8sRepos
+      responses:
+        '200':
+          description: OK
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/ArrayOfK8sRepoInfo'
+            application/yaml:
+              schema:
+                $ref: '#/components/schemas/ArrayOfK8sRepoInfo'
+        '400':
+          $ref: '#/components/responses/BadRequest'
+        '401':
+          $ref: '#/components/responses/Unauthorized'
+        '403':
+          $ref: '#/components/responses/Forbidden'
+        '404':
+          $ref: '#/components/responses/NotFound'
+        '405':
+          $ref: '#/components/responses/MethodNotAllowed'
+        '406':
+          $ref: '#/components/responses/NotAcceptable'
+        '409':
+          $ref: '#/components/responses/Conflict'
+        '422':
+          $ref: '#/components/responses/UnprocessableEntity'
+        '500':
+          $ref: '#/components/responses/InternalServerError'
+        '503':
+          $ref: '#/components/responses/ServiceUnavailable'
+        '5XX':
+          $ref: '#/components/responses/UnexpectedError'
+        default:
+          $ref: '#/components/responses/UnexpectedError'
+    post:
+      tags:
+        - "Repositories"
+        - "Admin"
+      summary: Create a new K8s Repo
+      description: Create a new K8s Repo
+      operationId: createK8sRepo
+      requestBody:
+        $ref: '#/components/requestBodies/CreateK8sRepoRequest'
+      responses:
+        '202':
+          description: Accepted
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/ObjectId_plus_OpId'
+            application/yaml:
+              schema:
+                $ref: '#/components/schemas/ObjectId_plus_OpId'
+        '400':
+          $ref: '#/components/responses/BadRequest'
+        '401':
+          $ref: '#/components/responses/Unauthorized'
+        '403':
+          $ref: '#/components/responses/Forbidden'
+        '404':
+          $ref: '#/components/responses/NotFound'
+        '405':
+          $ref: '#/components/responses/MethodNotAllowed'
+        '406':
+          $ref: '#/components/responses/NotAcceptable'
+        '409':
+          $ref: '#/components/responses/Conflict'
+        '422':
+          $ref: '#/components/responses/UnprocessableEntity'
+        '500':
+          $ref: '#/components/responses/InternalServerError'
+        '503':
+          $ref: '#/components/responses/ServiceUnavailable'
+        '5XX':
+          $ref: '#/components/responses/UnexpectedError'
+        default:
+          $ref: '#/components/responses/UnexpectedError'
+  '/admin/v1/k8srepos/{k8sRepoId}':
+    parameters:
+      - name: k8sRepoId
+        in: path
+        required: true
+        description: K8s Repo ID
+        schema:
+          type: string
+          format: uuid
+    get:
+      tags:
+        - "Repositories"
+        - "Admin"
+      summary: Query information about an individual K8s Repo
+      description: Query information about an individual K8s Repo
+      operationId: getK8sRepo
+      responses:
+        '200':
+          description: OK
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/K8sRepoInfo'
+            application/yaml:
+              schema:
+                $ref: '#/components/schemas/K8sRepoInfo'
+        '400':
+          $ref: '#/components/responses/BadRequest'
+        '401':
+          $ref: '#/components/responses/Unauthorized'
+        '403':
+          $ref: '#/components/responses/Forbidden'
+        '404':
+          $ref: '#/components/responses/NotFound'
+        '405':
+          $ref: '#/components/responses/MethodNotAllowed'
+        '406':
+          $ref: '#/components/responses/NotAcceptable'
+        '409':
+          $ref: '#/components/responses/Conflict'
+        '422':
+          $ref: '#/components/responses/UnprocessableEntity'
+        '500':
+          $ref: '#/components/responses/InternalServerError'
+        '503':
+          $ref: '#/components/responses/ServiceUnavailable'
+        '5XX':
+          $ref: '#/components/responses/UnexpectedError'
+        default:
+          $ref: '#/components/responses/UnexpectedError'
+    delete:
+      tags:
+        - "Repositories"
+        - "Admin"
+      summary: Delete a K8s Repo
+      description: Delete a K8s Repo
+      operationId: deleteK8sRepo
+      responses:
+        '202':
+          description: Accepted
+        '400':
+          $ref: '#/components/responses/BadRequest'
+        '401':
+          $ref: '#/components/responses/Unauthorized'
+        '403':
+          $ref: '#/components/responses/Forbidden'
+        '404':
+          $ref: '#/components/responses/NotFound'
+        '405':
+          $ref: '#/components/responses/MethodNotAllowed'
+        '406':
+          $ref: '#/components/responses/NotAcceptable'
+        '409':
+          $ref: '#/components/responses/Conflict'
+        '422':
+          $ref: '#/components/responses/UnprocessableEntity'
+        '500':
+          $ref: '#/components/responses/InternalServerError'
+        '503':
+          $ref: '#/components/responses/ServiceUnavailable'
+        '5XX':
+          $ref: '#/components/responses/UnexpectedError'
+        default:
+          $ref: '#/components/responses/UnexpectedError'
+# END Admin
+
+externalDocs:
+  description: Find out more about OSM
+  url: 'https://osm.etsi.org/docs/user-guide/'
+
+components:
+  responses:
+    BadRequest:
+      description: Bad request. The server cannot process the request due to a client error.
+      content:
+        application/json:
+          schema:
+            $ref: '#/components/schemas/ProblemDetails'
+    Unauthorized:
+      description: Authorization information is missing or invalid.
+      content:
+        application/json:
+          schema:
+            $ref: '#/components/schemas/ProblemDetails'
+    Forbidden:
+      description: Not enough permissions to do this operation.
+      content:
+        application/json:
+          schema:
+            $ref: '#/components/schemas/ProblemDetails'
+    NotFound:
+      description: The specified resource was not found.
+      content:
+        application/json:
+          schema:
+            $ref: '#/components/schemas/ProblemDetails'
+    MethodNotAllowed:
+      description: This method is not supported for the requested resource.
+      content:
+        application/json:
+          schema:
+            $ref: '#/components/schemas/ProblemDetails'
+    NotAcceptable:
+      description: The requested resource content cannot match the Accept headers sent in the request.
+      content:
+        application/json:
+          schema:
+            $ref: '#/components/schemas/ProblemDetails'
+    Conflict:
+      description: The operation cannot be executed currently, due to a conflict with the state of the resource.
+      content:
+        application/json:
+          schema:
+            $ref: '#/components/schemas/ProblemDetails'
+    UnprocessableEntity:
+      description: The request was well-formed but was unable to be followed due to semantic errors.
+      content:
+        application/json:
+          schema:
+            $ref: '#/components/schemas/ProblemDetails'
+    InternalServerError:
+      description: Internal server error.
+      content:
+        application/json:
+          schema:
+            $ref: '#/components/schemas/ProblemDetails'
+    ServiceUnavailable:
+      description: Service temporarily unavailable.
+      content:
+        application/json:
+          schema:
+            $ref: '#/components/schemas/ProblemDetails'
+    UnexpectedError:
+      description: Unexpected error.
+      content:
+        application/json:
+          schema:
+            $ref: '#/components/schemas/ProblemDetails'
+    VnfDescriptor:
+      description: VNF Descriptor (plaintext)
+      content:
+        text/plain:
+          schema:
+            $ref: '#/components/schemas/VnfDescriptor'
+    VnfPackage:
+      description: VNF Package (compressed)
+      content:
+        application/zip:
+          schema:
+            $ref: '#/components/schemas/VnfPackage'
+    NsDescriptor:
+      description: NS Descriptor (plaintext)
+      content:
+        text/plain:
+          schema:
+            $ref: '#/components/schemas/NsDescriptor'
+    NsPackage:
+      description: NS Package (compressed)
+      content:
+        application/zip:
+          schema:
+            $ref: '#/components/schemas/NsPackage'
+    NetSliceTemplate:
+      description: NetSlice Template (plaintext)
+      content:
+        text/plain:
+          schema:
+            $ref: '#/components/schemas/NetSliceTemplate'
+    NetSlicePackage:
+      description: NetSlice Package (compressed)
+      content:
+        application/zip:
+          schema:
+            $ref: '#/components/schemas/NetSlicePackage'
+    NslcmSubscriptionResponse:
+      description: NslcmSubscriptionResponse
+      content:
+        application/json:
+          schema:
+            $ref: '#/components/schemas/NslcmSubscriptionResponse'
+        application/yaml:
+          schema:
+            $ref: '#/components/schemas/NslcmSubscriptionResponse'
+  # END RESPONSES
+
+  schemas:
+    ObjectId:
+      type: object
+      properties:
+        id:
+          type: string
+          format: uuid
+    KeyValuePairs:
+      # A free list of key:value pairs
+      type: object
+      additionalProperties: true
+    NsDescriptor:
+      type: string
+      format: yaml|json
+    NsPackage:
+      type: string
+      format: binary
+    CreateNsdInfoRequest:
+      # A free list of key:value pairs
+      type: object
+      additionalProperties: true
+    NsdInfoModifications:
+      description: |
+        NS Descriptor Information
+        Only generic fields (id, name, description) are described
+        For a full specification of the NS Descriptor see:
+        http://osm-download.etsi.org/ftp/osm-doc/nsd.html
+      type: object
+      properties:
+        id:
+          description: NSD Identifier
+          type: string
+        name:
+          description: NSD Name
+          type: string
+        description:
+          description: NSD Description
+          type: string
+    AlarmInfoModifications:
+      description: |
+        Alarm Information
+      type: object
+      properties:
+        id:
+          description: UUID
+          type: string
+        is_enable:
+          description: To enable/disable the alarm.
+          type: string
+        threshold:
+          description: Threshold value of the Alarm
+          type: string
+    NsdInfo:
+      description: |
+        NS Descriptor Information
+        Only generic fields (_id, id, name, description) are described
+        For a full specification of the NS Descriptor see:
+        http://osm-download.etsi.org/ftp/osm-doc/nsd.html
+      type: object
+      properties:
+        _id:
+          description: |
+            Identifier of the onboarded individual NS descriptor
+            resource. This identifier is allocated by the NFVO.
+          type: string
+          format: uuid
+        id:
+          description: |
+            This identifier, which is allocated by the NSD
+            designer, identifies the NSD in a globally unique
+            way. It is copied from the NSD content and shall be
+            present after the NSD content is on-boarded.
+          type: string
+        name:
+          description: |
+            Name of the onboarded NSD. This information is
+            copied from the NSD content and shall be present
+            after the NSD content is on-boarded.
+          type: string
+        description:
+          description: |
+            Description of the onboarded NSD.
+            This information is copied from the NSD content.
+          type: string
+      required:
+        - _id
+        - id
+    ArrayOfNsdInfo:
+      type: array
+      items:
+        $ref: '#/components/schemas/NsdInfo'
+    ProblemDetails:
+      type: object
+      properties:
+        type:
+          type: string
+          format: uri
+        title:
+          type: string
+        status:
+          type: integer
+        detail:
+          type: string
+        instance:
+          type: string
+          format: uri
+      additionalProperties: true
+      required:
+        - status
+        - detail
+    VnfDescriptor:
+      type: string
+      format: yaml|json
+    VnfPackage:
+      type: string
+      format: binary
+    CreateVnfPkgInfoRequest:
+      # A free list of key:value pairs
+      type: object
+      additionalProperties: true
+    VnfPkgInfoModifications:
+      description: |
+        VNF Package Information
+        Only generic fields (id, name, description) are described
+        For a full specification of the VNF Descriptor see:
+        http://osm-download.etsi.org/ftp/osm-doc/vnfd.html
+      type: object
+      properties:
+        id:
+          description: VNF Package Identifier
+          type: string
+        name:
+          description: VNF Package Name
+          type: string
+        description:
+          description: VNF Package description
+          type: string
+    VnfPkgInfo:
+      description: |
+        VNF Package Information
+        Only generic fields (_id, id, name, description) are described
+        For a full specification of the VNF Descriptor see:
+        http://osm-download.etsi.org/ftp/osm-doc/vnfd.html
+      type: object
+      properties:
+        _id:
+          description: |
+            Identifier of the VNF package. This identifier is allocated by the NFVO.
+          type: string
+          format: uuid
+        id:
+          description: VNF Package Identifier
+          type: string
+        name:
+          description: VNF Package Name
+          type: string
+        description:
+          description: VNF Package description
+          type: string
+      required:
+        - _id
+        - id
+    ArrayOfVnfPkgInfo:
+      type: array
+      items:
+        $ref: '#/components/schemas/VnfPkgInfo'
+    # CreateNsRequest:
+      # Substituted by InstantiateNsRequest
+    NsInstance:
+      description: |
+        NS Instance Information
+        Only generic fields (_id, id, name, description) are described
+        For a full specification of the NS Instance see:
+        http://osm-download.etsi.org/ftp/osm-doc/nsr.html
+      type: object
+      properties:
+        _id:
+          description: Identifier of the NS instance.
+          type: string
+          format: uuid
+        id:
+          description: Identifier of the NS instance.
+          type: string
+          format: uuid
+        name:
+          description: Human readable name of the NS instance.
+          type: string
+        description:
+          description: Human readable description of the NS instance.
+          type: string
+      required:
+        - _id
+        - id
+        - name
+    InstantiateNsRequest:
+      type: object
+      properties:
+        nsName:
+          description: |
+            Human-readable name of the NS instance to be created.
+          type: string
+        nsdId:
+          description: |
+            Identifier of the NSD that defines the NS instance to be created.
+          type: string
+          format: uuid
+        vimAccountId:
+          description: |
+            Identifier of the VIM Account where the NS instance shall be created.
+          type: string
+          format: uuid
+        lcmOperationType:
+          type: string
+        nsInstanceId:
+          type: string
+          format: uuid
+        netsliceInstanceId:
+          type: string
+          format: uuid
+        nsDescription:
+          type: string
+          nullable: true
+        wimAccountId:
+          oneOf:
+            - type: string
+            - type: boolean
+          nullable: true
+        additionalParamsForNs:
+          type: object
+          additionalProperties: true
+        additionalParamsForVnf: &additionalparamsforvnf
+          type: array
+          items:
+            type: object
+            properties:
+              member-vnf-index:
+                type: string
+              additionalParams:
+                type: object
+                additionalProperties: true
+              k8s-namespace:
+                type: string
+                description: |
+                  use this namespace for all the KDU deployed in this VNF
+                  (if any). By default it is used the id of the project
+              additionalParamsForVdu:
+                type: array
+                items:
+                  type: object
+                  properties:
+                    vdu_id:
+                      type: string
+                    additionalParams:
+                      type: object
+                      additionalProperties: true
+                  required:
+                    - vdu_id
+                    - additionalParams
+                  additionalProperties: false
+              additionalParamsForKdu:
+                type: array
+                items:
+                  type: object
+                  properties:
+                    kdu_name:
+                      type: string
+                    k8s-namespace:
+                      type: string
+                      description: use this namespace for this KDU
+                    kdu_model:
+                      type: string
+                    additionalParams:
+                      type: object
+                      additionalProperties: true
+                  required:
+                    - kdu_name
+                  minProperties: 2
+                  additionalProperties: false
+            required:
+              - member-vnf-index
+            minProperties: 2
+            additionalProperties: false
+        ssh_keys:
+          type: array
+          items:
+            type: string
+        nsr_id:
+          type: string
+          format: uuid
+        vduImage:
+          type: string
+        placement-engine:
+          type: string
+          description: |
+           To compute automatically the target VIM for each VNF based on 
+           constrains, e.g. latency. Currently only 'PLA' is supported
+        placement-constraints:
+          type: object
+          additionalProperties: true
+        k8s-namespace:
+          type: string
+        timeout_ns_deploy:
+          type: integer
+        vnf:
+          type: array
+          items:
+            type: object
+            properties:
+              member-vnf-index:
+                type: string
+              vimAccountId:
+                type: string
+                format: uuid
+              vdu:
+                type: array
+                items:
+                  type: object
+                  properties:
+                    id:
+                      type: string
+                    volume:
+                      type: array
+                      items:
+                        type: object
+                        properties:
+                          name:
+                            type: string
+                          vim-volume-id:
+                            type: string
+                        required:
+                          - name
+                          - vim-volume-id
+                        additionalProperties: false
+                      minItems: 1
+                    interface:
+                      type: array
+                      items:
+                        type: object
+                        properties:
+                          name:
+                            type: string
+                          ip-address:
+                            type: string
+                            format: ipv4
+                          mac-address:
+                            type: string
+                            format: mac_address
+                          floating-ip-required:
+                            type: boolean
+                        required:
+                          - name
+                        additionalProperties: false
+                      minItems: 1
+                  required:
+                    - id
+                  additionalProperties: false
+                minItems: 1
+              internal-vld:
+                type: array
+                items:
+                  type: object
+                  properties:
+                    name:
+                      type: string
+                    vim-network-name:
+                      type: string
+                    vim-network-id:
+                      type: string
+                    ip-profile:
+                      type: object
+                      properties:
+                        ip-version:
+                          type: string
+                          enum:
+                            - ipv4
+                            - ipv6
+                        subnet-address:
+                          type: string
+                          format: ip_prefix
+                          nullable: true
+                        gateway-address:
+                          type: string
+                          format: ipv4
+                          nullable: true
+                        dns-server:
+                          type: array
+                          items:
+                            type: object
+                            properties:
+                              address:
+                                type: string
+                                format: ipv4
+                            required:
+                              - address
+                            additionalProperties: false
+                          minItems: 1
+                          nullable: true
+                        dhcp-params:
+                          type: object
+                          properties:
+                            enabled:
+                              type: boolean
+                            count:
+                              type: integer
+                              minimum: 1
+                            start-address:
+                              type: string
+                              format: ipv4
+                          additionalProperties: false
+                          nullable: true
+                      additionalProperties: false
+                    provider-network:
+                      type: object
+                      properties:
+                        physical-network:
+                          type: string
+                        segmentation-id:
+                          type: string
+                        network-type:
+                          type: string
+                        sdn-ports:
+                          description: |
+                            connect additional ports to the created underlay SDN connectivity.
+                            Normally for external connectivy.
+                          type: array
+                          items:
+                            type: object
+                            properties:
+                              switch_id:
+                                type: string
+                              switch_port:
+                                type: string
+                              mac_address:
+                                type: string
+                                format: mac_address
+                              vlan:
+                                type: integer
+                            additionalProperties: true
+                            required:
+                              - switch_id
+                              - switch_port
+                          minItems: 1
+                      additionalProperties: false
+                    internal-connection-point:
+                      type: array
+                      items:
+                        type: object
+                        properties:
+                          id-ref:
+                            type: string
+                          ip-address:
+                            type: string
+                            format: ipv4
+                        required:
+                          - id-ref
+                        minProperties: 2
+                        additionalProperties: False
+                      minItems: 1
+                  required:
+                    - name
+                  minProperties: 2
+                  additionalProperties: false
+                minItems: 1
+            required:
+              - member-vnf-index
+            minProperties: 2
+            additionalProperties: false
+          minItems: 1
+        vld:
+          type: array
+          items:
+            type: object
+            properties:
+              name:
+                type: string
+              vim-network-name:
+                oneOf:
+                  - type: string
+                  - type: object
+              vim-network-id:
+                oneOf:
+                  - type: string
+                  - type: object
+              ns-net:
+                type: object
+                additionalProperties: true
+              wimAccountId:
+                oneOf:
+                  - type: string
+                  - type: boolean
+                nullable: true
+              ip-profile:
+                type: object
+                additionalProperties: true
+              provider-network:
+                type: object
+                properties:
+                  physical-network:
+                    type: string
+                  segmentation-id:
+                    type: string
+                additionalProperties: false
+              vnfd-connection-point-ref:
+                type: array
+                items:
+                  type: object
+                  properties:
+                    member-vnf-index-ref:
+                      type: string
+                    vnfd-connection-point-ref:
+                      type: string
+                    ip-address:
+                      type: string
+                      format: ipv4
+                  required:
+                    - member-vnf-index-ref
+                    - vnfd-connection-point-ref
+                  minProperties: 3
+                  additionalProperties: false
+                minItems: 1
+            required:
+              - name
+            additionalProperties: false
+          minItems: 1
+      required:
+        - nsName
+        - nsdId
+        - vimAccountId
+      additionalProperties: false
+    ScaleNsRequest:
+      type: object
+      properties:
+        scaleType:
+          type: string
+          enum:
+            - SCALE_VNF
+        timeout_ns_scale:
+          description: timeout for the scale operation
+          type: integer
+        scaleVnfData:
+          type: object
+          properties:
+            scaleVnfType:
+              type: string
+              enum:
+                - SCALE_IN
+                - SCALE_OUT
+            scaleByStepData:
+              type: object
+              properties:
+                scaling-group-descriptor:
+                  type: string
+                scaling-policy:
+                  type: string
+                member-vnf-index:
+                  type: string
+              required:
+                - scaling-group-descriptor
+                - member-vnf-index
+              additionalProperties: false
+          required:
+            - scaleVnfType
+            - scaleByStepData
+          additionalProperties: false
+      required:
+        - scaleType
+        - scaleVnfData
+      additionalProperties: false
+    HealNsRequest:
+      description: >
+        This type represents request parameters for the "Heal NS" operation. This operation supports the healing of an NS
+        instance by healing one or more of the VNF that are part of this NS.
+      type: object
+      properties:
+        timeout_ns_heal:
+          description: timeout for the heal operation in seconds
+          type: integer
+        healVnfData:
+          description: >
+            List of VNF to be healed, together with the information needed to heal each.
+          type: array
+          items:
+            $ref: "#/components/schemas/HealVnfData"
+      required:
+        - healVnfData
+    HealVnfData:
+      description: >
+        This type represents the information to heal a VNF that is part of an NS.
+      type: object
+      required:
+        - vnfInstanceId
+      properties:
+        vnfInstanceId:
+          description: >
+            Identifies the VNF instance, part of the NS, requiring a
+            healing action.
+          type: string
+          format: uuid
+        cause:
+          description: >
+            Indicates the reason why a healing procedure is required.
+          type: string
+        additionalParams:
+          description: >
+            Additional parameters passed by the NFVO as input to
+            the healing process, specific to the VNF being healed.
+          type: object
+          properties:
+            run-day1:
+              description: >
+                Flag to indicate whether or not to run day1 primitives for the VNF (default: false).
+              type: boolean
+              default: false
+            vdu:
+              description: >
+                List of VDU to be healed, together with the information needed to heal each.
+              type: array
+              items:
+                $ref: "#/components/schemas/HealVduData"
+    HealVduData:
+      description: >
+        This type represents the information to heal a VDU that is part of a VNF.
+      type: object
+      required:
+        - vdu-id
+      properties:
+        vdu-id:
+          description: >
+            Identifies the VDU id, part of the VNF, requiring a healing action.
+          type: string
+          format: uuid
+        count-index:
+          description: >
+            Indicates the VDU number when the VDU is part of a scale-group.
+          type: integer
+          minimum: 0
+        run-day1:
+          description: >
+            Flag to indicate whether or not to run day1 primitives for the VDU (default: false).
+          type: boolean
+          default: false
+    NSinstanceMigrateRequest:
+      description: >
+        This type represents request parameters for the "Migrate" operation. This operation supports the migration of an NS
+        instance by migrating one or more of the VDUs that are part of this NS.
+      type: object
+      properties:
+        vnfInstanceId:
+          type: string
+        migrateToHost:
+          type: string
+        vdu:
+          type: object
+          properties:
+            vduId:
+              type: string
+            vduCountIndex:
+              type: integer
+          required:
+            - vduId
+      required:
+        - vnfInstanceId
+      additionalProperties: false
+    TerminateNsRequest:
+      type: object
+      properties:
+        timeout_ns_terminate:
+          description: timeout for terminate operation
+          type: integer
+        autoremove:
+          description: remove network service if termination end without error
+          type: boolean
+        skip_terminate_primitives:
+          description: Do not execute network service termination primitives
+          type: boolean
+      additionalProperties: false
+    ArrayOfNsInstance:
+      type: array
+      items:
+        $ref: '#/components/schemas/NsInstance'
+    NSinstanceActionRequest:
+      type: object
+      properties:
+        primitive:
+          type: string
+          description: |
+            name of the primitive in the 'config-descriptor'. If the target is
+            a kdu it can be also 'status', 'rollback' or 'upgrade'
+        primitive_params:
+          description: parameters of this primitive
+          $ref: '#/components/schemas/KeyValuePairs'
+        member_vnf_index:
+          type: string
+          description: provide if the target action is for a vnf, vdu or kdu
+        vdu_id:
+          type: string
+          description: provide if the target action is for a vdu
+        kdu_name:
+          type: string
+          description: provide if the target action is for a kdu
+        vdu_count_index:
+          type: integer
+        timeout_ns_action:
+          description: timeout for the day 1/2 operation
+          type: integer
+      required:
+        - primitive
+        - primitive_params
+      additionalProperties: false
+    UpdateNsRequest:
+      description: >
+        This type represents request parameters for the "Update NS" operation. This operation supports the update of an NS
+        instance by updating one or more of the VNFs that are part of this NS.
+      type: object
+      properties:
+        updateType:
+          type: string
+          enum:
+            - CHANGE_VNFPKG
+            - REMOVE_VNF
+            - MODIFY_VNF_INFORMATION
+            - OPERATE_VNF
+        changeVnfPackageData:
+          type: object
+          properties:
+            vnfInstanceId:
+              type: string
+            vnfdId:
+              type: string
+          required:
+            - vnfInstanceId
+            - vnfdId
+        removeVnfInstanceId:
+          type: string
+        modifyVnfInfoData:
+          type: object
+          properties:
+            vnfInstanceId:
+              type: string
+            vnfdId:
+              type: string
+          required:
+            - vnfInstanceId
+            - vnfdId
+        operateVnfData:
+          type: object
+          properties:
+            vnfInstanceId:
+              type: string
+            changeStateTo:
+              type: string
+            additionalParam:
+              type: object
+              properties:
+                run-day1:
+                  type: boolean
+                vdu_id:
+                  type: string
+                count-index:
+                  type: number
+              required:
+                - vdu_id
+                - count-index
+          required:
+            - vnfInstanceId
+            - changeStateTo
+          additionalProperties: false
+      required:
+        - updateType
+      additionalProperties: false
+    VerticalscaleNsRequest:
+      description: >
+        This type represents request parameters for the "Vertical Scale NS" operation.
+        This operation supports the vertical scale of an NS instance by verticalscaling
+        one or more of the VNFs that are part of this NS.
+      type: object
+      properties:
+        verticalScale:
+          type: string
+        changeVnfFlavorData:
+          type: object
+          properties:
+            vnfInstanceId:
+              type: string
+              format: uuid
+            additionalParams:
+              type: object
+              properties:
+                vduid:
+                  type: string
+                  format: uuid
+                vduCountIndex:
+                  type: integer
+                virtualMemory:
+                  type: integer
+                sizeOfStorage:
+                  type: integer
+                numVirtualCpu:
+                  type: integer
+          required:
+            - vnfInstanceId
+            - additionalParams
+          additionalProperties: false
+      required:
+        - verticalScale
+      additionalProperties: false
+    # CreateNSinstanceContentRequest:
+      # Substituted by InstantiateNsRequest
+    CreateNSinstanceContentResponse:
+      type: object
+      properties:
+        id:
+          type: string
+          format: uuid
+        nslcmop_id:
+          type: string
+          format: uuid
+    NsLcmOpOcc:
+      type: object
+      properties:
+        _id:
+          type: string
+          format: uuid
+        id:
+          type: string
+          format: uuid
+        lcmOperationType:
+          type: string
+        nsInstanceId:
+          type: string
+          format: uuid
+        isAutomaticInvocation:
+          type: boolean
+        isCancelPending:
+          type: boolean
+        startTime:
+          type: number
+          format: float
+        statusEnteredTime:
+          type: number
+          format: float
+        operationParams:
+          type: object
+          properties:
+            nsName:
+              type: string
+            nsdId:
+              type: string
+              format: uuid
+            vimAccountId:
+              type: string
+              format: uuid
+            nsInstanceId:
+              type: string
+              format: uuid
+            lcmOperationType:
+              type: string
+        operationState:
+          type: string
+        detailed-status:
+          type: string
+        links:
+          type: object
+          properties:
+            self:
+              type: string
+              format: path   # uri?
+            nsInstance:
+              type: string
+              format: path   # uri?
+    ArrayOfNsLcmOpOcc:
+      type: array
+      items:
+        $ref: '#/components/schemas/NsLcmOpOcc'
+    VnfInstanceInfo:
+      description: |
+        VNF Instance Information
+        Only generic fields (_id, id) are described
+        For a full specification of the VNF Instance see:
+        http://osm-download.etsi.org/ftp/osm-doc/vnfr.html
+      type: object
+      properties:
+        _id:
+          type: string
+          format: uuid
+        id:
+          type: string
+          format: uuid
+    ArrayOfVnfInstanceInfo:
+      type: array
+      items:
+        $ref: '#/components/schemas/VnfInstanceInfo'
+    NstInfo:
+      description: |
+        NetSlice Template Information
+        Only generic fields (_id, id, name) are described
+        For a full specification of the NetSlice Template see:
+        http://osm-download.etsi.org/ftp/osm-doc/nst.html
+      type: object
+      properties:
+        _id:
+          description: NetSlice Template Identifier
+          type: string
+          format: uuid
+        id:
+          description: Human readable NetSlice Template Identifier
+          type: string
+        name:
+          description: Human readable name of the NetSlice Template
+          type: string
+    ArrayOfNstInfo:
+      type: array
+      items:
+        $ref: '#/components/schemas/NstInfo'
+    CreateNstInfoRequest:
+      # A free list of key:value pairs
+      type: object
+      additionalProperties: true
+    NetSliceTemplate:
+      type: string
+      format: yaml|json
+    NetSlicePackage:
+      type: string
+      format: binary
+    NstInfoModifications:
+      description: |
+        NetSlice Template Information
+        Only generic fields (id, name) are described
+        For a full specification of the NetSlice Template see:
+        http://osm-download.etsi.org/ftp/osm-doc/nst.html
+      type: object
+      properties:
+        id:
+          description: NST Identifier
+          type: string
+        name:
+          description: NST Name
+          type: string
+    NetSliceInstance:
+      description: |
+        NetSlice Instance Information
+        Only generic fields (_id, id, name, description) are described
+        For a full specification of the NetSlice Instance see:
+        http://osm-download.etsi.org/ftp/osm-doc/nsi.html
+      type: object
+      properties:
+        _id:
+          description: Identifier of the NetSlice instance.
+          type: string
+          format: uuid
+        id:
+          description: Identifier of the NetSlice instance.
+          type: string
+          format: uuid
+        name:
+          description: Human readable name of the NetSlice instance.
+          type: string
+        description:
+          description: Human readable description of the NetSlice instance.
+          type: string
+      required:
+        - _id
+        - id
+        - name
+    ArrayOfNetSliceInstance:
+      type: array
+      items:
+        $ref: '#/components/schemas/NetSliceInstance'
+    Alarm:
+      description: |
+        Alarm Information
+      type: object
+      properties:
+        _id:
+          description: Identifier of the Alarm.
+          type: string
+          format: uuid
+        id:
+          description: Identifier of the Alarm.
+          type: string
+          format: uuid
+        metric:
+          description: Alarm metric.
+          type: string
+        threshold:
+          description: Threshold value of the Alarm.
+          type: number
+          format: float
+        operation:
+          description: Operation to be applied.
+          type: string
+        action:
+          description: Action to be taken.
+          type: string
+        status:
+          description: Current status of the alarm.
+          type: string
+      required:
+        - _id
+        - id
+        - metric
+        - threshold
+        - operation
+    ArrayOfAlarm:
+      type: array
+      items:
+        $ref: '#/components/schemas/Alarm'
+    # CreateNsiRequest:
+      # Substituted by InstantiateNsiRequest
+    InstantiateNsiRequest:
+      type: object
+      properties:
+        nsiName:
+          description: |
+            Human-readable name of the NetSlice instance to be created.
+          type: string
+        nstId:
+          description: |
+            Identifier of the NST that defines the NetSlice instance to be created.
+          type: string
+          format: uuid
+        vimAccountId:
+          description: |
+            Identifier of the VIM Account where the NetSlice instance shall be created.
+          type: string
+          format: uuid
+        lcmOperationType:
+          type: string
+        netsliceInstanceId:
+          type: string
+          format: uuid
+        nsiDescription:
+          type: string
+          nullable: true
+        ssh_keys:
+          type: string
+        nsi_id:
+          type: string
+          format: uuid
+        additionalParamsForNsi:
+          type: object
+          additionalProperties: true
+        netslice-subnet:
+          type: array
+          items:
+            type: object
+            properties:
+              id:
+                type: string
+              nsName:
+                type: string
+              nsdId:
+                type: string
+                format: uuid
+              vimAccountId:
+                type: string
+                format: uuid
+              lcmOperationType:
+                type: string
+              nsInstanceId:
+                type: string
+                format: uuid
+              netsliceInstanceId:
+                type: string
+                format: uuid
+              nsDescription:
+                type: string
+                nullable: true
+              wimAccountId:
+                oneOf:
+                  - type: string
+                  - type: boolean
+                nullable: true
+              additionalParamsForNs:
+                type: object
+                additionalProperties: true
+              additionalParamsForVnf: *additionalparamsforvnf
+              ssh_keys:
+                type: array
+                items:
+                  type: string
+              nsr_id:
+                type: string
+                format: uuid
+              vduImage:
+                type: string
+              vnf:
+                type: array
+                items:
+                  type: object
+                  properties:
+                    member-vnf-index:
+                      type: string
+                    vimAccountId:
+                      type: string
+                      format: uuid
+                    vdu:
+                      type: array
+                      items:
+                        type: object
+                        properties:
+                          id:
+                            type: string
+                          volume:
+                            type: array
+                            items:
+                              type: object
+                              properties:
+                                name:
+                                  type: string
+                                vim-volume-id:
+                                  type: string
+                              required:
+                                - name
+                                - vim-volume-id
+                              additionalProperties: false
+                            minItems: 1
+                          interface:
+                            type: array
+                            items:
+                              type: object
+                              properties:
+                                name:
+                                  type: string
+                                ip-address:
+                                  type: string
+                                  format: ipv4
+                                mac-address:
+                                  type: string
+                                  format: mac_address
+                                floating-ip-required:
+                                  type: boolean
+                              required:
+                                - name
+                              additionalProperties: false
+                            minItems: 1
+                        required:
+                          - id
+                        additionalProperties: false
+                      minItems: 1
+                    internal-vld:
+                      type: array
+                      items:
+                        type: object
+                        properties:
+                          name:
+                            type: string
+                          vim-network-name:
+                            type: string
+                          vim-network-id:
+                            type: string
+                          ip-profile:
+                            type: object
+                            properties:
+                              ip-version:
+                                type: string
+                                enum:
+                                  - ipv4
+                                  - ipv6
+                              subnet-address:
+                                type: string
+                                format: ip_prefix
+                                nullable: true
+                              gateway-address:
+                                type: string
+                                format: ipv4
+                                nullable: true
+                              dns-server:
+                                type: array
+                                items:
+                                  type: object
+                                  properties:
+                                    address:
+                                      type: string
+                                      format: ipv4
+                                  required:
+                                    - address
+                                  additionalProperties: false
+                                minItems: 1
+                                nullable: true
+                              dhcp-params:
+                                type: object
+                                properties:
+                                  enabled:
+                                    type: boolean
+                                  count:
+                                    type: integer
+                                    minimum: 1
+                                  start-address:
+                                    type: string
+                                    format: ipv4
+                                additionalProperties: false
+                                nullable: true
+                            additionalProperties: false
+                          provider-network:
+                            type: object
+                            properties:
+                              physical-network:
+                                type: string
+                              segmentation-id:
+                                type: string
+                            additionalProperties: false
+                          internal-connection-point:
+                            type: array
+                            items:
+                              type: object
+                              properties:
+                                id-ref:
+                                  type: string
+                                ip-address:
+                                  type: string
+                                  format: ipv4
+                              required:
+                                - id-ref
+                              minProperties: 2
+                              additionalProperties: False
+                            minItems: 1
+                        required:
+                          - name
+                        minProperties: 2
+                        additionalProperties: false
+                      minItems: 1
+                  required:
+                    - member-vnf-index
+                  minProperties: 2
+                  additionalProperties: false
+                minItems: 1
+              vld:
+                type: array
+                items:
+                  type: object
+                  properties:
+                    name:
+                      type: string
+                    vim-network-name:
+                      oneOf:
+                        - type: string
+                        - type: object
+                    vim-network-id:
+                      oneOf:
+                        - type: string
+                        - type: object
+                    ns-net:
+                      type: object
+                      additionalProperties: true
+                    wimAccountId:
+                      oneOf:
+                        - type: string
+                        - type: boolean
+                      nullable: true
+                    ip-profile:
+                      type: object
+                      additionalProperties: true
+                    provider-network:
+                      type: object
+                      properties:
+                        physical-network:
+                          type: string
+                        segmentation-id:
+                          type: string
+                      additionalProperties: false
+                    vnfd-connection-point-ref:
+                      type: array
+                      items:
+                        type: object
+                        properties:
+                          member-vnf-index-ref:
+                            type: string
+                          vnfd-connection-point-ref:
+                            type: string
+                          ip-address:
+                            type: string
+                            format: ipv4
+                        required:
+                          - member-vnf-index-ref
+                          - vnfd-connection-point-ref
+                        minProperties: 3
+                        additionalProperties: false
+                      minItems: 1
+                  required:
+                    - name
+                  additionalProperties: false
+                minItems: 1
+            additionalProperties: false
+          minItems: 1
+        netslice-vld:
+          type: array
+          items:
+            type: object
+            properties:
+              name:
+                type: string
+              vim-network-name:
+                oneOf:
+                  - type: string
+                  - type: object
+              vim-network-id:
+                oneOf:
+                  - type: string
+                  - type: object
+              ip-profile:
+                type: object
+                additionalProperties: true
+            required:
+              - name
+            additionalProperties: false
+          minItems: 1
+      required:
+        - nsiName
+        - nstId
+        - vimAccountId
+      additionalProperties: false
+    TerminateNsiRequest:
+      type: object
+      properties:
+        terminationTime:
+          description: |
+            Timestamp indicating the end time of the NSI, i.e. the NSI will be terminated
+            automatically at this timestamp. Cardinality "0" indicates the NSI termination
+            takes place immediately.
+          type: string
+          format: date-time
+    NsiActionRequest:
+      type: object
+      properties:
+        primitive:
+          type: string
+        primitive_params:
+          $ref: '#/components/schemas/KeyValuePairs'
+        lcmOperationType:
+          type: string
+        netsliceInstanceId:
+          type: string
+          format: uuid
+      required:
+        - primitive
+        - primitive_params
+    # CreateNsiContentRequest:
+      # Substituted by InstantiateNsiRequest
+    CreateNsiContentResponse:
+      type: object
+      properties:
+        id:
+          type: string
+          format: uuid
+        nsilcmop_id:
+          type: string
+          format: uuid
+    NsiLcmOpOcc:
+      type: object
+      properties:
+        _id:
+          type: string
+          format: uuid
+        id:
+          type: string
+          format: uuid
+        lcmOperationType:
+          type: string
+        netsliceInstanceId:
+          type: string
+          format: uuid
+        isAutomaticInvocation:
+          type: boolean
+        isCancelPending:
+          type: boolean
+        startTime:
+          type: number
+          format: float
+        statusEnteredTime:
+          type: number
+          format: float
+        operationParams:
+          type: object
+          properties:
+            nsiName:
+              type: string
+            nstId:
+              type: string
+              format: uuid
+            vimAccountId:
+              type: string
+              format: uuid
+            netsliceInstanceId:
+              type: string
+              format: uuid
+            lcmOperationType:
+              type: string
+            nslcmops_ids:
+              type: array
+              items:
+                type: string
+                format: uuid
+        operationState:
+          type: string
+        detailed-status:
+          type: string
+        links:
+          type: object
+          properties:
+            self:
+              type: string
+              format: path   # uri?
+            netsliceInstanceId:
+              type: string
+              format: path   # uri?
+    ArrayOfNsiLcmOpOcc:
+      type: array
+      items:
+        $ref: '#/components/schemas/NsiLcmOpOcc'
+    TokenInfo:
+      type: object
+      properties:
+        _id:
+          type: string
+        id:
+          type: string
+        admin:
+          type: boolean
+        admin_show:
+          type: boolean
+        project_id:
+          type: string
+          format: uuid
+        user_id:
+          type: string
+          format: uuid
+        project_name:
+          type: string
+        username:
+          type: string
+        issued_at:
+          type: number
+          format: float
+        user_show:
+          type: boolean
+        last_login:
+          type: number
+          format: float
+        login_count:
+          type: number
+        expires:
+          type: number
+          format: float
+        remote_host:
+          type: string
+          format: ipv4
+        remote_port:
+          type: integer
+        roles:
+          type: array
+          items:
+            type: object
+            properties:
+              id:
+                type: string
+                format: uuid
+              name:
+                type: string
+    PasswordExpiryInfo:
+      type: object
+      properties:
+        id:
+          type: string
+        message:
+          type: string
+        user_id:
+          type: string
+          format: uuid
+    ArrayOfTokenInfo:
+      type: array
+      items:
+        $ref: '#/components/schemas/TokenInfo'
+    CreateTokenRequest:
+      type: object
+      properties:
+        username:
+          type: string
+        password:
+          type: string
+        project_id:
+          type: string
+      required:
+        - username
+        - password
+    UserInfo:
+      type: object
+      properties:
+        _id:
+          type: string
+          format: uuid
+        username:
+          type: string
+        password:
+          type: string
+        project_role_mappings:
+          type: array
+          items:
+            type: object
+            properties:
+              project:
+                type: string
+                format: uuid
+              role:
+                type: string
+                format: uuid
+              project_name:
+                type: string
+              role_name:
+                type: string
+        projects:
+          type: array
+          items:
+            type: string
+    ArrayOfUserInfo:
+      type: array
+      items:
+        $ref: '#/components/schemas/UserInfo'
+    ProjectRoleMappings:
+      type: array
+      items:
+        type: object
+        properties:
+          project:
+            type: string
+          role:
+            type: string
+      required:
+        - project
+        - role
+      additionalProperties: false
+    ProjectRoleMappingsOpt:
+      type: array
+      items:
+        type: object
+        properties:
+          project:
+            type: string
+          role:
+            type: string
+      required:
+        - project
+      additionalProperties: false
+    CreateUserRequest:
+      type: object
+      properties:
+        username:
+          type: string
+        password:
+          type: string
+        projects:
+          type: array
+          items:
+            type: string
+        project_role_mappings:
+          $ref: '#/components/schemas/ProjectRoleMappings'
+      required:
+        - username
+        - password
+      additionalProperties: false
+    ShortNameList:
+      type: array
+      items:
+        type: string
+    ArrayEditionSchema:
+      type: object
+      additionalProperties: true
+      minProperties: 1
+      description: |
+        Array edition keys must start with '$'
+        and follow the syntax defined in: https://osm.etsi.org/wikipub/index.php/NBI_API_Description
+    EditUserRequest:
+      type: object
+      properties:
+        username:
+          type: string
+        password:
+          type: string
+        old_password:
+          type: string
+        system_admin_id:
+          type: string
+          format: uuid
+        unlock:
+          type: boolean
+        renew:
+          type: boolean
+        projects:
+          oneOf:
+            - $ref: '#/components/schemas/ShortNameList'
+            - $ref: '#/components/schemas/ArrayEditionSchema'
+        project_role_mappings:
+          $ref: '#/components/schemas/ProjectRoleMappings'
+        add_project_role_mappings:
+          $ref: '#/components/schemas/ProjectRoleMappings'
+        remove_project_role_mappings:
+          $ref: '#/components/schemas/ProjectRoleMappingsOpt'
+    QuotasInfo:
+      type: object
+      properties:
+        vnfds:
+          type: integer
+          minimum: 0
+          nullable: false
+        nsds:
+          type: integer
+          minimum: 0
+          nullable: false
+        slice_templates:
+          type: integer
+          minimum: 0
+          nullable: false
+        pduds:
+          type: integer
+          minimum: 0
+          nullable: false
+        ns_instances:
+          type: integer
+          minimum: 0
+          nullable: false
+        slice_instances:
+          type: integer
+          minimum: 0
+          nullable: false
+        vim_accounts:
+          type: integer
+          minimum: 0
+          nullable: false
+        wim_accounts:
+          type: integer
+          minimum: 0
+          nullable: false
+        sdn_controllers:
+          type: integer
+          minimum: 0
+          nullable: false
+        k8sclusters:
+          type: integer
+          minimum: 0
+          nullable: false
+        vca:
+          type: integer
+          minimum: 0
+          nullable: false
+        k8srepos:
+          type: integer
+          minimum: 0
+          nullable: false
+        osmrepos:
+          type: integer
+          minimum: 0
+          nullable: false
+      additionalProperties: false
+    EditQuotasInfo:
+      type: object
+      properties:
+        vnfds:
+          type: integer
+          minimum: 0
+          nullable: true
+        nsds:
+          type: integer
+          minimum: 0
+          nullable: true
+        slice_templates:
+          type: integer
+          minimum: 0
+          nullable: true
+        pduds:
+          type: integer
+          minimum: 0
+          nullable: true
+        ns_instances:
+          type: integer
+          minimum: 0
+          nullable: true
+        slice_instances:
+          type: integer
+          minimum: 0
+          nullable: true
+        vim_accounts:
+          type: integer
+          minimum: 0
+          nullable: true
+        wim_accounts:
+          type: integer
+          minimum: 0
+          nullable: true
+        sdn_controllers:
+          type: integer
+          minimum: 0
+          nullable: true
+        k8sclusters:
+          type: integer
+          minimum: 0
+          nullable: true
+        vca:
+          type: integer
+          minimum: 0
+          nullable: true
+        k8srepos:
+          type: integer
+          minimum: 0
+          nullable: true
+        osmrepos:
+          type: integer
+          minimum: 0
+          nullable: true
+      additionalProperties: false
+    ProjectInfo:
+      type: object
+      properties:
+        _id:
+          type: string
+          format: uuid
+        name:
+          type: string
+        quotas:
+          $ref: '#/components/schemas/QuotasInfo'
+    ArrayOfProjectInfo:
+      type: array
+      items:
+        $ref: '#/components/schemas/ProjectInfo'
+    CreateProjectRequest:
+      type: object
+      properties:
+        name:
+          type: string
+        admin:
+          type: boolean
+        quotas:
+          $ref: '#/components/schemas/QuotasInfo'
+      required:
+        - name
+      additionalProperties: false
+    EditProjectRequest:
+      type: object
+      properties:
+        name:
+          type: string
+        admin:
+          type: boolean
+        quotas:
+          $ref: '#/components/schemas/EditQuotasInfo'
+      additionalProperties: false
+    PermissionsInfo:
+      type: object
+      additionalProperties:
+        type: boolean
+        nullable: false
+      description: |
+        Permissions keys must follow the syntax 'main_topic[:subtopic[:id[:component|action|etc]]]'
+        Permission values are either true or false
+    EditPermissionsInfo:
+      type: object
+      additionalProperties:
+        type: boolean
+        nullable: true
+      description: |
+        Permissions keys must follow the syntax 'main_topic[:subtopic[:id[:component|action|etc]]]'
+        Permission values are either true, false, or null
+    RoleInfo:
+      type: object
+      properties:
+        _id:
+          type: string
+          format: uuid
+        name:
+          type: string
+        permissions:
+          $ref: '#/components/schemas/PermissionsInfo'
+    ArrayOfRoleInfo:
+      type: array
+      items:
+        $ref: '#/components/schemas/RoleInfo'
+    CreateRoleRequest:
+      type: object
+      properties:
+        name:
+          type: string
+        permissions:
+          $ref: '#/components/schemas/PermissionsInfo'
+      required:
+        - name
+      additionalProperties: false
+    EditRoleRequest:
+      type: object
+      properties:
+        name:
+          type: string
+        permissions:
+          $ref: '#/components/schemas/EditPermissionsInfo'
+      additionalProperties: false
+    VimType:
+      type: string
+      enum:
+        - openvim
+        - openstack
+        - vmware
+        - opennebula
+        - aws
+        - azure
+        - fos
+    VimInfo:
+      type: object
+      properties:
+        _id:
+          type: string
+          format: uuid
+        schema_version:
+          type: string
+          format: X.Y[.Z]
+        schema_type:
+          type: string
+        name:
+          type: string
+        description:
+          type: string
+        vim:
+          type: string
+        datacenter:
+          type: string
+        vim_type:
+          $ref: '#/components/schemas/VimType'
+        vim_url:
+          type: string
+          format: uri
+        vim_tenant_name:
+          type: string
+        vim_user:
+          type: string
+        vim_password:
+          type: string
+        vca:
+          type: string
+          format: uuid
+        config:
+          type: object
+          additionalProperties: true
+        resources:
+          type: object
+    ArrayOfVimInfo:
+      type: array
+      items:
+        $ref: '#/components/schemas/VimInfo'
+    CreateVimRequest:
+      type: object
+      properties:
+        schema_version:
+          type: string
+          format: X.Y[.Z]
+        schema_type:
+          type: string
+        name:
+          type: string
+        description:
+          type: string
+        vim:
+          type: string
+        datacenter:
+          type: string
+        vim_type:
+          $ref: '#/components/schemas/VimType'
+        vim_url:
+          type: string
+          format: uri
+        vim_tenant_name:
+          type: string
+        vim_user:
+          type: string
+        vim_password:
+          type: string
+        vca:
+          type: string
+          format: uuid
+        config:
+          type: object
+          additionalProperties: true
+        prometheus-config:
+          type: object
+          additionalProperties: true
+        resources:
+          type: object
+      required:
+        - name
+        - vim_url
+        - vim_type
+        - vim_user
+        - vim_password
+        - vim_tenant_name
+      additionalProperties: false
+    EditVimRequest:
+      type: object
+      properties:
+        name:
+          type: string
+        description:
+          type: string
+        vim:
+          type: string
+        datacenter:
+          type: string
+        vim_type:
+          $ref: '#/components/schemas/VimType'
+        vim_url:
+          type: string
+          format: uri
+        vim_tenant_name:
+          type: string
+        vim_user:
+          type: string
+        vim_password:
+          type: string
+        vca:
+          type: string
+          format: uuid
+        prometheus-config:
+          type: object
+          additionalProperties: true
+        config:
+          type: object
+          additionalProperties: true
+      additionalProperties: false
+    ObjectId_plus_OpId:
+      type: object
+      properties:
+        id:
+          type: string
+          format: uuid
+        op_id:
+          type: string
+          format: uuid
+    OpId:
+      type: object
+      properties:
+        op_id:
+          type: string
+          format: uuid
+    WimType:
+      type: string
+      enum:
+        - onos
+        - odl
+        - tapi
+        - dynpac
+        - fake
+    WimInfo:
+      type: object
+      properties:
+        _id:
+          type: string
+          format: uuid
+        schema_version:
+          type: string
+          format: X.Y[.Z]
+        schema_type:
+          type: string
+        name:
+          type: string
+        description:
+          type: string
+        wim:
+          type: string
+        wim_type:
+          $ref: '#/components/schemas/WimType'
+        wim_url:
+          type: string
+          format: uri
+        user:
+          type: string
+        password:
+          type: string
+        config:
+          type: object
+          additionalProperties: true
+    ArrayOfWimInfo:
+      type: array
+      items:
+        $ref: '#/components/schemas/WimInfo'
+    CreateWimRequest:
+      type: object
+      properties:
+        schema_version:
+          type: string
+          format: X.Y[.Z]
+        schema_type:
+          type: string
+        name:
+          type: string
+        description:
+          type: string
+        wim:
+          type: string
+        wim_type:
+          $ref: '#/components/schemas/WimType'
+        wim_url:
+          type: string
+          format: uri
+        user:
+          type: string
+        password:
+          type: string
+        config:
+          type: object
+          additionalProperties: true
+      required:
+        - name
+        - wim_url
+        - wim_type
+      additionalProperties: false
+    EditWimRequest:
+      type: object
+      properties:
+        name:
+          type: string
+        description:
+          type: string
+        wim:
+          type: string
+        wim_type:
+          type: string
+        wim_url:
+          type: string
+          format: uri
+        user:
+          type: string
+        password:
+          type: string
+        config:
+          type: object
+          additionalProperties: true
+      additionalProperties: false
+    SdnBasicProperties:
+      type: object
+      properties:
+        name:
+          type: string
+        description:
+          type: string
+        dpid:
+          type: string
+          format: mac_address
+        ip:
+          type: string
+          format: ipv4
+        port:
+          type: integer
+        type:
+          type: string
+          enum:
+            - floodlight
+            - opendaylight
+            - onos
+        version:
+          type: string
+        user:
+          type: string
+        password:
+          type: string
+    SdnExtraProperties:
+      type: object
+      properties:
+        _id:
+          type: string
+          format: uuid
+        schema_version:
+          type: string
+          format: X.Y[.Z]
+    SdnInfo:
+      allOf:
+        - $ref: '#/components/schemas/SdnExtraProperties'
+        - $ref: '#/components/schemas/SdnBasicProperties'
+    ArrayOfSdnInfo:
+      type: array
+      items:
+        $ref: '#/components/schemas/SdnInfo'
+    CreateSdnRequest:
+      allOf:
+        - $ref: '#/components/schemas/SdnBasicProperties'
+      required:
+        - name
+        - type
+        - ip
+        - port
+        - dpid
+      additionalProperties: false
+    EditSdnRequest:
+      allOf:
+        - $ref: '#/components/schemas/SdnBasicProperties'
+      additionalProperties: false
+    NsPmJobReportInfo:
+      type: object
+      properties:
+        entries:
+          type: array
+          items:
+            type: object
+            properties:
+              objectInstanceId:
+                type: string
+                format: uuid
+              performanceMetric:
+                type: string
+              performanceValue:
+                type: object
+                properties:
+                  performanceValue:
+                    type: object
+                    properties:
+                      performanceValue:
+                        type: number
+                      vnfMemberIndex:
+                        type: string
+                      vduName:
+                        type: string
+                  timestamp:
+                    type: number
+    PduInterfaces:
+      type: array
+      items:
+        type: object
+        properties:
+          name:
+            type: string
+          mgmt:
+            type: boolean
+          type:
+            type: string
+            enum:
+              - overlay
+              - underlay
+          ip-address:
+            type: string
+            format: ipv4
+          mac-address:
+            type: string
+            format: mac_address
+          vim-network-name:
+            type: string
+          vim-network-id:
+            type: string
+        required:
+          - name
+          - mgmt
+          - ip-address
+        additionalProperties: false
+    PduInfo:
+      type: object
+      properties:
+        _id:
+          type: string
+          format: uuid
+        name:
+          type: string
+        type:
+          type: string
+        description:
+          type: string
+        shared:
+          type: boolean
+        vims:
+          type: array
+          items:
+            type: string
+        vim_accounts:
+          type: array
+          items:
+            type: string
+        interfaces:
+          $ref: '#/components/schemas/PduInterfaces'
+    ArrayOfPduInfo:
+      type: array
+      items:
+        $ref: '#/components/schemas/PduInfo'
+    CreatePduRequest:
+      type: object
+      properties:
+        name:
+          type: string
+        type:
+          type: string
+        description:
           type: string
-          format: uuid
-        vnfPkgIds:
-          description: |
-            List of VNF package identifiers referenced by the on-boarded
-            NS descriptor resource.
+        shared:
+          type: boolean
+        vims:
           type: array
           items:
             type: string
-            format: uuid
-        pnfdInfoIds:
-          description: |
-            List of PNFD identifiers referenced by the on-boarded NS
-            descriptor resource.
+        vim_accounts:
           type: array
           items:
             type: string
-            format: uuid
-        nestedNsdInfoIds:
-          description: |
-            List of NSD identifiers referenced by the on-boarded NS
-            descriptor resource.
+        interfaces:
+          $ref: '#/components/schemas/PduInterfaces'
+      required:
+        - name
+        - type
+        - interfaces
+      additionalProperties: false
+    EditPduRequest:
+      type: object
+      properties:
+        name:
+          type: string
+        type:
+          type: string
+        description:
+          type: string
+        shared:
+          type: boolean
+        vims:
           type: array
           items:
             type: string
-            format: uuid
-        nsdOnboardingState:
-          description: |
-            Onboarding state of the individual NS descriptor resource.
-          $ref: '#components/schemas/NsdOnboardingStateType'
-        onboardingFailureDetails:
-          description: |
-            Failure details of current onboarding procedure. It follows
-            the "ProblemDetails" structure. It shall be present when the
-            "nsdOnboardingState" attribute is CREATED and the uploading or
-            processing fails in NFVO.
-          $ref: '#/components/schemas/ProblemDetails'
-        nsdOperationalState:
-          description: |
-            Operational state of the individual NS descriptor resource. This
-            attribute can be modified with the PATCH method. If the value of
-            the nsdOnboardingState attribute is not equal to "ONBOARDED", the
-            value of the nsdOperationalState attribute shall be equal to
-            "DISABLED".
-          $ref: '#components/schemas/NsdOperationalStateType'
-        nsdUsagestate:
-          description: |
-            Usage state of the individual NS descriptor resource. If the value
-            of the nsdOnboardingState attribute is not equal to "ONBOARDED",
-            the value of the nsdUsageState attribute shall be equal to
-            "NOT_IN_USE".
-          $ref: '#components/schemas/NsdUsageStateType'
-        userDefinedData:
-          $ref: '#/components/schemas/KeyValuePairs'
-        _links:
-          description: |
-            Links to resources related to this resource
+        vim_accounts:
+          type: array
+          items:
+            type: string
+        interfaces:
+          $ref: '#/components/schemas/PduInterfaces'
+      additionalProperties: false
+    K8sClusterNetList:
+      type: array
+      items:
+        type: object
+        additionalProperties: false
+    K8sClusterDeploymentMethods:
+      type: object
+      properties:
+        juju-bundle:
+          type: boolean
+        helm-chart-v3:
+          type: boolean
+      additionalProperties: false
+      minProperties: 3
+    K8sClusterInfo:
+      type: object
+      properties:
+        _id:
           type: string
-        self:
-          description: |
-            URI of this resource
+          format: uuid
+        schema_version:
           type: string
-          format: uri
-        nsd_content:
-          description: |
-            Link to the NSD content resource.
+          format: X.Y[.Z]
+        schema_type:
           type: string
-          format: uri
-      required:
-        - id
-        - nsdOnboardingState
-        - nsdOperationalState
-        - nsdUsageState
-        - _links
-        - self
-        - nsd_content
-    ArrayOfNsdInfo:
+        name:
+          type: string
+        description:
+          type: string
+        credentials:
+          type: object
+          additionalProperties: true
+        vim_account:
+          type: string
+          format: uuid
+        k8s_version:
+          type: string
+        nets:
+          $ref: '#/components/schemas/K8sClusterNetList'
+        deployment_methods:
+          $ref: '#/components/schemas/K8sClusterDeploymentMethods'
+        namespace:
+          type: string
+        cni:
+          type: array
+          items:
+            type: string
+    ArrayOfK8sClusterInfo:
       type: array
       items:
-        $ref: '#/components/schemas/NsdInfo'
-    ProblemDetails:
+        $ref: '#/components/schemas/K8sClusterInfo'
+    CreateK8sClusterRequest:
       type: object
       properties:
-        type:
+        schema_version:
           type: string
-          format: uri
-        title:
+          format: X.Y[.Z]
+        schema_type:
           type: string
-        status:
-          type: integer
-        detail:
+        name:
           type: string
-        instance:
+        description:
           type: string
-          format: uri
-      additionalProperties: true
+        credentials:
+          type: object
+          additionalProperties: true
+        vim_account:
+          type: string
+          format: uuid
+        k8s_version:
+          type: string
+        nets:
+          $ref: '#/components/schemas/K8sClusterNetList'
+        namespace:
+          type: string
+        cni:
+          type: array
+          items:
+            type: string
       required:
-        - status
-        - detail
-    VnfDescriptor:
-      type: string
-    VnfPackage:
-      type: string
-      format: binary
-    CreateVnfPkgInfoRequest:
-      type: object
-      properties:
-        userDefinedData:
-          $ref: '#/components/schemas/KeyValuePairs'
-    VnfPackageOnboardingStateType:
-      type: string
-      enum: [CREATED, UPLAODING, PROCESSING, ONBOARDED]
-      description: |
-        VNF Package onboarding state:
-         * `CREATED` - The VNF Package information object is created.
-         * `UPLOADING` - The VNF Package is being uploaded.
-         * `PROCESSING` - The VNF Package is being processed, e.g. validation.
-         * `ONBOARDED` - The VNF Package is successfully on-boarded.
-    VnfPackageOperationalStateType:
-      type: string
-      enum: [ENABLED, DISABLED]
-      description: |
-        VNF Package operational state:
-         * `ENABLED` - The VNF Package is enabled.
-         * `DISABLED` - The VNF Package is disabled.
-    VnfPackageUsageStateType:
-      type: string
-      enum: [IN_USE, NOT_IN_USE]
-      description: |
-        VNF Package usage state:
-         * `IN_USE` - The VNF Package is in use.
-         * `NOT_IN_USE` - The VNF Package is not in use.
-    #SoftwareImageFormatType:
-    #  type: string
-    #  enum: [AKI, AMI, ARI, BARE, DOCKER, OVA, OVF]
-    #  description: |
-    #    Software image format. Permitted values:
-    #     * `AKI`: a kernel image format
-    #     * `AMI`: a machine image format
-    #     * `ARI`: a ramdisk image format
-    #     * `BARE`: the image does not have a container or metadata envelope
-    #     * `DOCKER`: docker container format
-    #     * `OVA`: OVF package in a tarfile
-    #     * `OVF`: OVF container format
-    VnfPackageSoftwareImageInfo:
-      type: object
-      additionalProperties: true
-      #properties:
-        #id:
-        #  description: |
-        #    Identifier of the software image, unique in the scope of a VNFD.
-        #  type: string
-        #name:
-        #  description: |
-        #    Name of the software image.
-        #  type: string
-        #provider:
-        #  description: |
-        #    Provider of the software image.
-        #  type: string
-        #version:
-        #  description: |
-        #    Version of the software image.
-        #  type: string
-        #checksum:
-        #  description: |
-        #    Checksum of the software image file.
-        #  type: string
-        #containerFormat:
-        #  description: |
-        #    Container format indicates whether the software image is in a
-        #    file format that also contains metadata about the actual
-        #    software.
-        #  $ref: '#/components/schemas/SoftwareImageFormatType'
-        #diskFormat:
-        #  description: |
-        #    Disk format of a software image is the format of the underlying
-        #    disk image.
-        #  $ref: '#/components/schemas/DiskFormatType'
-        # ...
-    VnfPackageArtifactInfo:
-      type: object
-      additionalProperties: true
-    VnfPkgInfoModifications:
+        - name
+        - credentials
+        - vim_account
+        - k8s_version
+        - nets
+      additionalProperties: false
+    EditK8sClusterRequest:
       type: object
       properties:
-        operationalState:
-          $ref: '#/components/schemas/VnfPackageOperationalStateType'
-        userDefinedData:
-          $ref: '#/components/schemas/KeyValuePairs'
-    VnfPkgInfo:
+        name:
+          type: string
+        description:
+          type: string
+        credentials:
+          type: object
+          additionalProperties: true
+        vim_account:
+          type: string
+          format: uuid
+        k8s_version:
+          type: string
+        nets:
+          $ref: '#/components/schemas/K8sClusterNetList'
+        namespace:
+          type: string
+        cni:
+          type: array
+          items:
+            type: string
+      additionalProperties: false
+    VcaInfo:
       type: object
       properties:
-        id:
-          description: |
-            Identifier of the VNF package. This identifier is allocated by the NFVO.
+        _id:
           type: string
           format: uuid
-        vnfdId:
-          description: |
-            This identifier, which is managed by the VNF provider, identifies
-            the VNF package and the VNFD in a globally unique way. It's
-            copied from the VNFD of the on-boarded VNF package. It shall be
-            present after the VNF package content has been on-boarded and
-            absent otherwise.
+        schema_version:
           type: string
-          format: uuid
-        vnfProvider:
-          description: |
-            Deovider of the VNF pacakge and the VNFD. This information is
-            copied from the VNFD. It shall be present after the VNF package
-            content has been on-boarded and absent otherwise.
+          format: X.Y[.Z]
+        schema_type:
           type: string
-        vnfProductName:
-          description: |
-            Name to identify the VNF product. Invariant for the VNF product
-            ligetime. This information is copied from the VNFD. It shall be
-            present after the VNF package content has been on-boarded and
-            absent otherwise.
+        name:
           type: string
-        vnfSoftwareVersion:
-          description: |
-            Software version of the VNF. This is changed when there is any
-            change to the software included in the VNF package. This
-            information is copied from the VNFD. It shall be present after the
-            VNF package content has been on-boarded and absent otherwise.
+        description:
           type: string
-        vnfdVersion:
-          description: |
-            The version of the VNFD. TSof information is copied from the VNFD.
-            It shall be present after the VNF package content has been
-            on-boarded and absent otherwise.
+        endpoints:
           type: string
-        checksum:
-          description: |
-            Checksum of the on-boarded VNF package. It shall be present after
-            the VNF package content has been on-boarded and absent otherwise.
+        user:
           type: string
-        softwareImages:
-          description: |
-            Information about VNF package artifacts that are software images.
-            This attribute shall not be present before the VNF package content
-            is on-boarded. Otherwise, this attribute shall be present unless
-            it has been requested to be excluded per attribute selector.
-          type: array
-          items:
-            $ref: '#/components/schemas/VnfPackageSoftwareImageInfo'
-        additionalArtifacts:
-          description: |
-            Information about VNF package artifacts contained in the VNF
-            package that are not software images. This attribute shall not be
-            present before the VNF package content is on-boarded. Otherwise,
-            this attribute shall be present if the VNF package contains
-            additional artifacts.
-          type: array
-          items:
-            $ref: '#/components/schemas/VnfPackageArtifactInfo'
-        onboardingState:
-          description: |
-            On-boarding state of the VNF package.
-          $ref: '#components/schemas/VnfPackageOnboardingStateType'
-        operationalState:
-          description: |
-            Operational  state of the VNF package. If the value of the
-            onboardingState attribute is not equal to "ONBOARDED", the value
-            of the operationalState attribute shall be equal to "DISABLED".
-          $ref: '#components/schemas/VnfPackageOperationalStateType'
-        usageState:
-          description: |
-            Usage state of the VNF package. If the value of the
-            onboardingState attribute is not equal to "ONBOARDED", the value
-            of the usageState attribute shall be equal to "NOT_IN_USE".
-          $ref: '#components/schemas/VnfPackageUsageStateType'
-        userDefinedData:
-          description: |
-            User defined data for the VNF package
-          $ref: '#/components/schemas/KeyValuePairs'
-        _links:
-          description: |
-            Links to resources related to this resource
+        secret:
           type: string
-        self:
-          description: |
-            URI of this resource
+        cacert:
           type: string
-          format: uri
-        vnfd:
-          description: |
-            Link to the VNFD resource. This link shall be present after the VNF
-            package content is on-boarded. 
+        lxd-cloud:
           type: string
-          format: uri
-        package_content:
-          description: |
-            Link to the "VNF package content" resource.
+        lxd-credentials:
           type: string
-          format: uri
-      required:
-        - id
-        - onboardingState
-        - operationalState
-        - usageState
-        - _links
-        - self
-        - package_content
-    ArrayOfVnfPkgInfo:
+        k8s-cloud:
+          type: string
+        k8s-credentials:
+          type: string
+        model-config:
+          type: object
+          additionalProperties: true
+    ArrayOfVcaInfo:
       type: array
       items:
-        $ref: '#/components/schemas/VnfPkgInfo'
-    UploadVnfPackageFromUriRequest:
+        $ref: '#/components/schemas/VcaInfo'
+    CreateVcaRequest:
       type: object
       properties:
-        addressInformation:
-          description: |
-            Address information of the VNF package content. The NFVO can use
-            this address to obtain the VNF package.
+        schema_version:
           type: string
-          format: uri
-        userName:
-          description: |
-            User name to be used for authentication. Shall be present if user
-            name is needed but has not been provisioned out of band.
+          format: X.Y[.Z]
+        schema_type:
           type: string
-        password:
-          description: |
-            Password to be used for authentication. Shall be present if password
-            is needed but has not been provisioned out of band.
+        name:
+          type: string
+        description:
+          type: string
+        endpoints:
+          type: string
+        user:
+          type: string
+        secret:
+          type: string
+        cacert:
+          type: string
+        lxd-cloud:
+          type: string
+        lxd-credentials:
+          type: string
+        k8s-cloud:
+          type: string
+        k8s-credentials:
           type: string
+        model-config:
+          type: object
+          additionalProperties: true
       required:
-        - addressInformation
-    CreateNsRequest:
+        - name
+        - endpoints
+        - user
+        - secret
+        - cacert
+        - lxd-cloud
+        - lxd-credentials
+        - k8s-cloud
+        - k8s-credentials
+      additionalProperties: false
+    EditVcaRequest:
       type: object
       properties:
-        nsdId:
-          description: |
-            Identifier of the NSD that defines the NS instance to be created.
+        name:
           type: string
-          format: uuid
-        nsName:
-          description: |
-            Human-readable name of the NS instance to be created.
+        description:
           type: string
-        nsDescription:
-          description: |
-            Human-readable description of the NS instance to be created.
+        endpoints:
           type: string
-      required:
-        - nsdId
-        - nsName
-        - nsDescription
-    NsStateType:
+        user:
+          type: string
+        secret:
+          type: string
+        cacert:
+          type: string
+        lxd-cloud:
+          type: string
+        lxd-credentials:
+          type: string
+        k8s-cloud:
+          type: string
+        k8s-credentials:
+          type: string
+        model-config:
+          type: object
+          additionalProperties: true
+      additionalProperties: false
+    K8sRepoType:
       type: string
-      enum: [NOT_INSTANTIATED, INSTANTIATED]
-      description: |
-        State of the NS instance. Permitted values:
-         * `NOT_INSTANTIATED`: The NS instance is terminated or not instantiated.
-         * `INSTANTIATED`: The NS instance is instantiated.
-    NsInstance:
+      enum:
+        - chart
+        - bundle
+    K8sRepoInfo:
       type: object
       properties:
-        id:
-          description: Identifier of the NS instance.
+        _id:
           type: string
           format: uuid
-        nsInstanceName:
-          description: Human readable name of the NS instance.
+        name:
           type: string
-        nsInstanceDescription:
-          description: Human readable description of the NS instance.
+        description:
           type: string
-        nsdId:
-          description: Identifier of the NSD on which the NS instance is based.
+        type:
+          $ref: '#/components/schemas/K8sRepoType'
+        url:
           type: string
-          format: uuid
-        flavourId:
-          description: |
-            Identifier of the NS deployment flavour applied to the NS instance.
-            This attribute shall be present if the nsState attribute value is
-            INSTANTIATED.
+          format: uri
+        username:
           type: string
-        vnfInstance:
-          description: |
-            Information on constituent VNF(s) of the NS instance. If the
-            "nsState" attribute is INSTANTIATED, at least either one
-            "vnfInstance" attribute or one "nestedNsInstanceId" attribute shall
-            be present.
-          type: array
-          items:
-            $ref: '#/components/schemas/VnfInstance'
-        pnfInfo:
-          description: |
-            Information on the PNF(s) that are part of the NS instance.
-          type: array
-          items:
-            $ref: '#/components/schemas/PnfInfo'
-        virtualLinkInfo:
-          description: |
-            Information on the VL(s) of the NS instance. This attribute shall
-            be present if the nsState attribute value is INSTANTIATED and if
-            the NS instance has specified connectivity.
-          type: array
-          items:
-            $ref: '#/components/schemas/NsVirtualLinkInfo'
-        vnffgInfo:
-          description: |
-            Information on the VNFFG(s) of the NS instance.
-          type: array
-          items:
-            $ref: '#/components/schemas/VnffgInfo'
-        sapInfo:
-          description: |
-            Information on the SAP(s) of the NS instance.
-          type: array
-          items:
-            $ref: '#/components/schemas/SapInfo'
-        nestedNsInstanceId:
-          description: |
-            Identifier of the nested NS(s) of the NS instance. If the "nsState"
-            attribute is INSTANTIATED, at least either one "vnfInstance"
-            attribute or one "nestedNsInstanceId" attribute shall be present.
-          type: array
-          items:
-            type: string
-            format: uuid
-        nsState:
-          description: |
-            The state of the NS instance.
-          $ref: '#components/schemas/NsStateType'
-        nsScaleStatus:
-          description: |
-            Status of each NS scaling aspect declared in the applicable DF,
-            how "big" the NS instance has been scaled w.r.t. that aspect. This
-            attribute shall be present if the nsState attribute value is
-            INSTANTIATED.
-          type: array
-          items:
-            $ref: '#/components/schemas/NsScaleInfo'
-        additionalAffinityOrAntiAffinityRule:
-          description: |
-            Information on the additional affinity or anti-affinity rule from
-            NS instantiation operation. Shall not conflict with rules already
-            specified in the NSD.
-          type: array
-          items:
-            $ref: '#/components/schemas/AffinityOrAntiAffinityRule'
-        _links:
-          description: |
-            Links to resources related to this resource
+          description: repository username
+        password:
           type: string
-        self:
-          description: |
-            URI of this resource
+          description: repository password
+        ca-file:
           type: string
-          format: uri
-        nestedNsInstances:
-          description: |
-            Links to the nested NS instances of the present NS instance.
-          type: array
-          items:
-            type: string
-            format: uri
-        instantiate:
-          description: |
-            Link to the "instantiate" task resource, if the related operation
-            is possible based on the current status of this NS instance
-            resource (i.e. NS instance in NOT_INSTANTIATED state).
+          description: verify certificates of HTTPS-enabled servers using this CA bundle
+        cert-file:
           type: string
-          format: uri
-        terminate:
-          description: |
-            Link to the "terminate" task resource, if the related operation is
-            possible based on the current status of this NS instance resource
-            (i.e. NS instance is in INSTANTIATED state).
+          description: identify HTTPS client using this SSL certificate file
+        skip-tls-verify:
+          type: boolean
+          description: skip tls certificate checks for the repository
+        key-file:
           type: string
-          format: uri
-        update:
-          description: |
-            Link to the "update" task resource, if the related operation is
-            possible based on the current status of this NS instance resource
-            (i.e. NS instance is in INSTANTIATED state).
+          description: identify HTTPS client using this SSL key file
+        oci:
+          type: boolean
+          default: false
+          description: >
+            Flag to indicate whether or not it is an OCI-enabled repo (default: false)
+      required:
+        - name
+        - type
+        - url
+      additionalProperties: false
+    ArrayOfK8sRepoInfo:
+      type: array
+      items:
+        $ref: '#/components/schemas/K8sRepoInfo'
+    CreateK8sRepoRequest:
+      type: object
+      properties:
+        name:
           type: string
-          format: uri
-        scale:
-          description: |
-            Link to the "scale" task resource, if the related operation is
-            supported for this NS instance, and is possible based on the
-            current status of this NS instance resource (i.e. NS instance is in
-            INSTANTIATED state).
+        description:
           type: string
-          format: uri
-        heal:
-          description: |
-            Link to the "heal" task resource, if the related operation is
-            supported for this NS instance, and is possible based on the
-            current status of this NS instance resource (i.e. NS instance is in
-            INSTANTIATED state).
+        type:
+          $ref: '#/components/schemas/K8sRepoType'
+        url:
           type: string
           format: uri
       required:
-        - id
-        - nsInstanceName
-        - nsInstanceDescription
-        - nsdId
-        - nsdInfoId
-        - nsState
-        - _links
-        - self
-    VnfInstance:
-      type: object
-      additionalProperties: true
-    PnfInfo:
-      type: object
-      additionalProperties: true
-    NsVirtualLinkInfo:
-      type: object
-      additionalProperties: true
-    VnffgInfo:
-      type: object
-      additionalProperties: true
-    SapInfo:
-      type: object
-      additionalProperties: true
-    NsScaleInfo:
-      type: object
-      additionalProperties: true
-    AffinityOrAntiAffinityRule:
-      type: object
-      additionalProperties: true
-    SapData:
+        - name
+        - type
+        - url
+      additionalProperties: false
+    NslcmSubscriptionResponse:
       type: object
-      additionalProperties: true
-    AddPnfData:
-      type: object
-      additionalProperties: true
-    VnfInstanceData:
-      type: object
-      additionalProperties: true
-    VnfLocationConstraint:
-      type: object
-      additionalProperties: true
-    ParamsForVnf:
-      type: object
-      additionalProperties: true
-    InstantiateNsRequest:
+      properties:
+        id:
+          type: string
+          format: uuid
+        filter:
+          type: object
+        CallbackUri:
+          type: string
+          format: uri
+        _links:
+          type: object
+    NslcmSubscriptionInfo:
       type: object
       properties:
-        nsFlavourId:
-          description: Identifier of the NS deployment flavour to be instantiated.
+        _id:
           type: string
-        sapData:
-          description: Create data concerning the SAPs of this NS.
-          type: array
-          items:
-            $ref: '#/components/schemas/SapData'
-        addpnfData:
-          description: Information on the PNF(s) that are part of this NS.
+          format: uuid
+        _admin:
+          type: object
+        schema_version:
+          type: string
+          format: 'X.Y[.Z]'
+        CallbackUri:
+          type: string
+          format: uri
+        filter:
+          type: object
+        authentication:
+          $ref: '#/components/schemas/Authenticationschema'
+    ArrayOfNslcmSubscriptionInfo:
+      type: array
+      items:
+        $ref: '#/components/schemas/NslcmSubscriptionInfo'
+    NsInstanceSubscriptionFilter:
+      description: |
+        used to identify the network service
+      type: object
+      oneOf:
+        - $ref: '#/components/schemas/nsdIds'
+        - $ref: '#/components/schemas/vnfdIds'
+        - $ref: '#/components/schemas/pnfdIds'
+        - $ref: '#/components/schemas/nsInstanceIds'
+        - $ref: '#/components/schemas/nsInstanceNames'
+    nsdIds:
+      type: array
+      items:
+        type: string
+    vnfdIds:
+      type: array
+      items:
+        type: string
+    pnfdIds:
+      type: array
+      items:
+        type: string
+    nsInstanceIds:
+      type: array
+      items:
+        type: string
+    nsInstanceNames:
+      type: array
+      items:
+        type: string
+    Nslcmsubschema:
+      type: object
+      properties:
+        nsInstanceSubscriptionFilter:
+           $ref: '#/components/schemas/NsInstanceSubscriptionFilter'
+        notificationTypes:
+          description: |
+            If NsLcmOperationOccurrenceNotification is selected then at least operationTypes or states is required. If NsLcmOperationOccurrenceNotification is selected then at least nsComponentTypes, lcmOpName and lcmOpOccStatus is required
           type: array
           items:
-            $ref: '#/components/schemas/AddPnfData'
-        vnfInstanceData:
-          description: |
-            Specify an existing VNF instance to be used in the NS. If needed,
-            the VNF Profile to be used for this VNF instance is also provided.
+            type: string
+            enum:
+              - NsIdentifierCreationNotification
+              - NsIdentifierDeletionNotification
+              - NsLcmOperationOccurrenceNotification
+              - NsChangeNotification
+        operationTypes:
           type: array
           items:
-            $ref: '#/components/schemas/VnfInstanceData'
-        nestedNsInstanceId:
-          description: |
-            Specify an existing NS instance to be used as a nested NS within the NS.
+            type: string
+            enum:
+              - INSTANTIATE
+              - SCALE
+              - TERMINATE
+              - UPDATE
+              - HEAL
+        operationStates:
           type: array
           items:
             type: string
-            format: uuid
-        localizationLanguage:
-          description: |
-            Defines the location constraints for the VNF to be instantiated as part of
-            the NS instantiation. An example can be a constraint for the VNF to be in a
-            specific geographic location.
+            enum:
+              - PROCESSING
+              - COMPLETED
+              - PARTIALLY_COMPLETED
+              - FAILED
+              - FAILED_TEMP
+              - ROLLING_BACK
+              - ROLLED_BACK
+        nsComponentTypes:
           type: array
           items:
-            $ref: '#/components/schemas/VnfLocationConstraint'
-        additionalParamsForNs:
-          description: |
-            Allows the OSS/BSS to provide additional parameter(s) at the NS level
-            (as opposed to the VNF level, which is covered in additionalParamsForVnf).
-          $ref: '#/components/schemas/KeyValuePairs'
-        additionalParamsForVnf:
-          description: |
-            Allows the OSS/BSS to provide additional parameter(s) per VNF instance
-            (as opposed to the NS level, which is covered in additionalParamsForNs).
-            This is for VNFs that are to be created by the NFVO as part of the NS
-            instantiation and not for existing VNF that are referenced for reuse.
+            type: string
+            enum:
+              - VNF
+              - NS
+              - PNF
+        lcmOpNameImpactingNsComponent:
           type: array
           items:
-            $ref: '#/components/schemas/ParamsForVnf'
-        startTime:
-          description: |
-            Timestamp indicating the earliest time to instantiate the NS.
-            Cardinality "0" indicates the NS instantiation takes place immediately.
-          type: string
-          format: date-time
-        nsInstantiationLevelId:
-          description: |
-            Identifies one of the NS instantiation levels declared in the DF applicable
-            to this NS instance. If not present, the default NS instantiation level as
-            declared in the NSD shall be used.
-          type: string
-        additionalAffinityOrAntiAffiniityRule:
-          description: |
-            Specifies additional affinity or anti-affinity constraint for the VNF instances
-            to be instantiated as part of the NS instantiation. Shall not conflict with rules
-            already specified in the NSD.
+            type: string
+            enum:
+              - VNF_INSTANTIATE
+              - VNF_SCALE
+              - VNF_SCALE_TO_LEVEL
+              - VNF_CHANGE_FLAVOUR
+              - VNF_TERMINATE
+              - VNF_HEAL
+              - VNF_OPERATE
+              - VNF_CHANGE_EXT_CONN
+              - VNF_MODIFY_INFO
+              - NS_INSTANTIATE
+              - NS_SCALE
+              - NS_UPDATE
+              - NS_TERMINATE
+              - NS_HEAL
+        lcmOpOccStatusImpactingNsComponent:
           type: array
           items:
-            $ref: '#/components/schemas/AffinityOrAntiAffinityRule'
-      required:
-        - nsFlavourId
-    UpdateNsRequest:
+            type: string
+            enum:
+              - START
+              - COMPLETED
+              - PARTIALLY_COMPLETED
+              - FAILED
+              - ROLLED_BACK
+    Authenticationschema:
       type: object
       properties:
-        updateType:
+        authType:
           type: string
-          enum: [ ADD_VNF, REMOVE_VNF, INSTANTIATE_VNF, CHANGE_VNF_DF,
-                  OPERATE_VNF, MODIFY_VNF_INFORMATION, CHANGE_EXTERNAL_VNF_CONNECTIVITY,
-                  REMOVE_SAP, ADD_NESTED_NS, REMOVE_NESTED_NS, ASSOC_NEW_NSD_VERSION,
-                  MOVE_VNF, ADD_VNFFG, REMOVE_VNFFG, UPDATE_VNFFG, CHANGE_NS_DF, ADD_PNF,
-                  MODIFY_PNF, REMOVE_PNF ]
-          description: |
-            The type of update. It determines also which one of the following parameters
-            is present in the operation. Possible values include:
-             * `ADD_VNF`: Adding existing VNF instance(s)
-             * `REMOVE_VNF`: Removing VNF instance(s)
-             * `INSTANTIATE_VNF`: Instantiating new VNF(s)
-             * `CHANGE_VNF_DF`: Changing VNF DF
-             * `OPERATE_VNF`: Changing VNF state,
-             * `MODIFY_VNF_INFORMATION`: Modifying VNF information and/or the configurable
-             properties of VNF instance(s)
-             * `CHANGE_EXTERNAL_VNF_CONNECTIVITY`: Changing the external connectivity of VNF
-             instance(s)
-             * `ADD_SAP`: Adding SAP(s)
-             * `REMOVE_SAP`: Removing SAP(s)
-             * `ADD_NESTED_NS`: Adding existing NS instance(s) as nested NS(s)
-             * `REMOVE_NESTED_NS`: Removing existing nested NS instance(s)
-             * `ASSOC_NEW_NSD_VERSION`: Associating a new NSD version to the NS instance
-             * `MOVE_VNF`: Moving VNF instance(s) from one origin NS instance to another target NS
-             instance
-             * `ADD_VNFFG`: Adding VNFFG(s)
-             * `REMOVE_VNFFG`: Removing VNFFG(s)
-             * `UPDATE_VNFFG`: Updating VNFFG(s)
-             * `CHANGE_NS_DF`: Changing NS DF
-             * `ADD_PNF`: Adding PNF
-             * `MODIFY_PNF`: Modifying PNF
-             * `REMOVE_PNF`: Removing PNF
-      # Specific properties are required for each updateType. Pending to be added.
-      additionalProperties: true
-      required:
-        - updateType
-    ScaleNsRequest:
-      type: object
-      additionalProperties: true
-    HealNsData:
-      type: object
-      additionalProperties: true
-    HealVnfData:
-      type: object
-      additionalProperties: true
-    HealNsRequest:
+          enum:
+            - basic
+        paramsBasic:
+          type: object
+          properties:
+            userName:
+              type: string
+            password:
+              type: string
+    NslcmSubscriptionRequest:
       type: object
       properties:
-        healNsData:
-          description: |
-            Provides the information needed to heal an NS. Either the parameter healNsData
-            or the parameter healVnfData, but not both shall be provided.
-          $ref: '#/components/schemas/HealNsData'
-        healVnfData:
-          description: |
-            Provides the information needed to heal a VNF. Either the parameter healNsData
-            or the parameter healVnfData, but not both shall be provided.
-          type: array
-          items:
-            $ref: '#/components/schemas/HealVnfData'
-    TerminateNsRequest:
+        filter:
+          $ref: '#/components/schemas/Nslcmsubschema'
+        CallbackUri:
+          type: string
+          format: uri
+        authentication:
+          $ref: '#/components/schemas/Authenticationschema'
+      required:
+        - CallbackUri
+    CancelNSLCMOpOccRequest:
       type: object
       properties:
-        terminationTime:
-          description: |
-            Timestamp indicating the end time of the NS, i.e. the NS will be terminated
-            automatically at this timestamp. Cardinality "0" indicates the NS termination
-            takes place immediately.
+        cancelMode:
           type: string
-          format: date-time
-    ArrayOfNsInstance:
-      type: array
-      items:
-        $ref: '#/components/schemas/NsInstance'
+          enum:
+            - GRACEFUL
+            - FORCEFUL
+  # END SCHEMAS
+
   requestBodies:
     CreateNsdInfoRequest:
       content:
@@ -2050,11 +9258,21 @@ components:
         application/yaml:
           schema:
             $ref: '#/components/schemas/NsdInfoModifications'
-    NsdContent:
+    AlarmInfoModifications:
+      content:
+        application/json:
+          schema:
+            $ref: '#/components/schemas/AlarmInfoModifications'
+        application/yaml:
+          schema:
+            $ref: '#/components/schemas/AlarmInfoModifications'
+    NsDescriptor:
       content:
         text/plain:
           schema:
             $ref: '#/components/schemas/NsDescriptor'
+    NsPackage:
+      content:
         application/zip:
           schema:
             $ref: '#/components/schemas/NsPackage'
@@ -2079,30 +9297,37 @@ components:
         application/zip:
           schema:
             $ref: '#/components/schemas/VnfPackage'
-    UploadVnfPackageFromUriRequest:
+    VnfDescriptor:
+      content:
+        text/plain:
+          schema:
+            $ref: '#/components/schemas/VnfDescriptor'
+    # CreateNsRequest:
+      # Substituted by InstantiateNsRequest
+    InstantiateNsRequest:
       content:
         application/json:
           schema:
-            $ref: '#/components/schemas/UploadVnfPackageFromUriRequest'
+            $ref: '#/components/schemas/InstantiateNsRequest'
         application/yaml:
           schema:
-            $ref: '#/components/schemas/UploadVnfPackageFromUriRequest'
-    CreateNsRequest:
+            $ref: '#/components/schemas/InstantiateNsRequest'
+    HealNsRequest:
       content:
         application/json:
           schema:
-            $ref: '#/components/schemas/CreateNsRequest'
+            $ref: '#/components/schemas/HealNsRequest'
         application/yaml:
           schema:
-            $ref: '#/components/schemas/CreateNsRequest'
-    InstantiateNsRequest:
+            $ref: '#/components/schemas/HealNsRequest'
+    NSinstanceMigrateRequest:
       content:
         application/json:
           schema:
-            $ref: '#/components/schemas/InstantiateNsRequest'
+            $ref: '#/components/schemas/NSinstanceMigrateRequest'
         application/yaml:
           schema:
-            $ref: '#/components/schemas/InstantiateNsRequest'
+            $ref: '#/components/schemas/NSinstanceMigrateRequest'
     ScaleNsRequest:
       content:
         application/json:
@@ -2111,6 +9336,14 @@ components:
         application/yaml:
           schema:
             $ref: '#/components/schemas/ScaleNsRequest'
+    TerminateNsRequest:
+      content:
+        application/json:
+          schema:
+            $ref: '#/components/schemas/TerminateNsRequest'
+        application/yaml:
+          schema:
+            $ref: '#/components/schemas/TerminateNsRequest'
     UpdateNsRequest:
       content:
         application/json:
@@ -2119,25 +9352,249 @@ components:
         application/yaml:
           schema:
             $ref: '#/components/schemas/UpdateNsRequest'
-    HealNsRequest:
+    VerticalscaleNsRequest:
       content:
         application/json:
           schema:
-            $ref: '#/components/schemas/HealNsRequest'
+            $ref: '#/components/schemas/VerticalscaleNsRequest'
         application/yaml:
           schema:
-            $ref: '#/components/schemas/HealNsRequest'
-    TerminateNsRequest:
+            $ref: '#/components/schemas/VerticalscaleNsRequest'
+    # CreateNSinstanceContentRequest:
+      # Substituted by InstantiateNsRequest
+    CreateNstInfoRequest:
       content:
         application/json:
           schema:
-            $ref: '#/components/schemas/TerminateNsRequest'
+            $ref: '#/components/schemas/CreateNstInfoRequest'
         application/yaml:
           schema:
-            $ref: '#/components/schemas/TerminateNsRequest'
+            $ref: '#/components/schemas/CreateNstInfoRequest'
+    NetSliceTemplate:
+      content:
+        text/plain:
+          schema:
+            $ref: '#/components/schemas/NetSliceTemplate'
+    NetSlicePackage:
+      content:
+        application/zip:
+          schema:
+            $ref: '#/components/schemas/NetSlicePackage'
+    NstInfoModifications:
+      content:
+        application/json:
+          schema:
+            $ref: '#/components/schemas/NstInfoModifications'
+        application/yaml:
+          schema:
+            $ref: '#/components/schemas/NstInfoModifications'
+    # CreateNsiRequest:
+      # Substituted by InstantiateNsiRequest
+    InstantiateNsiRequest:
+      content:
+        application/json:
+          schema:
+            $ref: '#/components/schemas/InstantiateNsiRequest'
+        application/yaml:
+          schema:
+            $ref: '#/components/schemas/InstantiateNsiRequest'
+    TerminateNsiRequest:
+      content:
+        application/json:
+          schema:
+            $ref: '#/components/schemas/TerminateNsiRequest'
+        application/yaml:
+          schema:
+            $ref: '#/components/schemas/TerminateNsiRequest'
+    NsiActionRequest:
+      content:
+        application/json:
+          schema:
+            $ref: '#/components/schemas/NsiActionRequest'
+        application/yaml:
+          schema:
+            $ref: '#/components/schemas/NsiActionRequest'
+    # CreateNsiContentRequest:
+      # Substituted by InstantiateNsiRequest
+    CreateTokenRequest:
+      content:
+        application/json:
+          schema:
+            $ref: '#/components/schemas/CreateTokenRequest'
+        application/yaml:
+          schema:
+            $ref: '#/components/schemas/CreateTokenRequest'
+    CreateUserRequest:
+      content:
+        application/json:
+          schema:
+            $ref: '#/components/schemas/CreateUserRequest'
+        application/yaml:
+          schema:
+            $ref: '#/components/schemas/CreateUserRequest'
+    EditUserRequest:
+      content:
+        application/json:
+          schema:
+            $ref: '#/components/schemas/EditUserRequest'
+        application/yaml:
+          schema:
+            $ref: '#/components/schemas/EditUserRequest'
+    CreateProjectRequest:
+      content:
+        application/json:
+          schema:
+            $ref: '#/components/schemas/CreateProjectRequest'
+        application/yaml:
+          schema:
+            $ref: '#/components/schemas/CreateProjectRequest'
+    EditProjectRequest:
+      content:
+        application/json:
+          schema:
+            $ref: '#/components/schemas/EditProjectRequest'
+        application/yaml:
+          schema:
+            $ref: '#/components/schemas/EditProjectRequest'
+    CreateRoleRequest:
+      content:
+        application/json:
+          schema:
+            $ref: '#/components/schemas/CreateRoleRequest'
+        application/yaml:
+          schema:
+            $ref: '#/components/schemas/CreateRoleRequest'
+    EditRoleRequest:
+      content:
+        application/json:
+          schema:
+            $ref: '#/components/schemas/EditRoleRequest'
+        application/yaml:
+          schema:
+            $ref: '#/components/schemas/EditRoleRequest'
+    CreateVimRequest:
+      content:
+        application/json:
+          schema:
+            $ref: '#/components/schemas/CreateVimRequest'
+        application/yaml:
+          schema:
+            $ref: '#/components/schemas/CreateVimRequest'
+    EditVimRequest:
+      content:
+        application/json:
+          schema:
+            $ref: '#/components/schemas/EditVimRequest'
+        application/yaml:
+          schema:
+            $ref: '#/components/schemas/EditVimRequest'
+    CreateWimRequest:
+      content:
+        application/json:
+          schema:
+            $ref: '#/components/schemas/CreateWimRequest'
+        application/yaml:
+          schema:
+            $ref: '#/components/schemas/CreateWimRequest'
+    EditWimRequest:
+      content:
+        application/json:
+          schema:
+            $ref: '#/components/schemas/EditWimRequest'
+        application/yaml:
+          schema:
+            $ref: '#/components/schemas/EditWimRequest'
+    CreateSdnRequest:
+      content:
+        application/json:
+          schema:
+            $ref: '#/components/schemas/CreateSdnRequest'
+        application/yaml:
+          schema:
+            $ref: '#/components/schemas/CreateSdnRequest'
+    EditSdnRequest:
+      content:
+        application/json:
+          schema:
+            $ref: '#/components/schemas/EditSdnRequest'
+        application/yaml:
+          schema:
+            $ref: '#/components/schemas/EditSdnRequest'
+    CreatePduRequest:
+      content:
+        application/json:
+          schema:
+            $ref: '#/components/schemas/CreatePduRequest'
+        application/yaml:
+          schema:
+            $ref: '#/components/schemas/CreatePduRequest'
+    EditPduRequest:
+      content:
+        application/json:
+          schema:
+            $ref: '#/components/schemas/EditPduRequest'
+        application/yaml:
+          schema:
+            $ref: '#/components/schemas/EditPduRequest'
+    CreateK8sClusterRequest:
+      content:
+        application/json:
+          schema:
+            $ref: '#/components/schemas/CreateK8sClusterRequest'
+        application/yaml:
+          schema:
+            $ref: '#/components/schemas/CreateK8sClusterRequest'
+    EditK8sClusterRequest:
+      content:
+        application/json:
+          schema:
+            $ref: '#/components/schemas/EditK8sClusterRequest'
+        application/yaml:
+          schema:
+            $ref: '#/components/schemas/EditK8sClusterRequest'
+    CreateVcaRequest:
+      content:
+        application/json:
+          schema:
+            $ref: '#/components/schemas/CreateVcaRequest'
+        application/yaml:
+          schema:
+            $ref: '#/components/schemas/CreateVcaRequest'
+    EditVcaRequest:
+      content:
+        application/json:
+          schema:
+            $ref: '#/components/schemas/EditVcaRequest'
+        application/yaml:
+          schema:
+            $ref: '#/components/schemas/EditVcaRequest'
+    CreateK8sRepoRequest:
+      content:
+        application/json:
+          schema:
+            $ref: '#/components/schemas/CreateK8sRepoRequest'
+        application/yaml:
+          schema:
+            $ref: '#/components/schemas/CreateK8sRepoRequest'
+    NslcmSubscriptionRequest:
+      content:
+        application/json:
+          schema:
+            $ref: '#/components/schemas/NslcmSubscriptionRequest'
+        application/yaml:
+          schema:
+            $ref: '#/components/schemas/NslcmSubscriptionRequest'
+    CancelNSLCMOpOccRequest:
+      content:
+        application/json:
+          schema:
+            $ref: '#/components/schemas/CancelNSLCMOpOccRequest'
+        application/yaml:
+          schema:
+            $ref: '#/components/schemas/CancelNSLCMOpOccRequest'
+  # END REQUEST BODIES
+
   securitySchemes:
     bearerAuth:
       type: http
       scheme: bearer
-
-