Query data NCMP-Operational with CPSpath

New GET Endpoint: /v1/ch/{cm-handle}/data/ds/{ncmp-datastore-name}/query?cps-path={CPSPath}
Implemented error for {ncmp-datastore-name} other than operational
- (Toine) Refactored and renamed (abstract) handler for better re-use
Mainly by introducing a separate handler for OperationalQuery

Reviewers Toine, Sourabh, Priyank

Issue-ID: CPS-1002
Signed-off-by: lukegleeson <luke.gleeson@est.tech>
Change-Id: Iaca018869d95d4ce800072431baa190050a6dad0
diff --git a/cps-ncmp-rest/docs/openapi/components.yaml b/cps-ncmp-rest/docs/openapi/components.yaml
index 7ca09ce..b4b8c84 100644
--- a/cps-ncmp-rest/docs/openapi/components.yaml
+++ b/cps-ncmp-rest/docs/openapi/components.yaml
@@ -456,11 +456,16 @@
     cpsPathInQuery:
       name: cps-path
       in: query
-      description: cps-path
+      description: For more details on cps path, please refer https://docs.onap.org/projects/onap-cps/en/latest/cps-path.html
       required: false
       schema:
         type: string
         default: /
+      examples:
+        container cps path:
+          value: //bookstore
+        list attributes cps path:
+          value: //categories[@code=1]
     dmiPluginIdentifierInQuery:
       name: dmi-plugin-identifier
       in: query
@@ -527,7 +532,7 @@
         default: application/json
         example: application/yang-data+json
     datastoreName:
-      name: ncmp-datastore-name
+      name: datastore-name
       in: path
       description: The type of the requested data
       required: true
diff --git a/cps-ncmp-rest/docs/openapi/ncmp.yml b/cps-ncmp-rest/docs/openapi/ncmp.yml
index 38db26f..1f7cce9 100755
--- a/cps-ncmp-rest/docs/openapi/ncmp.yml
+++ b/cps-ncmp-rest/docs/openapi/ncmp.yml
@@ -194,6 +194,41 @@
       502:
         $ref: 'components.yaml#/components/responses/BadGateway'
 
+queryResourceDataForCmHandle:
+  get:
+    tags:
+      - network-cm-proxy
+    summary: Query resource data for a given cm handle
+    description: Query resource data for a given cm handle
+    operationId: queryResourceDataForCmHandle
+    parameters:
+      - $ref: 'components.yaml#/components/parameters/datastoreName'
+      - $ref: 'components.yaml#/components/parameters/cmHandleInPath'
+      - $ref: 'components.yaml#/components/parameters/cpsPathInQuery'
+      - $ref: 'components.yaml#/components/parameters/optionsParamInQuery'
+      - $ref: 'components.yaml#/components/parameters/topicParamInQuery'
+      - $ref: 'components.yaml#/components/parameters/includeDescendantsOptionInQuery'
+    responses:
+      200:
+        description: OK
+        content:
+          application/json:
+            schema:
+              type: object
+            examples:
+              dataSampleResponse:
+                $ref: 'components.yaml#/components/examples/dataSampleResponse'
+      400:
+        $ref: 'components.yaml#/components/responses/BadRequest'
+      401:
+        $ref: 'components.yaml#/components/responses/Unauthorized'
+      403:
+        $ref: 'components.yaml#/components/responses/Forbidden'
+      500:
+        $ref: 'components.yaml#/components/responses/InternalServerError'
+      502:
+        $ref: 'components.yaml#/components/responses/BadGateway'
+
 fetchModuleReferencesByCmHandle:
   get:
     description: fetch all module references (name and revision) for a given cm handle
diff --git a/cps-ncmp-rest/docs/openapi/openapi.yml b/cps-ncmp-rest/docs/openapi/openapi.yml
index fe0c4ac..ee29366 100755
--- a/cps-ncmp-rest/docs/openapi/openapi.yml
+++ b/cps-ncmp-rest/docs/openapi/openapi.yml
@@ -31,9 +31,12 @@
       type: http
       scheme: basic
 paths:
-  /v1/ch/{cm-handle}/data/ds/{ncmp-datastore-name}:
+  /v1/ch/{cm-handle}/data/ds/{datastore-name}:
     $ref: 'ncmp.yml#/resourceDataForCmHandle'
 
+  /v1/ch/{cm-handle}/data/ds/{datastore-name}/query:
+    $ref: 'ncmp.yml#/queryResourceDataForCmHandle'
+
   /v1/ch/{cm-handle}/modules:
     $ref: 'ncmp.yml#/fetchModuleReferencesByCmHandle'