Align DMI Plugin REST API Specification and Implementation

Issue-ID: CPS-824
Signed-off-by: puthuparambil.aditya <aditya.puthuparambil@bell.ca>
Change-Id: If4478f6afd6a36570dc2d800484cffdb40c256c9
diff --git a/docs/api/swagger/openapi.yaml b/docs/api/swagger/openapi.yaml
index 54676fe..300557b 100644
--- a/docs/api/swagger/openapi.yaml
+++ b/docs/api/swagger/openapi.yaml
@@ -4,29 +4,29 @@
   description: Adds Data Model Inventory Registry capability for ONAP
   version: 1.0.0
 servers:
-- url: /dmi
+  - url: /dmi
 tags:
-- name: dmi-plugin-internal
-  description: DMI plugin internal rest apis
-- name: dmi-plugin
-  description: DMI plugin rest apis
+  - name: dmi-plugin-internal
+    description: DMI plugin internal rest apis
+  - name: dmi-plugin
+    description: DMI plugin rest apis
 paths:
   /v1/ch/{cmHandle}/modules:
     post:
       tags:
-      - dmi-plugin
+        - dmi-plugin
       summary: Get all modules for cm handle
       description: Get all modules for given cm handle
       operationId: getModuleReferences
       parameters:
-      - name: cmHandle
-        in: path
-        description: The cm handle to fetch all the modules
-        required: true
-        style: simple
-        explode: false
-        schema:
-          type: string
+        - name: cmHandle
+          in: path
+          description: The identifier for a network function, network element, subnetwork,
+            or any other cm object by managed Network CM Proxy
+          required: true
+          schema:
+            type: string
+            example: my-cm-handle
       requestBody:
         description: Operational body
         content:
@@ -40,39 +40,42 @@
             application/json:
               schema:
                 $ref: '#/components/schemas/ModuleSet'
-        "400":
-          description: Bad Request
+        "404":
+          description: The specified resource was not found
           content:
             application/json:
               schema:
                 $ref: '#/components/schemas/ErrorMessage'
-        "401":
-          description: Unauthorized
+              example:
+                status: 404
+                message: Resource Not Found
+                details: The requested resource is not found
+        "500":
+          description: Internal Server Error
           content:
             application/json:
               schema:
                 $ref: '#/components/schemas/ErrorMessage'
-        "403":
-          description: Forbidden
-          content:
-            application/json:
-              schema:
-                $ref: '#/components/schemas/ErrorMessage'
+              example:
+                status: 500
+                message: Internal Server Error
+                details: Internal Server Error occured
   /v1/ch/{cmHandle}/moduleResources:
     post:
       tags:
-      - dmi-plugin
+        - dmi-plugin
       summary: Retrieve module resources
       description: Retrieve module resources for one or more modules
       operationId: retrieveModuleResources
       parameters:
-      - name: cmHandle
-        in: path
-        description: The identifier for a network function, network element, subnetwork,
-          or any other cm object by managed Network CM Proxy
-        required: true
-        schema:
-          type: string
+        - name: cmHandle
+          in: path
+          description: The identifier for a network function, network element, subnetwork,
+            or any other cm object by managed Network CM Proxy
+          required: true
+          schema:
+            type: string
+            example: my-cm-handle
       requestBody:
         content:
           application/json:
@@ -86,28 +89,30 @@
             application/json:
               schema:
                 $ref: '#/components/schemas/YangResources'
-        "400":
-          description: Bad Request
+        "404":
+          description: The specified resource was not found
           content:
             application/json:
               schema:
                 $ref: '#/components/schemas/ErrorMessage'
-        "401":
-          description: Unauthorized
+              example:
+                status: 404
+                message: Resource Not Found
+                details: The requested resource is not found
+        "500":
+          description: Internal Server Error
           content:
             application/json:
               schema:
                 $ref: '#/components/schemas/ErrorMessage'
-        "403":
-          description: Forbidden
-          content:
-            application/json:
-              schema:
-                $ref: '#/components/schemas/ErrorMessage'
+              example:
+                status: 500
+                message: Internal Server Error
+                details: Internal Server Error occured
   /v1/inventory/cmHandles:
     post:
       tags:
-      - dmi-plugin-internal
+        - dmi-plugin-internal
       summary: register given list of cm handles (internal use only)
       description: register given list of cm handles (internal use only)
       operationId: registerCmHandles
@@ -125,75 +130,80 @@
             text/plain:
               schema:
                 type: string
+                example: cm-handle registered successfully
         "400":
           description: Bad Request
           content:
             application/json:
               schema:
                 $ref: '#/components/schemas/ErrorMessage'
-        "401":
-          description: Unauthorized
+              example:
+                status: 400
+                message: Bad Request
+                details: The provided request is not valid
+        "500":
+          description: Internal Server Error
           content:
             application/json:
               schema:
                 $ref: '#/components/schemas/ErrorMessage'
-        "403":
-          description: Forbidden
-          content:
-            application/json:
-              schema:
-                $ref: '#/components/schemas/ErrorMessage'
+              example:
+                status: 500
+                message: Internal Server Error
+                details: Internal Server Error occured
       x-api-audience: component-internal
   /v1/ch/{cmHandle}/data/ds/ncmp-datastore:passthrough-operational:
     post:
       tags:
-      - dmi-plugin
+        - dmi-plugin
       summary: Get resource data from passthrough-operational for cm handle
       description: Get resource data from passthrough-operational for cm handle. Will
         support read operations only.
       operationId: dataAccessPassthroughOperational
       parameters:
-      - name: cmHandle
-        in: path
-        description: The identifier for a network function, network element, subnetwork,
-          or any other cm object by managed Network CM Proxy
-        required: true
-        schema:
-          type: string
-      - name: resourceIdentifier
-        in: query
-        description: Resource identifier to get/set the resource data
-        required: true
-        allowReserved: true
-        schema:
-          type: string
-      - name: accept
-        in: header
-        description: Accept parameter for response, if accept parameter is null, that
-          means client can accept any format.
-        schema:
-          type: string
-          enum:
-          - application/json
-          - application/yang-data+json
-      - name: options
-        in: query
-        description: options parameter in query, it is mandatory to wrap key(s)=value(s)
-          in parenthesis'()'.
-        required: false
-        allowReserved: true
-        schema:
-          type: string
-        examples:
-          sample1:
-            value:
-              options: (key1=value1,key2=value2)
-          sample2:
-            value:
-              options: (key1=value1,key2=value1/value2)
-          sample3:
-            value:
-              options: (key1=10,key2=value2,key3=[val31,val32])
+        - name: cmHandle
+          in: path
+          description: The identifier for a network function, network element, subnetwork,
+            or any other cm object by managed Network CM Proxy
+          required: true
+          schema:
+            type: string
+            example: my-cm-handle
+        - name: resourceIdentifier
+          in: query
+          description: Resource identifier to get/set the resource data
+          required: true
+          allowReserved: true
+          schema:
+            type: string
+            example: my-schema:my-node
+        - name: accept
+          in: header
+          description: Accept parameter for response, if accept parameter is null, that
+            means client can accept any format.
+          schema:
+            type: string
+            enum:
+              - application/json
+              - application/yang-data+json
+        - name: options
+          in: query
+          description: options parameter in query, it is mandatory to wrap key(s)=value(s)
+            in parenthesis'()'.
+          required: false
+          allowReserved: true
+          schema:
+            type: string
+          examples:
+            sample1:
+              value:
+                options: (key1=value1,key2=value2)
+            sample2:
+              value:
+                options: (key1=value1,key2=value1/value2)
+            sample3:
+              value:
+                options: (key1=10,key2=value2,key3=val31,val32)
       requestBody:
         description: Operational body
         content:
@@ -207,28 +217,34 @@
             application/json:
               schema:
                 type: object
+                example:
+                  - yangSource: my-yang-source
+                    moduleName: my-module-name
+                    revision: my-revision
         "400":
           description: Bad Request
           content:
             application/json:
               schema:
                 $ref: '#/components/schemas/ErrorMessage'
-        "401":
-          description: Unauthorized
+              example:
+                status: 400
+                message: Bad Request
+                details: The provided request is not valid
+        "500":
+          description: Internal Server Error
           content:
             application/json:
               schema:
                 $ref: '#/components/schemas/ErrorMessage'
-        "403":
-          description: Forbidden
-          content:
-            application/json:
-              schema:
-                $ref: '#/components/schemas/ErrorMessage'
+              example:
+                status: 500
+                message: Internal Server Error
+                details: Internal Server Error occured
   /v1/ch/{cmHandle}/data/ds/ncmp-datastore:passthrough-running:
     post:
       tags:
-      - dmi-plugin
+        - dmi-plugin
       summary: Get, Create or Update request for data passthrough-running for a cm-handle
       description: Post request to Get, Create or to Update resource data for a cm-handle.
         Since all requests need to include additional information in a request body
@@ -236,77 +252,95 @@
         the request body instead.
       operationId: dataAccessPassthroughRunning
       parameters:
-      - name: cmHandle
-        in: path
-        description: The identifier for a network function, network element, subnetwork,
-          or any other cm object by managed Network CM Proxy
-        required: true
-        schema:
-          type: string
-      - name: resourceIdentifier
-        in: query
-        description: Resource identifier to get/set the resource data
-        required: true
-        allowReserved: true
-        schema:
-          type: string
-      - name: accept
-        in: header
-        description: Accept parameter for response, if accept parameter is null, that
-          means client can accept any format.
-        schema:
-          type: string
-          enum:
-          - application/json
-          - application/yang-data+json
-      - name: options
-        in: query
-        description: options parameter in query, it is mandatory to wrap key(s)=value(s)
-          in parenthesis'()'.
-        required: false
-        allowReserved: true
-        schema:
-          type: string
-        examples:
-          sample1:
-            value:
-              options: (key1=value1,key2=value2)
-          sample2:
-            value:
-              options: (key1=value1,key2=value1/value2)
-          sample3:
-            value:
-              options: (key1=10,key2=value2,key3=[val31,val32])
+        - name: cmHandle
+          in: path
+          description: The identifier for a network function, network element, subnetwork,
+            or any other cm object by managed Network CM Proxy
+          required: true
+          schema:
+            type: string
+            example: my-cm-handle
+        - name: resourceIdentifier
+          in: query
+          description: Resource identifier to get/set the resource data
+          required: true
+          allowReserved: true
+          schema:
+            type: string
+            example: my-schema:my-node
+        - name: accept
+          in: header
+          description: Accept parameter for response, if accept parameter is null, that
+            means client can accept any format.
+          schema:
+            type: string
+            enum:
+              - application/json
+              - application/yang-data+json
+        - name: options
+          in: query
+          description: options parameter in query, it is mandatory to wrap key(s)=value(s)
+            in parenthesis'()'.
+          required: false
+          allowReserved: true
+          schema:
+            type: string
+          examples:
+            sample1:
+              value:
+                options: (key1=value1,key2=value2)
+            sample2:
+              value:
+                options: (key1=value1,key2=value1/value2)
+            sample3:
+              value:
+                options: (key1=10,key2=value2,key3=val31,val32)
       requestBody:
         content:
           application/json:
             schema:
               $ref: '#/components/schemas/DataAccessRequest'
       responses:
+        "200":
+          description: OK
+          content:
+            application/json:
+              schema:
+                type: object
+                example:
+                  - yangSource: my-yang-source
+                    moduleName: my-module-name
+                    revision: my-revision
         "201":
           description: Created
           content:
             text/plain:
               schema:
                 type: string
+                example: cm-handle registered successfully
+        "204":
+          description: No Content
+          content: {}
         "400":
           description: Bad Request
           content:
             application/json:
               schema:
                 $ref: '#/components/schemas/ErrorMessage'
-        "401":
-          description: Unauthorized
+              example:
+                status: 400
+                message: Bad Request
+                details: The provided request is not valid
+        "500":
+          description: Internal Server Error
           content:
             application/json:
               schema:
                 $ref: '#/components/schemas/ErrorMessage'
-        "403":
-          description: Forbidden
-          content:
-            application/json:
-              schema:
-                $ref: '#/components/schemas/ErrorMessage'
+              example:
+                status: 500
+                message: Internal Server Error
+                details: Internal Server Error occured
 components:
   schemas:
     ModuleReferencesRequest:
@@ -326,9 +360,6 @@
           type: array
           items:
             $ref: '#/components/schemas/ModuleSet_schemas'
-    revision:
-      type: string
-      example: someRevision
     ErrorMessage:
       title: Error
       type: object
@@ -346,9 +377,6 @@
           $ref: '#/components/schemas/ModuleResourcesReadRequest_data'
         cmHandleProperties:
           $ref: '#/components/schemas/cmHandleProperties'
-    name:
-      type: string
-      example: someName
     YangResources:
       type: array
       items:
@@ -357,15 +385,22 @@
       properties:
         yangSource:
           type: string
+          example: my-yang-source
         moduleName:
           type: string
+          example: my-module-name
         revision:
-          $ref: '#/components/schemas/revision'
+          type: string
+          example: my-revision
     CmHandles:
       type: object
       properties:
         cmHandles:
           type: array
+          example:
+            - cmHandleId1
+            - cmHandleId2
+            - cmHandleId3
           items:
             type: string
     DataAccessRequest:
@@ -373,15 +408,18 @@
       properties:
         operation:
           type: string
+          example: read
           enum:
-          - read
-          - create
-          - update
-          - delete
+            - read
+            - create
+            - update
+            - delete
         dataType:
           type: string
+          example: my-data-type
         data:
           type: string
+          example: my-data
         cmHandleProperties:
           $ref: '#/components/schemas/cmHandleProperties'
     ModuleSet_schemas:
@@ -389,17 +427,22 @@
       properties:
         moduleName:
           type: string
+          example: my-module-name
         revision:
-          $ref: '#/components/schemas/revision'
+          type: string
+          example: my-revision
         namespace:
           type: string
+          example: my-namespace
     ModuleResourcesReadRequest_data_modules:
       type: object
       properties:
         name:
-          $ref: '#/components/schemas/name'
+          type: string
+          example: my-name
         revision:
-          $ref: '#/components/schemas/revision'
+          type: string
+          example: my-revision
     ModuleResourcesReadRequest_data:
       type: object
       properties: