Bug 1170 API for NS Subcription
[osm/SOL005.git] / osm-openapi.yaml
index 24120ea..4478965 100644 (file)
@@ -2,7 +2,7 @@ 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: |
@@ -29,12 +29,20 @@ tags:
     description: Management operations of NetSlice Templates
   - name: 'NetSlice instances'
     description: Management operations of NetSlice Instances
-# - name: 'NSPM'
-#   description: Management operations of NSPMs
-# - name: 'PDU'
-#   description: Management operations of PDUs
-# - name: 'Admin'
-#   description: Management operations of Administration items
+  - 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: []
@@ -137,7 +145,7 @@ paths:
         required: true
         description: NSD Info ID
         schema:
-          type : string
+          type: string
     get:
       tags:
         - "NS packages"
@@ -253,7 +261,7 @@ paths:
         required: true
         description: NSD Info ID
         schema:
-          type : string
+          type: string
     get:
       tags:
         - "NS packages"
@@ -345,13 +353,13 @@ paths:
         required: true
         description: NS Package ID
         schema:
-          type : string
+          type: string
       - name: artifactPath
         in: path
         required: true
         description: Artifact Path
         schema:
-          type : string
+          type: string
     get:
       tags:
         - "NS packages"
@@ -408,7 +416,7 @@ paths:
         required: true
         description: NS Package ID
         schema:
-          type : string
+          type: string
     get:
       tags:
         - "NS packages"
@@ -559,7 +567,7 @@ paths:
         required: true
         description: NS Package ID
         schema:
-          type : string
+          type: string
     get:
       tags:
         - "NS packages"
@@ -766,7 +774,7 @@ paths:
         required: true
         description: VNF Package ID
         schema:
-          type : string
+          type: string
     get:
       tags:
         - "VNF packages"
@@ -882,7 +890,7 @@ paths:
         required: true
         description: VNF Package ID
         schema:
-          type : string
+          type: string
     get:
       tags:
         - "VNF packages"
@@ -927,7 +935,7 @@ paths:
         required: true
         description: VNF Package ID
         schema:
-          type : string
+          type: string
     get:
       tags:
         - "VNF packages"
@@ -1022,13 +1030,13 @@ paths:
         required: true
         description: VNF Package ID
         schema:
-          type : string
+          type: string
       - name: artifactPath
         in: path
         required: true
         description: Artifact Path
         schema:
-          type : string
+          type: string
     get:
       tags:
         - "VNF packages"
@@ -1191,7 +1199,7 @@ paths:
         required: true
         description: VNF Package Content ID
         schema:
-          type : string
+          type: string
     get:
       tags:
         - "VNF packages"
@@ -1351,7 +1359,7 @@ paths:
       description: Create a new NS instance resource
       operationId: addNSinstance
       requestBody:
-        $ref: '#/components/requestBodies/CreateNsRequest'
+        $ref: '#/components/requestBodies/InstantiateNsRequest'
       responses:
         '201':
           description: Created
@@ -1398,7 +1406,7 @@ paths:
         required: true
         description: NS Instance ID
         schema:
-          type : string
+          type: string
     get:
       tags:
         - "NS instances"
@@ -1479,7 +1487,7 @@ paths:
         required: true
         description: NS Instance ID
         schema:
-          type : string
+          type: string
     post:
       tags:
         - "NS instances"
@@ -1542,7 +1550,7 @@ paths:
         required: true
         description: NS Instance ID
         schema:
-          type : string
+          type: string
     post:
       tags:
         - "NS instances"
@@ -1598,7 +1606,7 @@ paths:
         required: true
         description: NS Instance ID
         schema:
-          type : string
+          type: string
     post:
       tags:
         - "NS instances"
@@ -1662,7 +1670,7 @@ paths:
         required: true
         description: NS Instance ID
         schema:
-          type : string
+          type: string
     post:
       tags:
         - "NS instances"
@@ -1769,7 +1777,7 @@ paths:
       description: Create a new NS instance
       operationId: createNSinstanceContent
       requestBody:
-        $ref: '#/components/requestBodies/CreateNSinstanceContentRequest'
+        $ref: '#/components/requestBodies/InstantiateNsRequest'
       responses:
         '201':
           description: Created
@@ -1816,7 +1824,7 @@ paths:
         required: true
         description: NS Instance Content ID
         schema:
-          type : string
+          type: string
     get:
       tags:
         - "NS instances"
@@ -1947,7 +1955,7 @@ paths:
         required: true
         description: NS LCM Operation Occurrence ID
         schema:
-          type : string
+          type: string
     get:
       tags:
         - "NS instances"
@@ -2036,7 +2044,7 @@ paths:
         required: true
         description: VNF Instance ID
         schema:
-          type : string
+          type: string
     get:
       tags:
         - "NS instances"
@@ -2077,6 +2085,174 @@ paths:
           $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 NetSlice Templates
@@ -2175,7 +2351,7 @@ paths:
         required: true
         description: NetSlice Template ID
         schema:
-          type : string
+          type: string
     get:
       tags:
         - "NetSlice templates"
@@ -2256,13 +2432,13 @@ paths:
         required: true
         description: NetSlice Template ID
         schema:
-          type : string
+          type: string
       - name: artifactPath
         in: path
         required: true
         description: Artifact Path
         schema:
-          type : string
+          type: string
     get:
       tags:
         - "NetSlice templates"
@@ -2319,7 +2495,7 @@ paths:
         required: true
         description: NetSlice Template ID
         schema:
-          type : string
+          type: string
     get:
       tags:
         - "NetSlice templates"
@@ -2364,7 +2540,7 @@ paths:
         required: true
         description: NetSlice Template ID
         schema:
-          type : string
+          type: string
     get:
       tags:
         - "NetSlice templates"
@@ -2562,7 +2738,7 @@ paths:
         required: true
         description: NetSlice Template ID
         schema:
-          type : string
+          type: string
     get:
       tags:
         - "NetSlice templates"
@@ -2722,7 +2898,7 @@ paths:
       description: Create a new NetSlice instance resource
       operationId: addNSI
       requestBody:
-        $ref: '#/components/requestBodies/CreateNsiRequest'
+        $ref: '#/components/requestBodies/InstantiateNsiRequest'
       responses:
         '201':
           description: Created
@@ -2769,7 +2945,7 @@ paths:
         required: true
         description: NetSlice Instance ID
         schema:
-          type : string
+          type: string
     get:
       tags:
         - "NetSlice instances"
@@ -2850,7 +3026,7 @@ paths:
         required: true
         description: NetSlice Instance ID
         schema:
-          type : string
+          type: string
     post:
       tags:
         - "NetSlice instances"
@@ -2913,7 +3089,7 @@ paths:
         required: true
         description: NetSlice Instance ID
         schema:
-          type : string
+          type: string
     post:
       tags:
         - "NetSlice instances"
@@ -2977,7 +3153,7 @@ paths:
         required: true
         description: NetSlice Instance ID
         schema:
-          type : string
+          type: string
     post:
       tags:
         - "NetSlice instances"
@@ -3084,7 +3260,7 @@ paths:
       description: Create a new NetSlice instance
       operationId: createNSIContent
       requestBody:
-        $ref: '#/components/requestBodies/CreateNsiContentRequest'
+        $ref: '#/components/requestBodies/InstantiateNsiRequest'
       responses:
         '201':
           description: Created
@@ -3131,7 +3307,7 @@ paths:
         required: true
         description: NetSlice Instance Content ID
         schema:
-          type : string
+          type: string
     get:
       tags:
         - "NetSlice instances"
@@ -3262,7 +3438,7 @@ paths:
         required: true
         description: NetSlice LCM Operation Occurrence ID
         schema:
-          type : string
+          type: string
     get:
       tags:
         - "NetSlice instances"
@@ -3306,790 +3482,4696 @@ paths:
 # END NetSlice Instances
 
 # BEGIN NSPM
-  # /nspm/v1/pm_jobs/{pmJobId}/reports/{reportId}
+  '/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
-  # /pdu/v1/pdu_descriptors/{pduDescriptorId}
-# END PDU
-
-# BEGIN Admin
-  # /admin/v1/tokens
-  # /admin/v1/tokens/{tokenId}
-  # /admin/v1/users
-  # /admin/v1/users/{userId}
-  # /admin/v1/projects
-  # /admin/v1/projects/{projectId}
-  # /admin/v1/roles
-  # /admin/v1/roles/{roleId}
-  # /admin/v1/vims
-  # /admin/v1/vims/{vimId}
-  # /admin/v1/vim_accounts
-  # /admin/v1/vim_accounts/{vimAccountId}
-  # /admin/v1/wim_accounts
-  # /admin/v1/wim_accounts/{wimAccountId}
-  # /admin/v1/sdns
-  # /admin/v1/sdns/{sdnId}
-# END Admin
-
-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'
-    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'
-  # END RESPONSES
+  '/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
 
-  schemas:
-    ObjectId:
+# 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:
+                $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 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/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
+    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
+    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
+    # 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'
+    # 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
+        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
+        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
+    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
+        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
+        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
+        k8srepos:
+          type: integer
+          minimum: 0
+          nullable: true
+        osmrepos:
+          type: integer
+          minimum: 0
+          nullable: true
+      additionalProperties: false
+    ProjectInfo:
       type: object
       properties:
-        id:
+        _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
+        name:
+          type: string
+        quotas:
+          $ref: '#/components/schemas/QuotasInfo'
+    ArrayOfProjectInfo:
+      type: array
+      items:
+        $ref: '#/components/schemas/ProjectInfo'
+    CreateProjectRequest:
       type: object
       properties:
-        id:
-          description: NSD Identifier
-          type: string
         name:
-          description: NSD Name
           type: string
-        description:
-          description: NSD Description
+        admin:
+          type: boolean
+        quotas:
+          $ref: '#/components/schemas/QuotasInfo'
+      required:
+        - name
+      additionalProperties: false
+    EditProjectRequest:
+      type: object
+      properties:
+        name:
           type: string
-        nsd:
-          $ref: 'http://osm-download.etsi.org/ftp/osm-doc/nsd.html'
-    NsdInfo:
+        admin:
+          type: boolean
+        quotas:
+          $ref: '#/components/schemas/EditQuotasInfo'
+      additionalProperties: false
+    PermissionsInfo:
+      type: object
+      additionalProperties:
+        type: boolean
+        nullable: false
       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
+        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:
-          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
-        nsd:
-          $ref: 'http://osm-download.etsi.org/ftp/osm-doc/nsd.html'
-      required:
-        - _id
-        - id
-    ArrayOfNsdInfo:
+        permissions:
+          $ref: '#/components/schemas/PermissionsInfo'
+    ArrayOfRoleInfo:
       type: array
       items:
-        $ref: '#/components/schemas/NsdInfo'
-    ProblemDetails:
+        $ref: '#/components/schemas/RoleInfo'
+    CreateRoleRequest:
       type: object
       properties:
-        type:
-          type: string
-          format: uri
-        title:
-          type: string
-        status:
-          type: integer
-        detail:
-          type: string
-        instance:
+        name:
           type: string
-          format: uri
-      additionalProperties: true
+        permissions:
+          $ref: '#/components/schemas/PermissionsInfo'
       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
+        - name
+      additionalProperties: false
+    EditRoleRequest:
       type: object
       properties:
-        id:
-          description: VNF Package Identifier
-          type: string
         name:
-          description: VNF Package Name
-          type: string
-        description:
-          description: VNF Package description
           type: string
-        vnfd:
-          $ref: 'http://osm-download.etsi.org/ftp/osm-doc/vnfd.html'
-    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
+        permissions:
+          $ref: '#/components/schemas/EditPermissionsInfo'
+      additionalProperties: false
+    VimType:
+      type: string
+      enum:
+        - openvim
+        - openstack
+        - vmware
+        - opennebula
+        - aws
+        - azure
+        - fos
+    VimInfo:
       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
+        schema_version:
+          type: string
+          format: X.Y[.Z]
+        schema_type:
           type: string
         name:
-          description: VNF Package Name
           type: string
         description:
-          description: VNF Package description
           type: string
-        vnfd:
-          $ref: 'http://osm-download.etsi.org/ftp/osm-doc/vnfd.html'
-      required:
-        - _id
-        - id
-    ArrayOfVnfPkgInfo:
-      type: array
-      items:
-        $ref: '#/components/schemas/VnfPkgInfo'
-    CreateNsRequest:
-      type: object
-      properties:
-        nsdId:
-          description: |
-            Identifier of the NSD that defines the NS instance to be created.
+        vim:
           type: string
-          format: uuid
-        nsName:
-          description: |
-            Human-readable name of the NS instance to be created.
+        datacenter:
           type: string
-        nsDescription:
-          description: |
-            Human-readable description of the NS instance to be created.
+        vim_type:
+          $ref: '#/components/schemas/VimType'
+        vim_url:
           type: string
-        vimAccountId:
-          description: |
-            Identifier of the VIM Account where the NS instance shall be created.
+          format: uri
+        vim_tenant_name:
           type: string
-          format: uuid
-      required:
-        - nsdId
-        - nsName
-        - vimAccountId
-    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
+        vim_user:
+          type: string
+        vim_password:
+          type: string
+        config:
+          type: object
+          additionalProperties: true
+    ArrayOfVimInfo:
+      type: array
+      items:
+        $ref: '#/components/schemas/VimInfo'
+    CreateVimRequest:
       type: object
       properties:
-        _id:
-          description: Identifier of the NS instance.
+        schema_version:
           type: string
-          format: uuid
-        id:
-          description: Identifier of the NS instance.
+          format: X.Y[.Z]
+        schema_type:
           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
-        nsr:
-          $ref: 'http://osm-download.etsi.org/ftp/osm-doc/nsr.html'
+        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
+        config:
+          type: object
+          additionalProperties: true
       required:
-        - _id
-        - id
         - name
-    InstantiateNsRequest:
+        - vim_url
+        - vim_type
+        - vim_user
+        - vim_password
+        - vim_tenant_name
+      additionalProperties: false
+    EditVimRequest:
       type: object
       properties:
-        nsName:
-          description: |
-            Human-readable name of the NS instance to be created.
+        name:
           type: string
-        nsdId:
-          description: |
-            Identifier of the NSD that defines the NS instance to be created.
+        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
+        config:
+          type: object
+          additionalProperties: true
+      additionalProperties: false
+    ObjectId_plus_OpId:
+      type: object
+      properties:
+        id:
           type: string
           format: uuid
-        vimAccountId:
-          description: |
-            Identifier of the VIM Account where the NS instance shall be created.
+        op_id:
           type: string
           format: uuid
-      required:
-        - nsName
-        - nsdId
-        - vimAccountId
-    ScaleNsRequest:
+    OpId:
       type: object
       properties:
-        scaleType:
+        op_id:
           type: string
-          enum:
-            - SCALE_VNF
-        scaleVnfData:
-          type: object
-          properties:
-            scaleVnfType:
-              type: string
-              enum:
-                - SCALE_IN
-                - SCALE_OUT
-            scaleByStepData:
-              type: object
-              properties:
-                scaling-group-descriptor:
-                  type: string
-                member-vnf-index:
-                  type: string
-              additionalProperties: true
-          additionalProperties: true
-      additionalProperties: true
-    TerminateNsRequest:
+          format: uuid
+    WimType:
+      type: string
+      enum:
+        - onos
+        - odl
+        - tapi
+        - dynpac
+        - fake
+    WimInfo:
       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.
+        _id:
           type: string
-          format: date-time
-    ArrayOfNsInstance:
+          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/NsInstance'
-    NSinstanceActionRequest:
+        $ref: '#/components/schemas/WimInfo'
+    CreateWimRequest:
       type: object
       properties:
-        primitive:
+        schema_version:
           type: string
-        primitive_params:
-          $ref: '#/components/schemas/KeyValuePairs'
-        lcmOperationType:
+          format: X.Y[.Z]
+        schema_type:
           type: string
-        nsInstanceId:
+        name:
           type: string
-          format: uuid
-        member_vnf_index:
+        description:
           type: string
-        vdu_id:
+        wim:
           type: string
-        vdu_count_index:
-          type: integer
+        wim_type:
+          $ref: '#/components/schemas/WimType'
+        wim_url:
+          type: string
+          format: uri
+        user:
+          type: string
+        password:
+          type: string
+        config:
+          type: object
+          additionalProperties: true
       required:
-        - primitive
-        - primitive_params
+        - name
+        - wim_url
+        - wim_type
       additionalProperties: false
-    CreateNSinstanceContentRequest:
+    EditWimRequest:
       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
-        vimAccountId:
-          description: |
-            Identifier of the VIM Account where the NS instance shall be created.
+        wim:
           type: string
-          format: uuid
-      required:
-        - nsdId
-        - nsName
-        - vimAccountId
-    CreateNSinstanceContentResponse:
-      type: object
-      properties:
-        id:
+        wim_type:
           type: string
-          format: uuid
-        nslcmop_id:
+        wim_url:
           type: string
-          format: uuid
-    NsLcmOpOcc:
+          format: uri
+        user:
+          type: string
+        password:
+          type: string
+        config:
+          type: object
+          additionalProperties: true
+      additionalProperties: false
+    SdnBasicProperties:
       type: object
       properties:
-        _id:
+        name:
           type: string
-          format: uuid
-        id:
+        description:
           type: string
-          format: uuid
-        lcmOperationType:
+        dpid:
           type: string
-        nsInstanceId:
+          format: mac_address
+        ip:
           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:
+          format: ipv4
+        port:
+          type: integer
+        type:
           type: string
-        detailed-status:
+          enum:
+            - floodlight
+            - opendaylight
+            - onos
+        version:
           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
+        user:
+          type: string
+        password:
+          type: string
+    SdnExtraProperties:
       type: object
       properties:
         _id:
           type: string
           format: uuid
-        id:
+        schema_version:
           type: string
-          format: uuid
-        vnfr:
-          $ref: 'http://osm-download.etsi.org/ftp/osm-doc/vnfr.html'
-    ArrayOfVnfInstanceInfo:
+          format: X.Y[.Z]
+    SdnInfo:
+      allOf:
+        - $ref: '#/components/schemas/SdnExtraProperties'
+        - $ref: '#/components/schemas/SdnBasicProperties'
+    ArrayOfSdnInfo:
       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
+        $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:
-          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
-        nst:
-          $ref: 'http://osm-download.etsi.org/ftp/osm-doc/nst.html'
-    ArrayOfNstInfo:
+        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/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
+        $ref: '#/components/schemas/PduInfo'
+    CreatePduRequest:
       type: object
       properties:
-        id:
-          description: NST Identifier
-          type: string
         name:
-          description: NST Name
           type: string
-        nsd:
-          $ref: 'http://osm-download.etsi.org/ftp/osm-doc/nst.html'
-    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:
           type: string
-          format: uuid
-        id:
-          description: Identifier of the NetSlice instance.
+        description:
           type: string
-          format: uuid
+        shared:
+          type: boolean
+        vims:
+          type: array
+          items:
+            type: string
+        vim_accounts:
+          type: array
+          items:
+            type: string
+        interfaces:
+          $ref: '#/components/schemas/PduInterfaces'
+      required:
+        - name
+        - type
+        - interfaces
+      additionalProperties: false
+    EditPduRequest:
+      type: object
+      properties:
         name:
-          description: Human readable name of the NetSlice instance.
+          type: string
+        type:
           type: string
         description:
-          description: Human readable description of the NetSlice instance.
           type: string
-        nsi:
-          $ref: 'http://osm-download.etsi.org/ftp/osm-doc/nsi.html'
-      required:
-        - _id
-        - id
-        - name
-    ArrayOfNetSliceInstance:
+        shared:
+          type: boolean
+        vims:
+          type: array
+          items:
+            type: string
+        vim_accounts:
+          type: array
+          items:
+            type: string
+        interfaces:
+          $ref: '#/components/schemas/PduInterfaces'
+      additionalProperties: false
+    K8sClusterNetList:
       type: array
       items:
-        $ref: '#/components/schemas/NetSliceInstance'
-    CreateNsiRequest:
+        type: object
+        additionalProperties: true
+    K8sClusterInfo:
       type: object
       properties:
-        nstId:
-          description: |
-            Identifier of the NST that defines the NetSlice instance to be created.
+        _id:
           type: string
           format: uuid
-        nsiName:
-          description: |
-            Human-readable name of the NetSlice instance to be created.
+        schema_version:
           type: string
-        nsiDescription:
-          description: |
-            Human-readable description of the NetSlice instance to be created.
+          format: X.Y[.Z]
+        schema_type:
           type: string
-        vimAccountId:
-          description: |
-            Identifier of the VIM Account where the NetSlice instance shall be created.
+        name:
+          type: string
+        description:
+          type: string
+        credentials:
+          type: object
+          additionalProperties: true
+        vim_account:
           type: string
           format: uuid
-      required:
-        - nstId
-        - nsiName
-        - vimAccountId
-    InstantiateNsiRequest:
+        k8s_version:
+          type: string
+        nets:
+          $ref: '#/components/schemas/K8sClusterNetList'
+        namespace:
+          type: string
+        cni:
+          type: array
+          items:
+            type: string
+    ArrayOfK8sClusterInfo:
+      type: array
+      items:
+        $ref: '#/components/schemas/K8sClusterInfo'
+    CreateK8sClusterRequest:
       type: object
       properties:
-        nsiName:
-          description: |
-            Human-readable name of the NetSlice instance to be created.
+        schema_version:
           type: string
-        nstId:
-          description: |
-            Identifier of the NST that defines the NetSlice instance to be created.
+          format: X.Y[.Z]
+        schema_type:
+          type: string
+        name:
+          type: string
+        description:
+          type: string
+        credentials:
+          type: object
+          additionalProperties: true
+        vim_account:
           type: string
           format: uuid
-        vimAccountId:
-          description: |
-            Identifier of the VIM Account where the NetSlice instance shall be created.
+        k8s_version:
           type: string
-          format: uuid
+        nets:
+          $ref: '#/components/schemas/K8sClusterNetList'
+        namespace:
+          type: string
+        cni:
+          type: array
+          items:
+            type: string
       required:
-        - nsiName
-        - nstId
-        - vimAccountId
-    TerminateNsiRequest:
+        - name
+        - credentials
+        - vim_account
+        - k8s_version
+        - nets
+      additionalProperties: false
+    EditK8sClusterRequest:
       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.
+        name:
           type: string
-          format: date-time
-    NsiActionRequest:
+        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
+    K8sRepoType:
+      type: string
+      enum:
+        - chart
+        - bundle
+    K8sRepoInfo:
       type: object
       properties:
-        primitive:
+        _id:
           type: string
-        primitive_params:
-          $ref: '#/components/schemas/KeyValuePairs'
-        lcmOperationType:
+          format: uuid
+        name:
           type: string
-        netsliceInstanceId:
+        description:
           type: string
-          format: uuid
-      required:
-        - primitive
-        - primitive_params
-    CreateNsiContentRequest:
+        type:
+          $ref: '#/components/schemas/K8sRepoType'
+        url:
+          type: string
+          format: uri
+    ArrayOfK8sRepoInfo:
+      type: array
+      items:
+        $ref: '#/components/schemas/K8sRepoInfo'
+    CreateK8sRepoRequest:
       type: object
       properties:
-        nstId:
-          description: |
-            Identifier of the NST that defines the NetSlice instance to be created.
+        name:
           type: string
-          format: uuid
-        nsiName:
-          description: |
-            Human-readable name of the NetSlice instance to be created.
+        description:
           type: string
-        vimAccountId:
-          description: |
-            Identifier of the VIM Account where the NetSlice instance shall be created.
+        type:
+          $ref: '#/components/schemas/K8sRepoType'
+        url:
           type: string
-          format: uuid
+          format: uri
       required:
-        - nsdId
-        - nsName
-        - vimAccountId
-    CreateNsiContentResponse:
+        - name
+        - type
+        - url
+      additionalProperties: false
+    NslcmSubscriptionResponse:
       type: object
       properties:
         id:
           type: string
           format: uuid
-        nsilcmop_id:
+        filter:
+          type: object
+        CallbackUri:
           type: string
-          format: uuid
-    NsiLcmOpOcc:
+          format: uri
+        _links:
+          type: object
+    NslcmSubscriptionInfo:
       type: object
       properties:
         _id:
           type: string
           format: uuid
-        id:
-          type: string
-          format: uuid
-        lcmOperationType:
+        _admin:
+          type: object
+        schema_version:
           type: string
-        netsliceInstanceId:
+          format: 'X.Y[.Z]'
+        CallbackUri:
           type: string
-          format: uuid
-        isAutomaticInvocation:
-          type: boolean
-        isCancelPending:
-          type: boolean
-        startTime:
-          type: number
-          format: float
-        statusEnteredTime:
-          type: number
-          format: float
-        operationParams:
+          format: uri
+        filter:
           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:
+        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:
+            type: string
+            enum:
+              - NsIdentifierCreationNotification
+              - NsIdentifierDeletionNotification
+              - NsLcmOperationOccurrenceNotification
+              - NsChangeNotification
+        operationTypes:
+          type: array
+          items:
+            type: string
+            enum:
+              - INSTANTIATE
+              - SCALE
+              - TERMINATE
+              - UPDATE
+              - HEAL
+        operationStates:
+          type: array
+          items:
+            type: string
+            enum:
+              - PROCESSING
+              - COMPLETED
+              - PARTIALLY_COMPLETED
+              - FAILED
+              - FAILED_TEMP
+              - ROLLING_BACK
+              - ROLLED_BACK
+        nsComponentTypes:
+          type: array
+          items:
+            type: string
+            enum:
+              - VNF
+              - NS
+              - PNF
+        lcmOpNameImpactingNsComponent:
+          type: array
+          items:
+            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:
+            type: string
+            enum:
+              - START
+              - COMPLETED
+              - PARTIALLY_COMPLETED
+              - FAILED
+              - ROLLED_BACK
+    Authenticationschema:
+      type: object
+      properties:
+        authType:
           type: string
-        links:
+          enum:
+            - basic
+        paramsBasic:
           type: object
           properties:
-            self:
+            userName:
               type: string
-              format: path   # uri?
-            netsliceInstanceId:
+            password:
               type: string
-              format: path   # uri?
-    ArrayOfNsiLcmOpOcc:
-      type: array
-      items:
-        $ref: '#/components/schemas/NsiLcmOpOcc'
+    NslcmSubscriptionRequest:
+      type: object
+      properties:
+        filter:
+          $ref: '#/components/schemas/Nslcmsubschema'
+        CallbackUri:
+          type: string
+          format: uri
+        authentication:
+          $ref: '#/components/schemas/Authenticationschema'
+      required:
+        - CallbackUri
   # END SCHEMAS
 
   requestBodies:
@@ -4145,14 +8227,8 @@ components:
         text/plain:
           schema:
             $ref: '#/components/schemas/VnfDescriptor'
-    CreateNsRequest:
-      content:
-        application/json:
-          schema:
-            $ref: '#/components/schemas/CreateNsRequest'
-        application/yaml:
-          schema:
-            $ref: '#/components/schemas/CreateNsRequest'
+    # CreateNsRequest:
+      # Substituted by InstantiateNsRequest
     InstantiateNsRequest:
       content:
         application/json:
@@ -4177,14 +8253,8 @@ components:
         application/yaml:
           schema:
             $ref: '#/components/schemas/TerminateNsRequest'
-    CreateNSinstanceContentRequest:
-      content:
-        application/json:
-          schema:
-            $ref: '#/components/schemas/CreateNSinstanceContentRequest'
-        application/yaml:
-          schema:
-            $ref: '#/components/schemas/CreateNSinstanceContentRequest'
+    # CreateNSinstanceContentRequest:
+      # Substituted by InstantiateNsRequest
     CreateNstInfoRequest:
       content:
         application/json:
@@ -4211,14 +8281,8 @@ components:
         application/yaml:
           schema:
             $ref: '#/components/schemas/NstInfoModifications'
-    CreateNsiRequest:
-      content:
-        application/json:
-          schema:
-            $ref: '#/components/schemas/CreateNsiRequest'
-        application/yaml:
-          schema:
-            $ref: '#/components/schemas/CreateNsiRequest'
+    # CreateNsiRequest:
+      # Substituted by InstantiateNsiRequest
     InstantiateNsiRequest:
       content:
         application/json:
@@ -4243,14 +8307,160 @@ components:
         application/yaml:
           schema:
             $ref: '#/components/schemas/NsiActionRequest'
-    CreateNsiContentRequest:
+    # 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'
+    CreateK8sRepoRequest:
+      content:
+        application/json:
+          schema:
+            $ref: '#/components/schemas/CreateK8sRepoRequest'
+        application/yaml:
+          schema:
+            $ref: '#/components/schemas/CreateK8sRepoRequest'
+    NslcmSubscriptionRequest:
       content:
         application/json:
           schema:
-            $ref: '#/components/schemas/CreateNsiContentRequest'
+            $ref: '#/components/schemas/NslcmSubscriptionRequest'
         application/yaml:
           schema:
-            $ref: '#/components/schemas/CreateNsiContentRequest'
+            $ref: '#/components/schemas/NslcmSubscriptionRequest'
   # END REQUEST BODIES
 
   securitySchemes: