Merge "Subscription model with status and predicates"
[cps.git] / docs / api / swagger / cps / openapi.yaml
index 953c82b..9f28526 100644 (file)
@@ -16,6 +16,8 @@ info:
     url: cps_logo.png
 servers:
   - url: /cps/api
+security:
+  - basicAuth: []
 tags:
   - name: cps-admin
     description: cps Admin
@@ -95,6 +97,8 @@ paths:
                 status: 500
                 message: Internal Server Error
                 details: Internal Server Error occurred
+      deprecated: true
+  /{apiVersion}/dataspaces:
     delete:
       tags:
         - cps-admin
@@ -102,6 +106,16 @@ paths:
       description: Delete a dataspace
       operationId: deleteDataspace
       parameters:
+        - name: apiVersion
+          in: path
+          description: apiVersion
+          required: true
+          schema:
+            type: string
+            default: v2
+            enum:
+              - v1
+              - v2
         - name: dataspace-name
           in: query
           description: dataspace-name
@@ -163,14 +177,553 @@ paths:
                 status: 500
                 message: Internal Server Error
                 details: Internal Server Error occurred
-  /v1/dataspaces/{dataspace-name}/anchors:
-    get:
+  /v2/dataspaces:
+    post:
+      tags:
+        - cps-admin
+      summary: Create a dataspace
+      description: Create a new dataspace
+      operationId: createDataspaceV2
+      parameters:
+        - name: dataspace-name
+          in: query
+          description: dataspace-name
+          required: true
+          schema:
+            type: string
+            example: my-dataspace
+      responses:
+        "201":
+          description: Created without response body
+        "400":
+          description: Bad Request
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/ErrorMessage'
+              example:
+                status: 400
+                message: Bad Request
+                details: The provided request is not valid
+        "401":
+          description: Unauthorized
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/ErrorMessage'
+              example:
+                status: 401
+                message: Unauthorized request
+                details: This request is unauthorized
+        "403":
+          description: Forbidden
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/ErrorMessage'
+              example:
+                status: 403
+                message: Request Forbidden
+                details: This request is forbidden
+        "409":
+          description: Conflict
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/ErrorMessage'
+              example:
+                status: 409
+                message: Conflicting request
+                details: The request cannot be processed as the resource is in use.
+        "500":
+          description: Internal Server Error
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/ErrorMessage'
+              example:
+                status: 500
+                message: Internal Server Error
+                details: Internal Server Error occurred
+  /{apiVersion}/admin/dataspaces:
+    get:
+      tags:
+        - cps-admin
+      summary: Get all dataspaces
+      description: Read all dataspaces
+      operationId: getAllDataspaces
+      parameters:
+        - name: apiVersion
+          in: path
+          description: apiVersion
+          required: true
+          schema:
+            type: string
+            default: v2
+            enum:
+              - v1
+              - v2
+      responses:
+        "200":
+          description: OK
+          content:
+            application/json:
+              schema:
+                type: array
+                items:
+                  $ref: '#/components/schemas/DataspaceDetails'
+        "400":
+          description: Bad Request
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/ErrorMessage'
+              example:
+                status: 400
+                message: Bad Request
+                details: The provided request is not valid
+        "401":
+          description: Unauthorized
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/ErrorMessage'
+              example:
+                status: 401
+                message: Unauthorized request
+                details: This request is unauthorized
+        "403":
+          description: Forbidden
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/ErrorMessage'
+              example:
+                status: 403
+                message: Request Forbidden
+                details: This request is forbidden
+        "500":
+          description: Internal Server Error
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/ErrorMessage'
+              example:
+                status: 500
+                message: Internal Server Error
+                details: Internal Server Error occurred
+  /{apiVersion}/admin/dataspaces/{dataspace-name}:
+    get:
+      tags:
+        - cps-admin
+      summary: Get a dataspace
+      description: Read a dataspace given a dataspace name
+      operationId: getDataspace
+      parameters:
+        - name: apiVersion
+          in: path
+          description: apiVersion
+          required: true
+          schema:
+            type: string
+            default: v2
+            enum:
+              - v1
+              - v2
+        - name: dataspace-name
+          in: path
+          description: dataspace-name
+          required: true
+          schema:
+            type: string
+            example: my-dataspace
+      responses:
+        "200":
+          description: OK
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/DataspaceDetails'
+        "400":
+          description: Bad Request
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/ErrorMessage'
+              example:
+                status: 400
+                message: Bad Request
+                details: The provided request is not valid
+        "401":
+          description: Unauthorized
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/ErrorMessage'
+              example:
+                status: 401
+                message: Unauthorized request
+                details: This request is unauthorized
+        "403":
+          description: Forbidden
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/ErrorMessage'
+              example:
+                status: 403
+                message: Request Forbidden
+                details: This request is forbidden
+        "500":
+          description: Internal Server Error
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/ErrorMessage'
+              example:
+                status: 500
+                message: Internal Server Error
+                details: Internal Server Error occurred
+  /v1/dataspaces/{dataspace-name}/anchors:
+    post:
+      tags:
+        - cps-admin
+      summary: Create an anchor
+      description: Create a new anchor in the given dataspace
+      operationId: createAnchor
+      parameters:
+        - name: dataspace-name
+          in: path
+          description: dataspace-name
+          required: true
+          schema:
+            type: string
+            example: my-dataspace
+        - name: schema-set-name
+          in: query
+          description: schema-set-name
+          required: true
+          schema:
+            type: string
+            example: my-schema-set
+        - name: anchor-name
+          in: query
+          description: anchor-name
+          required: true
+          schema:
+            type: string
+            example: my-anchor
+      responses:
+        "201":
+          description: Created
+          content:
+            text/plain:
+              schema:
+                type: string
+                example: my-resource
+        "400":
+          description: Bad Request
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/ErrorMessage'
+              example:
+                status: 400
+                message: Bad Request
+                details: The provided request is not valid
+        "401":
+          description: Unauthorized
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/ErrorMessage'
+              example:
+                status: 401
+                message: Unauthorized request
+                details: This request is unauthorized
+        "403":
+          description: Forbidden
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/ErrorMessage'
+              example:
+                status: 403
+                message: Request Forbidden
+                details: This request is forbidden
+        "409":
+          description: Conflict
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/ErrorMessage'
+              example:
+                status: 409
+                message: Conflicting request
+                details: The request cannot be processed as the resource is in use.
+        "500":
+          description: Internal Server Error
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/ErrorMessage'
+              example:
+                status: 500
+                message: Internal Server Error
+                details: Internal Server Error occurred
+      deprecated: true
+  /v2/dataspaces/{dataspace-name}/anchors:
+    post:
+      tags:
+        - cps-admin
+      summary: Create an anchor
+      description: Create a new anchor in the given dataspace
+      operationId: createAnchorV2
+      parameters:
+        - name: dataspace-name
+          in: path
+          description: dataspace-name
+          required: true
+          schema:
+            type: string
+            example: my-dataspace
+        - name: schema-set-name
+          in: query
+          description: schema-set-name
+          required: true
+          schema:
+            type: string
+            example: my-schema-set
+        - name: anchor-name
+          in: query
+          description: anchor-name
+          required: true
+          schema:
+            type: string
+            example: my-anchor
+      responses:
+        "201":
+          description: Created without response body
+        "400":
+          description: Bad Request
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/ErrorMessage'
+              example:
+                status: 400
+                message: Bad Request
+                details: The provided request is not valid
+        "401":
+          description: Unauthorized
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/ErrorMessage'
+              example:
+                status: 401
+                message: Unauthorized request
+                details: This request is unauthorized
+        "403":
+          description: Forbidden
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/ErrorMessage'
+              example:
+                status: 403
+                message: Request Forbidden
+                details: This request is forbidden
+        "409":
+          description: Conflict
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/ErrorMessage'
+              example:
+                status: 409
+                message: Conflicting request
+                details: The request cannot be processed as the resource is in use.
+        "500":
+          description: Internal Server Error
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/ErrorMessage'
+              example:
+                status: 500
+                message: Internal Server Error
+                details: Internal Server Error occurred
+  /{apiVersion}/dataspaces/{dataspace-name}/anchors:
+    get:
+      tags:
+        - cps-admin
+      summary: Get anchors
+      description: "Read all anchors, given a dataspace"
+      operationId: getAnchors
+      parameters:
+        - name: apiVersion
+          in: path
+          description: apiVersion
+          required: true
+          schema:
+            type: string
+            default: v2
+            enum:
+              - v1
+              - v2
+        - name: dataspace-name
+          in: path
+          description: dataspace-name
+          required: true
+          schema:
+            type: string
+            example: my-dataspace
+      responses:
+        "200":
+          description: OK
+          content:
+            application/json:
+              schema:
+                type: array
+                items:
+                  $ref: '#/components/schemas/AnchorDetails'
+        "400":
+          description: Bad Request
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/ErrorMessage'
+              example:
+                status: 400
+                message: Bad Request
+                details: The provided request is not valid
+        "401":
+          description: Unauthorized
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/ErrorMessage'
+              example:
+                status: 401
+                message: Unauthorized request
+                details: This request is unauthorized
+        "403":
+          description: Forbidden
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/ErrorMessage'
+              example:
+                status: 403
+                message: Request Forbidden
+                details: This request is forbidden
+        "500":
+          description: Internal Server Error
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/ErrorMessage'
+              example:
+                status: 500
+                message: Internal Server Error
+                details: Internal Server Error occurred
+  /{apiVersion}/dataspaces/{dataspace-name}/anchors/{anchor-name}:
+    get:
+      tags:
+        - cps-admin
+      summary: Get an anchor
+      description: Read an anchor given an anchor name and a dataspace
+      operationId: getAnchor
+      parameters:
+        - name: apiVersion
+          in: path
+          description: apiVersion
+          required: true
+          schema:
+            type: string
+            default: v2
+            enum:
+              - v1
+              - v2
+        - name: dataspace-name
+          in: path
+          description: dataspace-name
+          required: true
+          schema:
+            type: string
+            example: my-dataspace
+        - name: anchor-name
+          in: path
+          description: anchor-name
+          required: true
+          schema:
+            type: string
+            example: my-anchor
+      responses:
+        "200":
+          description: OK
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/AnchorDetails'
+        "400":
+          description: Bad Request
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/ErrorMessage'
+              example:
+                status: 400
+                message: Bad Request
+                details: The provided request is not valid
+        "401":
+          description: Unauthorized
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/ErrorMessage'
+              example:
+                status: 401
+                message: Unauthorized request
+                details: This request is unauthorized
+        "403":
+          description: Forbidden
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/ErrorMessage'
+              example:
+                status: 403
+                message: Request Forbidden
+                details: This request is forbidden
+        "500":
+          description: Internal Server Error
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/ErrorMessage'
+              example:
+                status: 500
+                message: Internal Server Error
+                details: Internal Server Error occurred
+    delete:
       tags:
         - cps-admin
-      summary: Get anchors
-      description: "Read all anchors, given a dataspace"
-      operationId: getAnchors
+      summary: Delete an anchor
+      description: Delete an anchor given an anchor name and a dataspace
+      operationId: deleteAnchor
       parameters:
+        - name: apiVersion
+          in: path
+          description: apiVersion
+          required: true
+          schema:
+            type: string
+            default: v2
+            enum:
+              - v1
+              - v2
         - name: dataspace-name
           in: path
           description: dataspace-name
@@ -178,15 +731,17 @@ paths:
           schema:
             type: string
             example: my-dataspace
+        - name: anchor-name
+          in: path
+          description: anchor-name
+          required: true
+          schema:
+            type: string
+            example: my-anchor
       responses:
-        "200":
-          description: OK
-          content:
-            application/json:
-              schema:
-                type: array
-                items:
-                  $ref: '#/components/schemas/AnchorDetails'
+        "204":
+          description: No Content
+          content: {}
         "400":
           description: Bad Request
           content:
@@ -227,12 +782,13 @@ paths:
                 status: 500
                 message: Internal Server Error
                 details: Internal Server Error occurred
+  /v1/dataspaces/{dataspace-name}/schema-sets:
     post:
       tags:
         - cps-admin
-      summary: Create an anchor
-      description: Create a new anchor in the given dataspace
-      operationId: createAnchor
+      summary: Create a schema set
+      description: Create a new schema set in the given dataspace
+      operationId: createSchemaSet
       parameters:
         - name: dataspace-name
           in: path
@@ -248,13 +804,12 @@ paths:
           schema:
             type: string
             example: my-schema-set
-        - name: anchor-name
-          in: query
-          description: anchor-name
-          required: true
-          schema:
-            type: string
-            example: my-anchor
+      requestBody:
+        content:
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/MultipartFile'
+        required: true
       responses:
         "201":
           description: Created
@@ -313,13 +868,14 @@ paths:
                 status: 500
                 message: Internal Server Error
                 details: Internal Server Error occurred
-  /v1/dataspaces/{dataspace-name}/anchors/{anchor-name}:
-    get:
+      deprecated: true
+  /v2/dataspaces/{dataspace-name}/schema-sets:
+    post:
       tags:
         - cps-admin
-      summary: Get an anchor
-      description: Read an anchor given an anchor name and a dataspace
-      operationId: getAnchor
+      summary: Create a schema set
+      description: Create a new schema set in the given dataspace
+      operationId: createSchemaSetV2
       parameters:
         - name: dataspace-name
           in: path
@@ -328,20 +884,22 @@ paths:
           schema:
             type: string
             example: my-dataspace
-        - name: anchor-name
-          in: path
-          description: anchor-name
+        - name: schema-set-name
+          in: query
+          description: schema-set-name
           required: true
           schema:
             type: string
-            example: my-anchor
+            example: my-schema-set
+      requestBody:
+        content:
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/MultipartFile'
+        required: true
       responses:
-        "200":
-          description: OK
-          content:
-            application/json:
-              schema:
-                $ref: '#/components/schemas/AnchorDetails'
+        "201":
+          description: Created without response body
         "400":
           description: Bad Request
           content:
@@ -372,6 +930,16 @@ paths:
                 status: 403
                 message: Request Forbidden
                 details: This request is forbidden
+        "409":
+          description: Conflict
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/ErrorMessage'
+              example:
+                status: 409
+                message: Conflicting request
+                details: The request cannot be processed as the resource is in use.
         "500":
           description: Internal Server Error
           content:
@@ -382,31 +950,40 @@ paths:
                 status: 500
                 message: Internal Server Error
                 details: Internal Server Error occurred
-    delete:
+  /{apiVersion}/dataspaces/{dataspace-name}/schema-sets:
+    get:
       tags:
         - cps-admin
-      summary: Delete an anchor
-      description: Delete an anchor given an anchor name and a dataspace
-      operationId: deleteAnchor
+      summary: Get schema sets
+      description: "Read all schema sets, given a dataspace"
+      operationId: getSchemaSets
       parameters:
-        - name: dataspace-name
+        - name: apiVersion
           in: path
-          description: dataspace-name
+          description: apiVersion
           required: true
           schema:
             type: string
-            example: my-dataspace
-        - name: anchor-name
+            default: v2
+            enum:
+              - v1
+              - v2
+        - name: dataspace-name
           in: path
-          description: anchor-name
+          description: dataspace-name
           required: true
           schema:
             type: string
-            example: my-anchor
+            example: my-dataspace
       responses:
-        "204":
-          description: No Content
-          content: {}
+        "200":
+          description: OK
+          content:
+            application/json:
+              schema:
+                type: array
+                items:
+                  $ref: '#/components/schemas/SchemaSetDetails'
         "400":
           description: Bad Request
           content:
@@ -447,14 +1024,24 @@ paths:
                 status: 500
                 message: Internal Server Error
                 details: Internal Server Error occurred
-  /v1/dataspaces/{dataspace-name}/schema-sets:
-    post:
+  /{apiVersion}/dataspaces/{dataspace-name}/schema-sets/{schema-set-name}:
+    get:
       tags:
         - cps-admin
-      summary: Create a schema set
-      description: Create a new schema set in the given dataspace
-      operationId: createSchemaSet
+      summary: Get a schema set
+      description: Read a schema set given a schema set name and a dataspace
+      operationId: getSchemaSet
       parameters:
+        - name: apiVersion
+          in: path
+          description: apiVersion
+          required: true
+          schema:
+            type: string
+            default: v2
+            enum:
+              - v1
+              - v2
         - name: dataspace-name
           in: path
           description: dataspace-name
@@ -463,26 +1050,19 @@ paths:
             type: string
             example: my-dataspace
         - name: schema-set-name
-          in: query
+          in: path
           description: schema-set-name
           required: true
           schema:
             type: string
             example: my-schema-set
-      requestBody:
-        content:
-          multipart/form-data:
-            schema:
-              $ref: '#/components/schemas/MultipartFile'
-        required: true
       responses:
-        "201":
-          description: Created
+        "200":
+          description: OK
           content:
-            text/plain:
+            application/json:
               schema:
-                type: string
-                example: my-resource
+                $ref: '#/components/schemas/SchemaSetDetails'
         "400":
           description: Bad Request
           content:
@@ -513,16 +1093,6 @@ paths:
                 status: 403
                 message: Request Forbidden
                 details: This request is forbidden
-        "409":
-          description: Conflict
-          content:
-            application/json:
-              schema:
-                $ref: '#/components/schemas/ErrorMessage'
-              example:
-                status: 409
-                message: Conflicting request
-                details: The request cannot be processed as the resource is in use.
         "500":
           description: Internal Server Error
           content:
@@ -533,14 +1103,23 @@ paths:
                 status: 500
                 message: Internal Server Error
                 details: Internal Server Error occurred
-  /v1/dataspaces/{dataspace-name}/schema-sets/{schema-set-name}:
-    get:
+    delete:
       tags:
         - cps-admin
-      summary: Get a schema set
-      description: Read a schema set given a schema set name and a dataspace
-      operationId: getSchemaSet
+      summary: Delete a schema set
+      description: Delete a schema set given a schema set name and a dataspace
+      operationId: deleteSchemaSet
       parameters:
+        - name: apiVersion
+          in: path
+          description: apiVersion
+          required: true
+          schema:
+            type: string
+            default: v2
+            enum:
+              - v1
+              - v2
         - name: dataspace-name
           in: path
           description: dataspace-name
@@ -556,12 +1135,9 @@ paths:
             type: string
             example: my-schema-set
       responses:
-        "200":
-          description: OK
-          content:
-            application/json:
-              schema:
-                $ref: '#/components/schemas/SchemaSetDetails'
+        "204":
+          description: No Content
+          content: {}
         "400":
           description: Bad Request
           content:
@@ -592,6 +1168,16 @@ paths:
                 status: 403
                 message: Request Forbidden
                 details: This request is forbidden
+        "409":
+          description: Conflict
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/ErrorMessage'
+              example:
+                status: 409
+                message: Conflicting request
+                details: The request cannot be processed as the resource is in use.
         "500":
           description: Internal Server Error
           content:
@@ -602,12 +1188,14 @@ paths:
                 status: 500
                 message: Internal Server Error
                 details: Internal Server Error occurred
-    delete:
+  /v1/dataspaces/{dataspace-name}/anchors/{anchor-name}/node:
+    get:
       tags:
-        - cps-admin
-      summary: Delete a schema set
-      description: Delete a schema set given a schema set name and a dataspace
-      operationId: deleteSchemaSet
+        - cps-data
+      summary: Get a node
+      description: Get a node with an option to retrieve all the children for a given
+        anchor and dataspace
+      operationId: getNodeByDataspaceAndAnchor
       parameters:
         - name: dataspace-name
           in: path
@@ -616,17 +1204,43 @@ paths:
           schema:
             type: string
             example: my-dataspace
-        - name: schema-set-name
+        - name: anchor-name
           in: path
-          description: schema-set-name
+          description: anchor-name
           required: true
           schema:
             type: string
-            example: my-schema-set
+            example: my-anchor
+        - name: xpath
+          in: query
+          description: "For more details on xpath, please refer https://docs.onap.org/projects/onap-cps/en/latest/cps-path.html"
+          required: false
+          schema:
+            type: string
+            default: /
+          examples:
+            container xpath:
+              value: /shops/bookstore
+            list attributes xpath:
+              value: "/shops/bookstore/categories[@code=1]"
+        - name: include-descendants
+          in: query
+          description: include-descendants
+          required: false
+          schema:
+            type: boolean
+            example: false
+            default: false
       responses:
-        "204":
-          description: No Content
-          content: {}
+        "200":
+          description: OK
+          content:
+            application/json:
+              schema:
+                type: object
+              examples:
+                dataSample:
+                  $ref: '#/components/examples/dataSample'
         "400":
           description: Bad Request
           content:
@@ -657,16 +1271,6 @@ paths:
                 status: 403
                 message: Request Forbidden
                 details: This request is forbidden
-        "409":
-          description: Conflict
-          content:
-            application/json:
-              schema:
-                $ref: '#/components/schemas/ErrorMessage'
-              example:
-                status: 409
-                message: Conflicting request
-                details: The request cannot be processed as the resource is in use.
         "500":
           description: Internal Server Error
           content:
@@ -677,14 +1281,16 @@ paths:
                 status: 500
                 message: Internal Server Error
                 details: Internal Server Error occurred
-  /v1/dataspaces/{dataspace-name}/anchors/{anchor-name}/node:
+      deprecated: true
+      x-codegen-request-body-name: xpath
+  /v2/dataspaces/{dataspace-name}/anchors/{anchor-name}/node:
     get:
       tags:
         - cps-data
       summary: Get a node
       description: Get a node with an option to retrieve all the children for a given
         anchor and dataspace
-      operationId: getNodeByDataspaceAndAnchor
+      operationId: getNodeByDataspaceAndAnchorV2
       parameters:
         - name: dataspace-name
           in: path
@@ -712,14 +1318,15 @@ paths:
               value: /shops/bookstore
             list attributes xpath:
               value: "/shops/bookstore/categories[@code=1]"
-        - name: include-descendants
+        - name: descendants
           in: query
-          description: include-descendants
+          description: "Number of descendants to query. Allowed values are 'none', 'all',\
+          \ -1 (for all), 0 (for none) and any positive number."
           required: false
           schema:
-            type: boolean
-            example: false
-            default: false
+            type: string
+            example: "3"
+            default: none
       responses:
         "200":
           description: OK
@@ -771,7 +1378,7 @@ paths:
                 message: Internal Server Error
                 details: Internal Server Error occurred
       x-codegen-request-body-name: xpath
-  /v1/dataspaces/{dataspace-name}/anchors/{anchor-name}/nodes:
+  /{apiVersion}/dataspaces/{dataspace-name}/anchors/{anchor-name}/nodes:
     put:
       tags:
         - cps-data
@@ -780,6 +1387,16 @@ paths:
         \ and a parent node xpath"
       operationId: replaceNode
       parameters:
+        - name: apiVersion
+          in: path
+          description: apiVersion
+          required: true
+          schema:
+            type: string
+            default: v2
+            enum:
+              - v1
+              - v2
         - name: dataspace-name
           in: path
           description: dataspace-name
@@ -879,6 +1496,16 @@ paths:
       description: Create a node for a given anchor and dataspace
       operationId: createNode
       parameters:
+        - name: apiVersion
+          in: path
+          description: apiVersion
+          required: true
+          schema:
+            type: string
+            default: v2
+            enum:
+              - v1
+              - v2
         - name: dataspace-name
           in: path
           description: dataspace-name
@@ -912,14 +1539,29 @@ paths:
           schema:
             type: string
             example: 2021-03-21T00:10:34.030-0100
+        - name: Content-Type
+          in: header
+          description: Content type header
+          required: true
+          schema:
+            type: string
+            example: application/json
       requestBody:
         content:
           application/json:
             schema:
-              type: object
+              type: string
             examples:
               dataSample:
                 $ref: '#/components/examples/dataSample'
+          application/xml:
+            schema:
+              type: object
+              xml:
+                name: stores
+            examples:
+              dataSample:
+                $ref: '#/components/examples/dataSampleXml'
         required: true
       responses:
         "201":
@@ -987,6 +1629,16 @@ paths:
         xpath.
       operationId: deleteDataNode
       parameters:
+        - name: apiVersion
+          in: path
+          description: apiVersion
+          required: true
+          schema:
+            type: string
+            default: v2
+            enum:
+              - v1
+              - v2
         - name: dataspace-name
           in: path
           description: dataspace-name
@@ -1068,10 +1720,20 @@ paths:
       tags:
         - cps-data
       summary: Update node leaves
-      description: Update a data node leaves for a given dataspace and anchor and
-        a parent node xpath
+      description: Update a data node leaves for a given dataspace and anchor and a parent node xpath. This
+        operation is currently supported for one top level data node only.
       operationId: updateNodeLeaves
       parameters:
+        - name: apiVersion
+          in: path
+          description: apiVersion
+          required: true
+          schema:
+            type: string
+            default: v2
+            enum:
+              - v1
+              - v2
         - name: dataspace-name
           in: path
           description: dataspace-name
@@ -1165,6 +1827,91 @@ paths:
                 message: Internal Server Error
                 details: Internal Server Error occurred
   /v1/dataspaces/{dataspace-name}/anchors/{anchor-name}/list-nodes:
+    delete:
+      tags:
+        - cps-data
+      summary: Delete one or all list element(s)
+      description: Delete one or all list element(s) for a given anchor and dataspace
+      operationId: deleteListOrListElement
+      parameters:
+        - name: dataspace-name
+          in: path
+          description: dataspace-name
+          required: true
+          schema:
+            type: string
+            example: my-dataspace
+        - name: anchor-name
+          in: path
+          description: anchor-name
+          required: true
+          schema:
+            type: string
+            example: my-anchor
+        - name: xpath
+          in: query
+          description: "For more details on xpath, please refer https://docs.onap.org/projects/onap-cps/en/latest/cps-path.html"
+          required: true
+          schema:
+            type: string
+          examples:
+            container xpath:
+              value: /shops/bookstore
+            list attributes xpath:
+              value: "/shops/bookstore/categories[@code=1]"
+        - name: observed-timestamp
+          in: query
+          description: observed-timestamp
+          required: false
+          schema:
+            type: string
+            example: 2021-03-21T00:10:34.030-0100
+      responses:
+        "204":
+          description: No Content
+          content: {}
+        "400":
+          description: Bad Request
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/ErrorMessage'
+              example:
+                status: 400
+                message: Bad Request
+                details: The provided request is not valid
+        "401":
+          description: Unauthorized
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/ErrorMessage'
+              example:
+                status: 401
+                message: Unauthorized request
+                details: This request is unauthorized
+        "403":
+          description: Forbidden
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/ErrorMessage'
+              example:
+                status: 403
+                message: Request Forbidden
+                details: This request is forbidden
+        "500":
+          description: Internal Server Error
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/ErrorMessage'
+              example:
+                status: 500
+                message: Internal Server Error
+                details: Internal Server Error occurred
+      deprecated: true
+  /{apiVersion}/dataspaces/{dataspace-name}/anchors/{anchor-name}/list-nodes:
     put:
       tags:
         - cps-data
@@ -1172,6 +1919,16 @@ paths:
       description: "Replace list content under a given parent, anchor and dataspace"
       operationId: replaceListContent
       parameters:
+        - name: apiVersion
+          in: path
+          description: apiVersion
+          required: true
+          schema:
+            type: string
+            default: v2
+            enum:
+              - v1
+              - v2
         - name: dataspace-name
           in: path
           description: dataspace-name
@@ -1270,6 +2027,16 @@ paths:
       description: Add list element(s) to a list for a given anchor and dataspace
       operationId: addListElements
       parameters:
+        - name: apiVersion
+          in: path
+          description: apiVersion
+          required: true
+          schema:
+            type: string
+            default: v2
+            enum:
+              - v1
+              - v2
         - name: dataspace-name
           in: path
           description: dataspace-name
@@ -1359,12 +2126,13 @@ paths:
                 status: 500
                 message: Internal Server Error
                 details: Internal Server Error occurred
-    delete:
+  /v1/dataspaces/{dataspace-name}/anchors/{anchor-name}/nodes/query:
+    get:
       tags:
-        - cps-data
-      summary: Delete one or all list element(s)
-      description: Delete one or all list element(s) for a given anchor and dataspace
-      operationId: deleteListOrListElement
+        - cps-query
+      summary: Query data nodes
+      description: Query data nodes for the given dataspace and anchor using CPS path
+      operationId: getNodesByDataspaceAndAnchorAndCpsPath
       parameters:
         - name: dataspace-name
           in: path
@@ -1380,28 +2148,36 @@ paths:
           schema:
             type: string
             example: my-anchor
-        - name: xpath
+        - name: cps-path
           in: query
-          description: "For more details on xpath, please refer https://docs.onap.org/projects/onap-cps/en/latest/cps-path.html"
-          required: true
+          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 xpath:
-              value: /shops/bookstore
-            list attributes xpath:
-              value: "/shops/bookstore/categories[@code=1]"
-        - name: observed-timestamp
+            container cps path:
+              value: //bookstore
+            list attributes cps path:
+              value: "//categories[@code=1]"
+        - name: include-descendants
           in: query
-          description: observed-timestamp
+          description: include-descendants
           required: false
           schema:
-            type: string
-            example: 2021-03-21T00:10:34.030-0100
+            type: boolean
+            example: false
+            default: false
       responses:
-        "204":
-          description: No Content
-          content: {}
+        "200":
+          description: OK
+          content:
+            application/json:
+              schema:
+                type: object
+              examples:
+                dataSample:
+                  $ref: '#/components/examples/dataSample'
         "400":
           description: Bad Request
           content:
@@ -1443,13 +2219,14 @@ paths:
                 message: Internal Server Error
                 details: Internal Server Error occurred
       deprecated: true
-  /v1/dataspaces/{dataspace-name}/anchors/{anchor-name}/nodes/query:
+      x-codegen-request-body-name: xpath
+  /v2/dataspaces/{dataspace-name}/anchors/{anchor-name}/nodes/query:
     get:
       tags:
         - cps-query
       summary: Query data nodes
       description: Query data nodes for the given dataspace and anchor using CPS path
-      operationId: getNodesByDataspaceAndAnchorAndCpsPath
+      operationId: getNodesByDataspaceAndAnchorAndCpsPathV2
       parameters:
         - name: dataspace-name
           in: path
@@ -1477,14 +2254,102 @@ paths:
               value: //bookstore
             list attributes cps path:
               value: "//categories[@code=1]"
-        - name: include-descendants
+        - name: descendants
           in: query
-          description: include-descendants
+          description: "Number of descendants to query. Allowed values are 'none', 'all',\
+          \ -1 (for all), 0 (for none) and any positive number."
           required: false
           schema:
-            type: boolean
-            example: false
-            default: false
+            type: string
+            example: "3"
+            default: none
+      responses:
+        "200":
+          description: OK
+          content:
+            application/json:
+              schema:
+                type: object
+              examples:
+                dataSample:
+                  $ref: '#/components/examples/dataSample'
+        "400":
+          description: Bad Request
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/ErrorMessage'
+              example:
+                status: 400
+                message: Bad Request
+                details: The provided request is not valid
+        "401":
+          description: Unauthorized
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/ErrorMessage'
+              example:
+                status: 401
+                message: Unauthorized request
+                details: This request is unauthorized
+        "403":
+          description: Forbidden
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/ErrorMessage'
+              example:
+                status: 403
+                message: Request Forbidden
+                details: This request is forbidden
+        "500":
+          description: Internal Server Error
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/ErrorMessage'
+              example:
+                status: 500
+                message: Internal Server Error
+                details: Internal Server Error occurred
+      x-codegen-request-body-name: xpath
+  /v2/dataspaces/{dataspace-name}/nodes/query:
+    get:
+      tags:
+        - cps-query
+      summary: Query data nodes
+      description: Query data nodes for the given dataspace and anchor using CPS path
+      operationId: getNodesByDataspaceAndCpsPath
+      parameters:
+        - name: dataspace-name
+          in: path
+          description: dataspace-name
+          required: true
+          schema:
+            type: string
+            example: my-dataspace
+        - name: cps-path
+          in: query
+          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]"
+        - name: descendants
+          in: query
+          description: "Number of descendants to query. Allowed values are 'none', 'all',\
+          \ -1 (for all), 0 (for none) and any positive number."
+          required: false
+          schema:
+            type: string
+            example: "3"
+            default: none
       responses:
         "200":
           description: OK
@@ -1548,6 +2413,13 @@ components:
           type: string
         details:
           type: string
+    DataspaceDetails:
+      title: Dataspace details by dataspace Name
+      type: object
+      properties:
+        name:
+          type: string
+          example: my-dataspace
     AnchorDetails:
       title: Anchor details by anchor Name
       type: object
@@ -1609,3 +2481,11 @@ components:
               name: SciFi
             - code: 2
               name: kids
+    dataSampleXml:
+      value: <stores xmlns="urn:ietf:params:xml:ns:netconf:base:1.0"> <bookstore xmlns="org:onap:ccsdk:sample">
+        <bookstore-name>Chapters</bookstore-name> <categories> <code>1</code> <name>SciFi</name>
+        </categories> </bookstore> </stores>
+  securitySchemes:
+    basicAuth:
+      type: http
+      scheme: basic