Merge "RTD update for delta API 2"
diff --git a/checkstyle/pom.xml b/checkstyle/pom.xml
index f618836..0518655 100644
--- a/checkstyle/pom.xml
+++ b/checkstyle/pom.xml
@@ -26,7 +26,7 @@
<modelVersion>4.0.0</modelVersion>
<groupId>org.onap.cps</groupId>
<artifactId>checkstyle</artifactId>
- <version>3.5.3-SNAPSHOT</version>
+ <version>3.5.4-SNAPSHOT</version>
<profiles>
<profile>
diff --git a/cps-application/pom.xml b/cps-application/pom.xml
index 19710be..e8d32ea 100644
--- a/cps-application/pom.xml
+++ b/cps-application/pom.xml
@@ -28,7 +28,7 @@
<parent>
<groupId>org.onap.cps</groupId>
<artifactId>cps-parent</artifactId>
- <version>3.5.3-SNAPSHOT</version>
+ <version>3.5.4-SNAPSHOT</version>
<relativePath>../cps-parent/pom.xml</relativePath>
</parent>
diff --git a/cps-bom/pom.xml b/cps-bom/pom.xml
index 31aedab..93f4b81 100644
--- a/cps-bom/pom.xml
+++ b/cps-bom/pom.xml
@@ -25,7 +25,7 @@
<modelVersion>4.0.0</modelVersion>
<groupId>org.onap.cps</groupId>
<artifactId>cps-bom</artifactId>
- <version>3.5.3-SNAPSHOT</version>
+ <version>3.5.4-SNAPSHOT</version>
<packaging>pom</packaging>
<description>This artifact contains dependencyManagement declarations of all published CPS components.</description>
diff --git a/cps-dependencies/pom.xml b/cps-dependencies/pom.xml
index adef903..2defa70 100644
--- a/cps-dependencies/pom.xml
+++ b/cps-dependencies/pom.xml
@@ -27,7 +27,7 @@
<modelVersion>4.0.0</modelVersion>
<groupId>org.onap.cps</groupId>
<artifactId>cps-dependencies</artifactId>
- <version>3.5.3-SNAPSHOT</version>
+ <version>3.5.4-SNAPSHOT</version>
<packaging>pom</packaging>
<name>${project.groupId}:${project.artifactId}</name>
diff --git a/cps-events/pom.xml b/cps-events/pom.xml
index e5fab86..16a8817 100644
--- a/cps-events/pom.xml
+++ b/cps-events/pom.xml
@@ -24,7 +24,7 @@
<parent>
<groupId>org.onap.cps</groupId>
<artifactId>cps-parent</artifactId>
- <version>3.5.3-SNAPSHOT</version>
+ <version>3.5.4-SNAPSHOT</version>
<relativePath>../cps-parent/pom.xml</relativePath>
</parent>
diff --git a/cps-ncmp-events/pom.xml b/cps-ncmp-events/pom.xml
index b0b2899..bd81f74 100644
--- a/cps-ncmp-events/pom.xml
+++ b/cps-ncmp-events/pom.xml
@@ -23,7 +23,7 @@
<parent>
<groupId>org.onap.cps</groupId>
<artifactId>cps-parent</artifactId>
- <version>3.5.3-SNAPSHOT</version>
+ <version>3.5.4-SNAPSHOT</version>
<relativePath>../cps-parent/pom.xml</relativePath>
</parent>
diff --git a/cps-ncmp-rest-stub/cps-ncmp-rest-stub-app/pom.xml b/cps-ncmp-rest-stub/cps-ncmp-rest-stub-app/pom.xml
index c73a251..aaf884f 100644
--- a/cps-ncmp-rest-stub/cps-ncmp-rest-stub-app/pom.xml
+++ b/cps-ncmp-rest-stub/cps-ncmp-rest-stub-app/pom.xml
@@ -22,7 +22,7 @@
<parent>
<groupId>org.onap.cps</groupId>
<artifactId>cps-ncmp-rest-stub</artifactId>
- <version>3.5.3-SNAPSHOT</version>
+ <version>3.5.4-SNAPSHOT</version>
</parent>
<artifactId>cps-ncmp-rest-stub-app</artifactId>
diff --git a/cps-ncmp-rest-stub/cps-ncmp-rest-stub-service/pom.xml b/cps-ncmp-rest-stub/cps-ncmp-rest-stub-service/pom.xml
index eee0431..e778e02 100644
--- a/cps-ncmp-rest-stub/cps-ncmp-rest-stub-service/pom.xml
+++ b/cps-ncmp-rest-stub/cps-ncmp-rest-stub-service/pom.xml
@@ -21,7 +21,7 @@
<parent>
<groupId>org.onap.cps</groupId>
<artifactId>cps-ncmp-rest-stub</artifactId>
- <version>3.5.3-SNAPSHOT</version>
+ <version>3.5.4-SNAPSHOT</version>
</parent>
<artifactId>cps-ncmp-rest-stub-service</artifactId>
diff --git a/cps-ncmp-rest-stub/pom.xml b/cps-ncmp-rest-stub/pom.xml
index 01604e8..be361a4 100644
--- a/cps-ncmp-rest-stub/pom.xml
+++ b/cps-ncmp-rest-stub/pom.xml
@@ -22,7 +22,7 @@
<parent>
<groupId>org.onap.cps</groupId>
<artifactId>cps-parent</artifactId>
- <version>3.5.3-SNAPSHOT</version>
+ <version>3.5.4-SNAPSHOT</version>
<relativePath>../cps-parent/pom.xml</relativePath>
</parent>
diff --git a/cps-ncmp-rest/pom.xml b/cps-ncmp-rest/pom.xml
index adac504..d46767e 100644
--- a/cps-ncmp-rest/pom.xml
+++ b/cps-ncmp-rest/pom.xml
@@ -27,7 +27,7 @@
<parent>
<groupId>org.onap.cps</groupId>
<artifactId>cps-parent</artifactId>
- <version>3.5.3-SNAPSHOT</version>
+ <version>3.5.4-SNAPSHOT</version>
<relativePath>../cps-parent/pom.xml</relativePath>
</parent>
diff --git a/cps-ncmp-service/pom.xml b/cps-ncmp-service/pom.xml
index 7871aaf..9ce9d51 100644
--- a/cps-ncmp-service/pom.xml
+++ b/cps-ncmp-service/pom.xml
@@ -27,7 +27,7 @@
<parent>
<groupId>org.onap.cps</groupId>
<artifactId>cps-parent</artifactId>
- <version>3.5.3-SNAPSHOT</version>
+ <version>3.5.4-SNAPSHOT</version>
<relativePath>../cps-parent/pom.xml</relativePath>
</parent>
diff --git a/cps-parent/pom.xml b/cps-parent/pom.xml
index 430f4b5..d583f1d 100644
--- a/cps-parent/pom.xml
+++ b/cps-parent/pom.xml
@@ -32,7 +32,7 @@
<groupId>org.onap.cps</groupId>
<artifactId>cps-parent</artifactId>
- <version>3.5.3-SNAPSHOT</version>
+ <version>3.5.4-SNAPSHOT</version>
<packaging>pom</packaging>
<properties>
diff --git a/cps-path-parser/pom.xml b/cps-path-parser/pom.xml
index f71d9aa..7b015ad 100644
--- a/cps-path-parser/pom.xml
+++ b/cps-path-parser/pom.xml
@@ -23,7 +23,7 @@
<parent>
<groupId>org.onap.cps</groupId>
<artifactId>cps-parent</artifactId>
- <version>3.5.3-SNAPSHOT</version>
+ <version>3.5.4-SNAPSHOT</version>
<relativePath>../cps-parent/pom.xml</relativePath>
</parent>
diff --git a/cps-path-parser/src/main/java/org/onap/cps/cpspath/parser/CpsPathUtil.java b/cps-path-parser/src/main/java/org/onap/cps/cpspath/parser/CpsPathUtil.java
index bde9b06..4ede0d9 100644
--- a/cps-path-parser/src/main/java/org/onap/cps/cpspath/parser/CpsPathUtil.java
+++ b/cps-path-parser/src/main/java/org/onap/cps/cpspath/parser/CpsPathUtil.java
@@ -1,6 +1,6 @@
/*
* ============LICENSE_START=======================================================
- * Copyright (C) 2022-2023 Nordix Foundation
+ * Copyright (C) 2022-2024 Nordix Foundation
* ================================================================================
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -59,12 +59,10 @@
return getCpsPathBuilder(xpathSource).build().getNormalizedParentPath();
}
- public static String[] getXpathNodeIdSequence(final String xpathSource) {
- final List<String> containerNames = getCpsPathBuilder(xpathSource).build().getContainerNames();
- return containerNames.toArray(new String[containerNames.size()]);
+ public static List<String> getXpathNodeIdSequence(final String xpathSource) {
+ return getCpsPathBuilder(xpathSource).build().getContainerNames();
}
-
/**
* Returns boolean indicating xpath is an absolute path to a list element.
*
diff --git a/cps-rest/docs/openapi/components.yml b/cps-rest/docs/openapi/components.yml
new file mode 100644
index 0000000..25ef6a4
--- /dev/null
+++ b/cps-rest/docs/openapi/components.yml
@@ -0,0 +1,405 @@
+# ============LICENSE_START=======================================================
+# Copyright (c) 2021-2022 Bell Canada.
+# Modifications Copyright (C) 2021-2023 Nordix Foundation
+# Modifications Copyright (C) 2022-2024 TechMahindra Ltd.
+# Modifications Copyright (C) 2022 Deutsche Telekom AG
+# ================================================================================
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+# SPDX-License-Identifier: Apache-2.0
+# ============LICENSE_END=========================================================
+
+components:
+ schemas:
+
+ AnchorDetails:
+ type: object
+ title: Anchor details by anchor Name
+ properties:
+ name:
+ type: string
+ example: my-anchor
+ dataspaceName:
+ type: string
+ example: my-dataspace
+ schemaSetName:
+ type: string
+ example: my-schema-set
+
+ DataspaceDetails:
+ type: object
+ title: Dataspace details by dataspace Name
+ properties:
+ name:
+ type: string
+ example: my-dataspace
+
+ ErrorMessage:
+ type: object
+ title: Error
+ properties:
+ status:
+ type: string
+ message:
+ type: string
+ details:
+ type: string
+
+ MultipartFile:
+ type: object
+ required:
+ - file
+ properties:
+ file:
+ type: string
+ description: multipartFile
+ format: binary
+
+ ModuleReferences:
+ type: object
+ title: Module reference object
+ properties:
+ name:
+ type: string
+ example: my-module-reference-name
+ namespace:
+ type: string
+ example: my-module-reference-namespace
+ revision:
+ type: string
+ example: my-module-reference-revision
+
+ SchemaSetDetails:
+ type: object
+ title: Schema set details by dataspace and schemasetName
+ required:
+ - "moduleReferences"
+ properties:
+ dataspaceName:
+ type: string
+ example: my-dataspace
+ moduleReferences:
+ type: array
+ items:
+ $ref: '#/components/schemas/ModuleReferences'
+ name:
+ type: string
+ example: my-schema-set
+
+ examples:
+ dataSample:
+ value:
+ test:bookstore:
+ bookstore-name: Chapters
+ categories:
+ - code: 01
+ name: SciFi
+ - code: 02
+ 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>
+ <code>2</code>
+ <name>kids</name>
+ </categories>
+ </bookstore>
+ </stores>
+ dataSampleAcrossAnchors:
+ value:
+ - anchorName: bookstore1
+ dataNode:
+ test:bookstore:
+ bookstore-name: Chapters
+ categories:
+ - code: 01
+ name: SciFi
+ - code: 02
+ name: kids
+ - anchorName: bookstore2
+ dataNode:
+ test:bookstore:
+ bookstore-name: Chapters
+ categories:
+ - code: 01
+ name: SciFi
+ - code: 02
+ name: kids
+ deltaReportSample:
+ value:
+ - action: "create"
+ xpath: "/bookstore/categories/[@code=3]"
+ target-data:
+ code: 3,
+ name: "kidz"
+ - action: "remove"
+ xpath: "/bookstore/categories/[@code=1]"
+ source-data:
+ code: 1,
+ name: "Fiction"
+ - action: "replace"
+ xpath: "/bookstore/categories/[@code=2]"
+ source-data:
+ name: "Funny"
+ target-data:
+ name: "Comic"
+
+ parameters:
+ dataspaceNameInQuery:
+ name: dataspace-name
+ in: query
+ description: dataspace-name
+ required: true
+ schema:
+ type: string
+ example: my-dataspace
+ dataspaceNameInPath:
+ name: dataspace-name
+ in: path
+ description: dataspace-name
+ required: true
+ schema:
+ type: string
+ example: my-dataspace
+ anchorNameInPath:
+ name: anchor-name
+ in: path
+ description: anchor-name
+ required: true
+ schema:
+ type: string
+ example: my-anchor
+ sourceAnchorNameInPath:
+ name: source-anchor-name
+ in: path
+ description: source-anchor-name
+ required: true
+ schema:
+ type: string
+ example: my-anchor
+ schemaSetNameInQuery:
+ name: schema-set-name
+ in: query
+ description: schema-set-name
+ required: true
+ schema:
+ type: string
+ example: my-schema-set
+ schemaSetNameInPath:
+ name: schema-set-name
+ in: path
+ description: schema-set-name
+ required: true
+ schema:
+ type: string
+ example: my-schema-set
+ anchorNameInQuery:
+ name: anchor-name
+ in: query
+ description: anchor-name
+ required: true
+ schema:
+ type: string
+ example: my-anchor
+ targetAnchorNameInQuery:
+ name: target-anchor-name
+ in: query
+ description: target-anchor-name
+ required: true
+ schema:
+ type: string
+ example: my-anchor
+ xpathInQuery:
+ name: xpath
+ in: query
+ description: For more details on xpath, please refer https://docs.onap.org/projects/onap-cps/en/latest/xpath.html
+ required: false
+ schema:
+ type: string
+ default: /
+ examples:
+ container xpath:
+ value: /shops/bookstore
+ list attributes xpath:
+ value: /shops/bookstore/categories[@code=1]
+ requiredXpathInQuery:
+ name: xpath
+ in: query
+ description: For more details on xpath, please refer https://docs.onap.org/projects/onap-cps/en/latest/xpath.html
+ required: true
+ schema:
+ type: string
+ examples:
+ container xpath:
+ value: /shops/bookstore
+ list attributes xpath:
+ value: /shops/bookstore/categories[@code=1]
+ cpsPathInQuery:
+ 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]
+ includeDescendantsOptionInQuery:
+ name: include-descendants
+ in: query
+ description: include-descendants
+ required: false
+ schema:
+ type: boolean
+ default: false
+ example: false
+ observedTimestampInQuery:
+ name: observed-timestamp
+ in: query
+ description: observed-timestamp
+ required: false
+ schema:
+ type: string
+ example: '2021-03-21T00:10:34.030-0100'
+ apiVersionInPath:
+ name: apiVersion
+ in: path
+ description: apiVersion
+ required: true
+ schema:
+ type: string
+ enum: [v1, v2]
+ default: v2
+ contentTypeInHeader:
+ name: Content-Type
+ in: header
+ description: Content type in header
+ schema:
+ type: string
+ example: 'application/json'
+ required: true
+ descendantsInQuery:
+ name: descendants
+ in: query
+ description: Number of descendants to query. Allowed values are 'none', 'all', 'direct', 1 (for direct), -1 (for all), 0 (for none) and any positive number.
+ required: false
+ schema:
+ type: string
+ default: none
+ example: 3
+ pageIndexInQuery:
+ name: pageIndex
+ in: query
+ description: page index for pagination over anchors. It must be greater then zero if provided.
+ required: false
+ schema:
+ type: integer
+ example: 1
+ pageSizeInQuery:
+ name: pageSize
+ in: query
+ description: number of records (anchors) per page. It must be greater then zero if provided.
+ required: false
+ schema:
+ type: integer
+ example: 10
+
+ responses:
+ NotFound:
+ description: The specified resource was not found
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/ErrorMessage'
+ example:
+ status: 404
+ message: Resource Not Found
+ details: The requested resource is not found
+ Unauthorized:
+ description: Unauthorized
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/ErrorMessage'
+ example:
+ status: 401
+ message: Unauthorized request
+ details: This request is unauthorized
+ Forbidden:
+ description: Forbidden
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/ErrorMessage'
+ example:
+ status: 403
+ message: Request Forbidden
+ details: This request is forbidden
+ BadRequest:
+ description: Bad Request
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/ErrorMessage'
+ example:
+ status: 400
+ message: Bad Request
+ details: The provided request is not valid
+ Conflict:
+ 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.
+ Ok:
+ description: OK
+ content:
+ application/json:
+ schema:
+ type: object
+ examples:
+ dataSample:
+ value: ""
+ Created:
+ description: Created
+ content:
+ application/json:
+ schema:
+ type: string
+ example: my-resource
+ CreatedV2:
+ description: Created without response body
+ InternalServerError:
+ description: Internal Server Error
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/ErrorMessage"
+ example:
+ status: 500
+ message: Internal Server Error
+ details: Internal Server Error occurred
+ NoContent:
+ description: No Content
+ content: {}
diff --git a/cps-rest/docs/openapi/cpsAdmin.yml b/cps-rest/docs/openapi/cpsAdmin.yml
new file mode 100644
index 0000000..f394270
--- /dev/null
+++ b/cps-rest/docs/openapi/cpsAdmin.yml
@@ -0,0 +1,232 @@
+# ============LICENSE_START=======================================================
+# Copyright (c) 2021 Bell Canada.
+# Modifications Copyright (C) 2021-2022 Nordix Foundation
+# Modifications Copyright (C) 2022 TechMahindra Ltd.
+# ================================================================================
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+# SPDX-License-Identifier: Apache-2.0
+# ============LICENSE_END=========================================================
+
+dataspaces:
+ delete:
+ description: Delete a dataspace
+ tags:
+ - cps-admin
+ summary: Delete a dataspace
+ operationId: deleteDataspace
+ parameters:
+ - $ref: 'components.yml#/components/parameters/apiVersionInPath'
+ - $ref: 'components.yml#/components/parameters/dataspaceNameInQuery'
+ responses:
+ '204':
+ $ref: 'components.yml#/components/responses/NoContent'
+ '400':
+ $ref: 'components.yml#/components/responses/BadRequest'
+ '403':
+ $ref: 'components.yml#/components/responses/Forbidden'
+ '409':
+ $ref: 'components.yml#/components/responses/Conflict'
+ '500':
+ $ref: 'components.yml#/components/responses/InternalServerError'
+
+schemaSet:
+ get:
+ description: Read all schema sets, given a dataspace
+ tags:
+ - cps-admin
+ summary: Get schema sets
+ operationId: getSchemaSets
+ parameters:
+ - $ref: 'components.yml#/components/parameters/apiVersionInPath'
+ - $ref: 'components.yml#/components/parameters/dataspaceNameInPath'
+ responses:
+ '200':
+ description: OK
+ content:
+ application/json:
+ schema:
+ type: array
+ items:
+ $ref: 'components.yml#/components/schemas/SchemaSetDetails'
+ '400':
+ $ref: 'components.yml#/components/responses/BadRequest'
+ '403':
+ $ref: 'components.yml#/components/responses/Forbidden'
+ '500':
+ $ref: 'components.yml#/components/responses/InternalServerError'
+
+schemaSetBySchemaSetName:
+ get:
+ description: Read a schema set given a schema set name and a dataspace
+ tags:
+ - cps-admin
+ summary: Get a schema set
+ operationId: getSchemaSet
+ parameters:
+ - $ref: 'components.yml#/components/parameters/apiVersionInPath'
+ - $ref: 'components.yml#/components/parameters/dataspaceNameInPath'
+ - $ref: 'components.yml#/components/parameters/schemaSetNameInPath'
+ responses:
+ '200':
+ description: OK
+ content:
+ application/json:
+ schema:
+ $ref: 'components.yml#/components/schemas/SchemaSetDetails'
+ '400':
+ $ref: 'components.yml#/components/responses/BadRequest'
+ '403':
+ $ref: 'components.yml#/components/responses/Forbidden'
+ '500':
+ $ref: 'components.yml#/components/responses/InternalServerError'
+ delete:
+ description: Delete a schema set given a schema set name and a dataspace
+ tags:
+ - cps-admin
+ summary: Delete a schema set
+ operationId: deleteSchemaSet
+ parameters:
+ - $ref: 'components.yml#/components/parameters/apiVersionInPath'
+ - $ref: 'components.yml#/components/parameters/dataspaceNameInPath'
+ - $ref: 'components.yml#/components/parameters/schemaSetNameInPath'
+ responses:
+ '204':
+ $ref: 'components.yml#/components/responses/NoContent'
+ '400':
+ $ref: 'components.yml#/components/responses/BadRequest'
+ '403':
+ $ref: 'components.yml#/components/responses/Forbidden'
+ '409':
+ $ref: 'components.yml#/components/responses/Conflict'
+ '500':
+ $ref: 'components.yml#/components/responses/InternalServerError'
+
+anchorsByDataspace:
+ get:
+ description: Read all anchors, given a dataspace
+ tags:
+ - cps-admin
+ summary: Get anchors
+ operationId: getAnchors
+ parameters:
+ - $ref: 'components.yml#/components/parameters/apiVersionInPath'
+ - $ref: 'components.yml#/components/parameters/dataspaceNameInPath'
+ responses:
+ '200':
+ description: OK
+ content:
+ application/json:
+ schema:
+ type: array
+ items:
+ $ref: 'components.yml#/components/schemas/AnchorDetails'
+ '400':
+ $ref: 'components.yml#/components/responses/BadRequest'
+ '403':
+ $ref: 'components.yml#/components/responses/Forbidden'
+ '500':
+ $ref: 'components.yml#/components/responses/InternalServerError'
+
+anchorByDataspaceAndAnchorName:
+ get:
+ description: Read an anchor given an anchor name and a dataspace
+ tags:
+ - cps-admin
+ summary: Get an anchor
+ operationId: getAnchor
+ parameters:
+ - $ref: 'components.yml#/components/parameters/apiVersionInPath'
+ - $ref: 'components.yml#/components/parameters/dataspaceNameInPath'
+ - $ref: 'components.yml#/components/parameters/anchorNameInPath'
+ responses:
+ '200':
+ description: OK
+ content:
+ application/json:
+ schema:
+ $ref: 'components.yml#/components/schemas/AnchorDetails'
+ '400':
+ $ref: 'components.yml#/components/responses/BadRequest'
+ '403':
+ $ref: 'components.yml#/components/responses/Forbidden'
+ '500':
+ $ref: 'components.yml#/components/responses/InternalServerError'
+ delete:
+ description: Delete an anchor given an anchor name and a dataspace
+ tags:
+ - cps-admin
+ summary: Delete an anchor
+ operationId: deleteAnchor
+ parameters:
+ - $ref: 'components.yml#/components/parameters/apiVersionInPath'
+ - $ref: 'components.yml#/components/parameters/dataspaceNameInPath'
+ - $ref: 'components.yml#/components/parameters/anchorNameInPath'
+ responses:
+ '204':
+ $ref: 'components.yml#/components/responses/NoContent'
+ '400':
+ $ref: 'components.yml#/components/responses/BadRequest'
+ '403':
+ $ref: 'components.yml#/components/responses/Forbidden'
+ '500':
+ $ref: 'components.yml#/components/responses/InternalServerError'
+
+adminDataspaces:
+ get:
+ description: Read all dataspaces
+ tags:
+ - cps-admin
+ summary: Get all dataspaces
+ operationId: getAllDataspaces
+ parameters:
+ - $ref: 'components.yml#/components/parameters/apiVersionInPath'
+ responses:
+ '200':
+ description: OK
+ content:
+ application/json:
+ schema:
+ type: array
+ items:
+ $ref: 'components.yml#/components/schemas/DataspaceDetails'
+ '400':
+ $ref: 'components.yml#/components/responses/BadRequest'
+ '403':
+ $ref: 'components.yml#/components/responses/Forbidden'
+ '500':
+ $ref: 'components.yml#/components/responses/InternalServerError'
+
+adminDataspace:
+ get:
+ description: Read a dataspace given a dataspace name
+ tags:
+ - cps-admin
+ summary: Get a dataspace
+ operationId: getDataspace
+ parameters:
+ - $ref: 'components.yml#/components/parameters/apiVersionInPath'
+ - $ref: 'components.yml#/components/parameters/dataspaceNameInPath'
+ responses:
+ '200':
+ description: OK
+ content:
+ application/json:
+ schema:
+ $ref: 'components.yml#/components/schemas/DataspaceDetails'
+ '400':
+ $ref: 'components.yml#/components/responses/BadRequest'
+ '403':
+ $ref: 'components.yml#/components/responses/Forbidden'
+ '500':
+ $ref: 'components.yml#/components/responses/InternalServerError'
diff --git a/cps-rest/docs/openapi/cpsAdminV1Deprecated.yml b/cps-rest/docs/openapi/cpsAdminV1Deprecated.yml
new file mode 100644
index 0000000..c92f773
--- /dev/null
+++ b/cps-rest/docs/openapi/cpsAdminV1Deprecated.yml
@@ -0,0 +1,92 @@
+# ============LICENSE_START=======================================================
+# Copyright (C) 2022 TechMahindra Ltd.
+# ================================================================================
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+# SPDX-License-Identifier: Apache-2.0
+# ============LICENSE_END=========================================================
+
+dataspaces:
+ post:
+ deprecated: true
+ description: Create a new dataspace
+ tags:
+ - cps-admin
+ summary: Create a dataspace
+ operationId: createDataspace
+ parameters:
+ - $ref: 'components.yml#/components/parameters/dataspaceNameInQuery'
+ responses:
+ '201':
+ $ref: 'components.yml#/components/responses/Created'
+ '400':
+ $ref: 'components.yml#/components/responses/BadRequest'
+ '403':
+ $ref: 'components.yml#/components/responses/Forbidden'
+ '409':
+ $ref: 'components.yml#/components/responses/Conflict'
+ '500':
+ $ref: 'components.yml#/components/responses/InternalServerError'
+
+anchorsByDataspace:
+ post:
+ deprecated: true
+ description: Create a new anchor in the given dataspace
+ tags:
+ - cps-admin
+ summary: Create an anchor
+ operationId: createAnchor
+ parameters:
+ - $ref: 'components.yml#/components/parameters/dataspaceNameInPath'
+ - $ref: 'components.yml#/components/parameters/schemaSetNameInQuery'
+ - $ref: 'components.yml#/components/parameters/anchorNameInQuery'
+ responses:
+ '201':
+ $ref: 'components.yml#/components/responses/Created'
+ '400':
+ $ref: 'components.yml#/components/responses/BadRequest'
+ '403':
+ $ref: 'components.yml#/components/responses/Forbidden'
+ '409':
+ $ref: 'components.yml#/components/responses/Conflict'
+ '500':
+ $ref: 'components.yml#/components/responses/InternalServerError'
+
+schemaSet:
+ post:
+ deprecated: true
+ description: Create a new schema set in the given dataspace
+ tags:
+ - cps-admin
+ summary: Create a schema set
+ operationId: createSchemaSet
+ parameters:
+ - $ref: 'components.yml#/components/parameters/dataspaceNameInPath'
+ - $ref: 'components.yml#/components/parameters/schemaSetNameInQuery'
+ requestBody:
+ required: true
+ content:
+ multipart/form-data:
+ schema:
+ $ref: 'components.yml#/components/schemas/MultipartFile'
+ responses:
+ '201':
+ $ref: 'components.yml#/components/responses/Created'
+ '400':
+ $ref: 'components.yml#/components/responses/BadRequest'
+ '403':
+ $ref: 'components.yml#/components/responses/Forbidden'
+ '409':
+ $ref: 'components.yml#/components/responses/Conflict'
+ '500':
+ $ref: 'components.yml#/components/responses/InternalServerError'
diff --git a/cps-rest/docs/openapi/cpsAdminV2.yml b/cps-rest/docs/openapi/cpsAdminV2.yml
new file mode 100644
index 0000000..e501ad8
--- /dev/null
+++ b/cps-rest/docs/openapi/cpsAdminV2.yml
@@ -0,0 +1,89 @@
+# ============LICENSE_START=======================================================
+# Copyright (C) 2022 TechMahindra Ltd.
+# ================================================================================
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+# SPDX-License-Identifier: Apache-2.0
+# ============LICENSE_END=========================================================
+
+dataspaces:
+ post:
+ description: Create a new dataspace
+ tags:
+ - cps-admin
+ summary: Create a dataspace
+ operationId: createDataspaceV2
+ parameters:
+ - $ref: 'components.yml#/components/parameters/dataspaceNameInQuery'
+ responses:
+ '201':
+ $ref: 'components.yml#/components/responses/CreatedV2'
+ '400':
+ $ref: 'components.yml#/components/responses/BadRequest'
+ '403':
+ $ref: 'components.yml#/components/responses/Forbidden'
+ '409':
+ $ref: 'components.yml#/components/responses/Conflict'
+ '500':
+ $ref: 'components.yml#/components/responses/InternalServerError'
+
+anchorsByDataspace:
+ post:
+ description: Create a new anchor in the given dataspace
+ tags:
+ - cps-admin
+ summary: Create an anchor
+ operationId: createAnchorV2
+ parameters:
+ - $ref: 'components.yml#/components/parameters/dataspaceNameInPath'
+ - $ref: 'components.yml#/components/parameters/schemaSetNameInQuery'
+ - $ref: 'components.yml#/components/parameters/anchorNameInQuery'
+ responses:
+ '201':
+ $ref: 'components.yml#/components/responses/CreatedV2'
+ '400':
+ $ref: 'components.yml#/components/responses/BadRequest'
+ '403':
+ $ref: 'components.yml#/components/responses/Forbidden'
+ '409':
+ $ref: 'components.yml#/components/responses/Conflict'
+ '500':
+ $ref: 'components.yml#/components/responses/InternalServerError'
+
+schemaSet:
+ post:
+ description: Create a new schema set in the given dataspace
+ tags:
+ - cps-admin
+ summary: Create a schema set
+ operationId: createSchemaSetV2
+ parameters:
+ - $ref: 'components.yml#/components/parameters/dataspaceNameInPath'
+ - $ref: 'components.yml#/components/parameters/schemaSetNameInQuery'
+ requestBody:
+ required: true
+ content:
+ multipart/form-data:
+ schema:
+ $ref: 'components.yml#/components/schemas/MultipartFile'
+ responses:
+ '201':
+ $ref: 'components.yml#/components/responses/CreatedV2'
+ '400':
+ $ref: 'components.yml#/components/responses/BadRequest'
+ '403':
+ $ref: 'components.yml#/components/responses/Forbidden'
+ '409':
+ $ref: 'components.yml#/components/responses/Conflict'
+ '500':
+ $ref: 'components.yml#/components/responses/InternalServerError'
diff --git a/cps-rest/docs/openapi/cpsData.yml b/cps-rest/docs/openapi/cpsData.yml
new file mode 100644
index 0000000..4418a3b
--- /dev/null
+++ b/cps-rest/docs/openapi/cpsData.yml
@@ -0,0 +1,234 @@
+# ============LICENSE_START=======================================================
+# Copyright (c) 2021-2022 Bell Canada.
+# Modifications Copyright (C) 2021-2022 Nordix Foundation
+# Modifications Copyright (C) 2022-2024 TechMahindra Ltd.
+# Modifications Copyright (C) 2022 Deutsche Telekom AG
+# ================================================================================
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+# SPDX-License-Identifier: Apache-2.0
+# ============LICENSE_END=========================================================
+
+listElementByDataspaceAndAnchor:
+ post:
+ description: Add list element(s) to a list for a given anchor and dataspace
+ tags:
+ - cps-data
+ summary: Add list element(s)
+ operationId: addListElements
+ parameters:
+ - $ref: 'components.yml#/components/parameters/apiVersionInPath'
+ - $ref: 'components.yml#/components/parameters/dataspaceNameInPath'
+ - $ref: 'components.yml#/components/parameters/anchorNameInPath'
+ - $ref: 'components.yml#/components/parameters/requiredXpathInQuery'
+ - $ref: 'components.yml#/components/parameters/observedTimestampInQuery'
+ - $ref: 'components.yml#/components/parameters/contentTypeInHeader'
+ requestBody:
+ required: true
+ content:
+ application/json:
+ schema:
+ type: string
+ examples:
+ dataSample:
+ $ref: 'components.yml#/components/examples/dataSample'
+ application/xml:
+ schema:
+ type: object
+ xml:
+ name: stores
+ examples:
+ dataSample:
+ $ref: 'components.yml#/components/examples/dataSampleXml'
+ responses:
+ '201':
+ $ref: 'components.yml#/components/responses/Created'
+ '400':
+ $ref: 'components.yml#/components/responses/BadRequest'
+ '403':
+ $ref: 'components.yml#/components/responses/Forbidden'
+ '500':
+ $ref: 'components.yml#/components/responses/InternalServerError'
+ put:
+ description: Replace list content under a given parent, anchor and dataspace
+ tags:
+ - cps-data
+ summary: Replace list content
+ operationId: replaceListContent
+ parameters:
+ - $ref: 'components.yml#/components/parameters/apiVersionInPath'
+ - $ref: 'components.yml#/components/parameters/dataspaceNameInPath'
+ - $ref: 'components.yml#/components/parameters/anchorNameInPath'
+ - $ref: 'components.yml#/components/parameters/requiredXpathInQuery'
+ - $ref: 'components.yml#/components/parameters/observedTimestampInQuery'
+ requestBody:
+ required: true
+ content:
+ application/json:
+ schema:
+ type: object
+ examples:
+ dataSample:
+ $ref: 'components.yml#/components/examples/dataSample'
+ responses:
+ '200':
+ $ref: 'components.yml#/components/responses/Ok'
+ '400':
+ $ref: 'components.yml#/components/responses/BadRequest'
+ '403':
+ $ref: 'components.yml#/components/responses/Forbidden'
+ '500':
+ $ref: 'components.yml#/components/responses/InternalServerError'
+
+nodesByDataspaceAndAnchor:
+ post:
+ description: Create a node for a given anchor and dataspace
+ tags:
+ - cps-data
+ summary: Create a node
+ operationId: createNode
+ parameters:
+ - $ref: 'components.yml#/components/parameters/apiVersionInPath'
+ - $ref: 'components.yml#/components/parameters/dataspaceNameInPath'
+ - $ref: 'components.yml#/components/parameters/anchorNameInPath'
+ - $ref: 'components.yml#/components/parameters/xpathInQuery'
+ - $ref: 'components.yml#/components/parameters/observedTimestampInQuery'
+ - $ref: 'components.yml#/components/parameters/contentTypeInHeader'
+ requestBody:
+ required: true
+ content:
+ application/json:
+ schema:
+ type: string
+ examples:
+ dataSample:
+ $ref: 'components.yml#/components/examples/dataSample'
+ application/xml:
+ schema:
+ type: object # Workaround to show example
+ xml:
+ name: stores
+ examples:
+ dataSample:
+ $ref: 'components.yml#/components/examples/dataSampleXml'
+ responses:
+ '201':
+ $ref: 'components.yml#/components/responses/Created'
+ '400':
+ $ref: 'components.yml#/components/responses/BadRequest'
+ '403':
+ $ref: 'components.yml#/components/responses/Forbidden'
+ '409':
+ $ref: 'components.yml#/components/responses/Conflict'
+ '500':
+ $ref: 'components.yml#/components/responses/InternalServerError'
+ patch:
+ 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.
+ tags:
+ - cps-data
+ summary: Update node leaves
+ operationId: updateNodeLeaves
+ parameters:
+ - $ref: 'components.yml#/components/parameters/apiVersionInPath'
+ - $ref: 'components.yml#/components/parameters/dataspaceNameInPath'
+ - $ref: 'components.yml#/components/parameters/anchorNameInPath'
+ - $ref: 'components.yml#/components/parameters/xpathInQuery'
+ - $ref: 'components.yml#/components/parameters/observedTimestampInQuery'
+ - $ref: 'components.yml#/components/parameters/contentTypeInHeader'
+ requestBody:
+ required: true
+ content:
+ application/json:
+ schema:
+ type: string
+ examples:
+ dataSample:
+ $ref: 'components.yml#/components/examples/dataSample'
+ application/xml:
+ schema:
+ type: object
+ xml:
+ name: stores
+ examples:
+ dataSample:
+ $ref: 'components.yml#/components/examples/dataSampleXml'
+ responses:
+ '200':
+ $ref: 'components.yml#/components/responses/Ok'
+ '400':
+ $ref: 'components.yml#/components/responses/BadRequest'
+ '403':
+ $ref: 'components.yml#/components/responses/Forbidden'
+ '500':
+ $ref: 'components.yml#/components/responses/InternalServerError'
+ delete:
+ description: Delete a datanode for a given dataspace and anchor given a node xpath.
+ tags:
+ - cps-data
+ summary: Delete a data node
+ operationId: deleteDataNode
+ parameters:
+ - $ref: 'components.yml#/components/parameters/apiVersionInPath'
+ - $ref: 'components.yml#/components/parameters/dataspaceNameInPath'
+ - $ref: 'components.yml#/components/parameters/anchorNameInPath'
+ - $ref: 'components.yml#/components/parameters/xpathInQuery'
+ - $ref: 'components.yml#/components/parameters/observedTimestampInQuery'
+ responses:
+ '204':
+ $ref: 'components.yml#/components/responses/NoContent'
+ '400':
+ $ref: 'components.yml#/components/responses/BadRequest'
+ '403':
+ $ref: 'components.yml#/components/responses/Forbidden'
+ '500':
+ $ref: 'components.yml#/components/responses/InternalServerError'
+ put:
+ description: Replace a node with descendants for a given dataspace, anchor and a parent node xpath
+ tags:
+ - cps-data
+ summary: Replace a node with descendants
+ operationId: replaceNode
+ parameters:
+ - $ref: 'components.yml#/components/parameters/apiVersionInPath'
+ - $ref: 'components.yml#/components/parameters/dataspaceNameInPath'
+ - $ref: 'components.yml#/components/parameters/anchorNameInPath'
+ - $ref: 'components.yml#/components/parameters/xpathInQuery'
+ - $ref: 'components.yml#/components/parameters/observedTimestampInQuery'
+ - $ref: 'components.yml#/components/parameters/contentTypeInHeader'
+ requestBody:
+ required: true
+ content:
+ application/json:
+ schema:
+ type: string
+ examples:
+ dataSample:
+ $ref: 'components.yml#/components/examples/dataSample'
+ application/xml:
+ schema:
+ type: object
+ xml:
+ name: stores
+ examples:
+ dataSample:
+ $ref: 'components.yml#/components/examples/dataSampleXml'
+ responses:
+ '200':
+ $ref: 'components.yml#/components/responses/Ok'
+ '400':
+ $ref: 'components.yml#/components/responses/BadRequest'
+ '403':
+ $ref: 'components.yml#/components/responses/Forbidden'
+ '500':
+ $ref: 'components.yml#/components/responses/InternalServerError'
diff --git a/cps-rest/docs/openapi/cpsDataV1Deprecated.yml b/cps-rest/docs/openapi/cpsDataV1Deprecated.yml
new file mode 100644
index 0000000..3941856
--- /dev/null
+++ b/cps-rest/docs/openapi/cpsDataV1Deprecated.yml
@@ -0,0 +1,71 @@
+# ============LICENSE_START=======================================================
+# Copyright (C) 2022-2023 TechMahindra Ltd.
+# ================================================================================
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+# SPDX-License-Identifier: Apache-2.0
+# ============LICENSE_END=========================================================
+
+nodeByDataspaceAndAnchor:
+ get:
+ description: Get a node with an option to retrieve all the children for a given anchor and dataspace
+ deprecated: true
+ tags:
+ - cps-data
+ summary: Get a node
+ operationId: getNodeByDataspaceAndAnchor
+ parameters:
+ - $ref: 'components.yml#/components/parameters/dataspaceNameInPath'
+ - $ref: 'components.yml#/components/parameters/anchorNameInPath'
+ - $ref: 'components.yml#/components/parameters/xpathInQuery'
+ - $ref: 'components.yml#/components/parameters/includeDescendantsOptionInQuery'
+ responses:
+ '200':
+ description: OK
+ content:
+ application/json:
+ schema:
+ type: object
+ examples:
+ dataSample:
+ $ref: 'components.yml#/components/examples/dataSample'
+ '400':
+ $ref: 'components.yml#/components/responses/BadRequest'
+ '403':
+ $ref: 'components.yml#/components/responses/Forbidden'
+ '500':
+ $ref: 'components.yml#/components/responses/InternalServerError'
+ x-codegen-request-body-name: xpath
+
+listElementByDataspaceAndAnchor:
+ delete:
+ description: Delete one or all list element(s) for a given anchor and dataspace
+ deprecated: true
+ tags:
+ - cps-data
+ summary: Delete one or all list element(s)
+ operationId: deleteListOrListElement
+ parameters:
+ - $ref: 'components.yml#/components/parameters/dataspaceNameInPath'
+ - $ref: 'components.yml#/components/parameters/anchorNameInPath'
+ - $ref: 'components.yml#/components/parameters/requiredXpathInQuery'
+ - $ref: 'components.yml#/components/parameters/observedTimestampInQuery'
+ responses:
+ '204':
+ $ref: 'components.yml#/components/responses/NoContent'
+ '400':
+ $ref: 'components.yml#/components/responses/BadRequest'
+ '403':
+ $ref: 'components.yml#/components/responses/Forbidden'
+ '500':
+ $ref: 'components.yml#/components/responses/InternalServerError'
diff --git a/cps-rest/docs/openapi/cpsDataV2.yml b/cps-rest/docs/openapi/cpsDataV2.yml
new file mode 100644
index 0000000..d5a8ef3
--- /dev/null
+++ b/cps-rest/docs/openapi/cpsDataV2.yml
@@ -0,0 +1,127 @@
+# ============LICENSE_START=======================================================
+# Copyright (c) 2022-2024 TechMahindra Ltd.
+# ================================================================================
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+# SPDX-License-Identifier: Apache-2.0
+# ============LICENSE_END=========================================================
+
+nodeByDataspaceAndAnchor:
+ get:
+ description: Get a node with an option to retrieve all the children for a given anchor and dataspace
+ tags:
+ - cps-data
+ summary: Get a node
+ operationId: getNodeByDataspaceAndAnchorV2
+ parameters:
+ - $ref: 'components.yml#/components/parameters/dataspaceNameInPath'
+ - $ref: 'components.yml#/components/parameters/anchorNameInPath'
+ - $ref: 'components.yml#/components/parameters/xpathInQuery'
+ - $ref: 'components.yml#/components/parameters/descendantsInQuery'
+ responses:
+ '200':
+ description: OK
+ content:
+ application/json:
+ schema:
+ type: object
+ examples:
+ dataSample:
+ $ref: 'components.yml#/components/examples/dataSample'
+ '400':
+ $ref: 'components.yml#/components/responses/BadRequest'
+ '403':
+ $ref: 'components.yml#/components/responses/Forbidden'
+ '500':
+ $ref: 'components.yml#/components/responses/InternalServerError'
+ x-codegen-request-body-name: xpath
+
+delta:
+ get:
+ description: Get delta between two anchors within a given dataspace
+ tags:
+ - cps-data
+ summary: Get delta between anchors in the same dataspace
+ operationId: getDeltaByDataspaceAndAnchors
+ parameters:
+ - $ref: 'components.yml#/components/parameters/dataspaceNameInPath'
+ - $ref: 'components.yml#/components/parameters/sourceAnchorNameInPath'
+ - $ref: 'components.yml#/components/parameters/targetAnchorNameInQuery'
+ - $ref: 'components.yml#/components/parameters/xpathInQuery'
+ - $ref: 'components.yml#/components/parameters/descendantsInQuery'
+ responses:
+ '200':
+ description: OK
+ content:
+ application/json:
+ schema:
+ type: object
+ examples:
+ dataSample:
+ $ref: 'components.yml#/components/examples/deltaReportSample'
+ '400':
+ $ref: 'components.yml#/components/responses/BadRequest'
+ '403':
+ $ref: 'components.yml#/components/responses/Forbidden'
+ '500':
+ $ref: 'components.yml#/components/responses/InternalServerError'
+ x-codegen-request-body-name: xpath
+ post:
+ description: Get delta between an anchor in a dataspace and JSON payload
+ tags:
+ - cps-data
+ summary: Get delta between an anchor and JSON payload
+ operationId: getDeltaByDataspaceAnchorAndPayload
+ parameters:
+ - $ref: 'components.yml#/components/parameters/dataspaceNameInPath'
+ - $ref: 'components.yml#/components/parameters/sourceAnchorNameInPath'
+ - $ref: 'components.yml#/components/parameters/xpathInQuery'
+ requestBody:
+ content:
+ multipart/form-data:
+ schema:
+ type: object
+ properties:
+ json:
+ type: object
+ example:
+ test:bookstore:
+ bookstore-name: Chapters
+ categories:
+ - code: 01
+ name: SciFi
+ - code: 02
+ name: kids
+ file:
+ type: string
+ format: binary
+ required:
+ - json
+ responses:
+ '200':
+ description: OK
+ content:
+ application/json:
+ schema:
+ type: object
+ examples:
+ dataSample:
+ $ref: 'components.yml#/components/examples/deltaReportSample'
+ '400':
+ $ref: 'components.yml#/components/responses/BadRequest'
+ '401':
+ $ref: 'components.yml#/components/responses/Unauthorized'
+ '403':
+ $ref: 'components.yml#/components/responses/Forbidden'
+ '500':
+ $ref: 'components.yml#/components/responses/InternalServerError'
\ No newline at end of file
diff --git a/cps-rest/docs/openapi/cpsQueryV1Deprecated.yml b/cps-rest/docs/openapi/cpsQueryV1Deprecated.yml
new file mode 100644
index 0000000..9db2823
--- /dev/null
+++ b/cps-rest/docs/openapi/cpsQueryV1Deprecated.yml
@@ -0,0 +1,50 @@
+# ============LICENSE_START=======================================================
+# Copyright (C) 2021 Nordix Foundation
+# Modifications Copyright (c) 2022 Bell Canada.
+# Modifications Copyright (c) 2023 TechMahindra Ltd.
+# ================================================================================
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+# SPDX-License-Identifier: Apache-2.0
+# ============LICENSE_END=========================================================
+
+nodesByDataspaceAndAnchorAndCpsPath:
+ get:
+ description: Query data nodes for the given dataspace and anchor using CPS path
+ tags:
+ - cps-query
+ summary: Query data nodes
+ deprecated: true
+ operationId: getNodesByDataspaceAndAnchorAndCpsPath
+ parameters:
+ - $ref: 'components.yml#/components/parameters/dataspaceNameInPath'
+ - $ref: 'components.yml#/components/parameters/anchorNameInPath'
+ - $ref: 'components.yml#/components/parameters/cpsPathInQuery'
+ - $ref: 'components.yml#/components/parameters/includeDescendantsOptionInQuery'
+ responses:
+ '200':
+ description: OK
+ content:
+ application/json:
+ schema:
+ type: object
+ examples:
+ dataSample:
+ $ref: 'components.yml#/components/examples/dataSample'
+ '400':
+ $ref: 'components.yml#/components/responses/BadRequest'
+ '403':
+ $ref: 'components.yml#/components/responses/Forbidden'
+ '500':
+ $ref: 'components.yml#/components/responses/InternalServerError'
+ x-codegen-request-body-name: xpath
diff --git a/cps-rest/docs/openapi/cpsQueryV2.yml b/cps-rest/docs/openapi/cpsQueryV2.yml
new file mode 100644
index 0000000..7f0ceff
--- /dev/null
+++ b/cps-rest/docs/openapi/cpsQueryV2.yml
@@ -0,0 +1,78 @@
+# ============LICENSE_START=======================================================
+# Copyright (C) 2023 TechMahindra Ltd.
+# ================================================================================
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+# SPDX-License-Identifier: Apache-2.0
+# ============LICENSE_END=========================================================
+
+nodesByDataspaceAndAnchorAndCpsPath:
+ get:
+ description: Query data nodes for the given dataspace and anchor using CPS path
+ tags:
+ - cps-query
+ summary: Query data nodes
+ operationId: getNodesByDataspaceAndAnchorAndCpsPathV2
+ parameters:
+ - $ref: 'components.yml#/components/parameters/dataspaceNameInPath'
+ - $ref: 'components.yml#/components/parameters/anchorNameInPath'
+ - $ref: 'components.yml#/components/parameters/cpsPathInQuery'
+ - $ref: 'components.yml#/components/parameters/descendantsInQuery'
+ responses:
+ '200':
+ description: OK
+ content:
+ application/json:
+ schema:
+ type: object
+ examples:
+ dataSample:
+ $ref: 'components.yml#/components/examples/dataSample'
+ '400':
+ $ref: 'components.yml#/components/responses/BadRequest'
+ '403':
+ $ref: 'components.yml#/components/responses/Forbidden'
+ '500':
+ $ref: 'components.yml#/components/responses/InternalServerError'
+ x-codegen-request-body-name: xpath
+
+nodesByDataspaceAndCpsPath:
+ get:
+ description: Query data nodes for the given dataspace across anchors using CPS path
+ tags:
+ - cps-query
+ summary: Query data nodes across anchors
+ operationId: getNodesByDataspaceAndCpsPath
+ parameters:
+ - $ref: 'components.yml#/components/parameters/dataspaceNameInPath'
+ - $ref: 'components.yml#/components/parameters/cpsPathInQuery'
+ - $ref: 'components.yml#/components/parameters/descendantsInQuery'
+ - $ref: 'components.yml#/components/parameters/pageIndexInQuery'
+ - $ref: 'components.yml#/components/parameters/pageSizeInQuery'
+ responses:
+ '200':
+ description: OK
+ content:
+ application/json:
+ schema:
+ type: object
+ examples:
+ dataSample:
+ $ref: 'components.yml#/components/examples/dataSampleAcrossAnchors'
+ '400':
+ $ref: 'components.yml#/components/responses/BadRequest'
+ '403':
+ $ref: 'components.yml#/components/responses/Forbidden'
+ '500':
+ $ref: 'components.yml#/components/responses/InternalServerError'
+ x-codegen-request-body-name: xpath
diff --git a/cps-rest/docs/openapi/openapi.yml b/cps-rest/docs/openapi/openapi.yml
new file mode 100644
index 0000000..70f06fb
--- /dev/null
+++ b/cps-rest/docs/openapi/openapi.yml
@@ -0,0 +1,116 @@
+# ============LICENSE_START=======================================================
+# Copyright (C) 2021-2023 Nordix Foundation
+# Modifications Copyright (C) 2021 Pantheon.tech
+# Modifications Copyright (C) 2021 Bell Canada.
+# Modifications Copyright (C) 2022-2024 TechMahindra Ltd.
+# ================================================================================
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+# SPDX-License-Identifier: Apache-2.0
+# ============LICENSE_END=========================================================
+
+openapi: 3.0.3
+info:
+ title: ONAP Open API v3 Configuration Persistence Service
+ description: Configuration Persistence Service is a Model Driven Generic Database
+ version: "3.5.2"
+ contact:
+ name: ONAP
+ url: "https://onap.readthedocs.io"
+ email: "onap-discuss@lists.onap.org"
+ license:
+ name: "Apache 2.0"
+ url: "http://www.apache.org/licenses/LICENSE-2.0"
+
+servers:
+ - url: /cps/api
+components:
+ securitySchemes:
+ basicAuth:
+ type: http
+ scheme: basic
+tags:
+ - name: cps-admin
+ description: cps Admin
+ - name: cps-data
+ description: cps Data
+paths:
+
+ /v1/dataspaces:
+ $ref: 'cpsAdminV1Deprecated.yml#/dataspaces'
+
+ /{apiVersion}/dataspaces:
+ $ref: 'cpsAdmin.yml#/dataspaces'
+
+ /v2/dataspaces:
+ $ref: 'cpsAdminV2.yml#/dataspaces'
+
+ /{apiVersion}/admin/dataspaces:
+ $ref: 'cpsAdmin.yml#/adminDataspaces'
+
+ /{apiVersion}/admin/dataspaces/{dataspace-name}:
+ $ref: 'cpsAdmin.yml#/adminDataspace'
+
+ /v1/dataspaces/{dataspace-name}/anchors:
+ $ref: 'cpsAdminV1Deprecated.yml#/anchorsByDataspace'
+
+ /v2/dataspaces/{dataspace-name}/anchors:
+ $ref: 'cpsAdminV2.yml#/anchorsByDataspace'
+
+ /{apiVersion}/dataspaces/{dataspace-name}/anchors:
+ $ref: 'cpsAdmin.yml#/anchorsByDataspace'
+
+ /{apiVersion}/dataspaces/{dataspace-name}/anchors/{anchor-name}:
+ $ref: 'cpsAdmin.yml#/anchorByDataspaceAndAnchorName'
+
+ /v1/dataspaces/{dataspace-name}/schema-sets:
+ $ref: 'cpsAdminV1Deprecated.yml#/schemaSet'
+
+ /v2/dataspaces/{dataspace-name}/schema-sets:
+ $ref: 'cpsAdminV2.yml#/schemaSet'
+
+ /{apiVersion}/dataspaces/{dataspace-name}/schema-sets:
+ $ref: 'cpsAdmin.yml#/schemaSet'
+
+ /{apiVersion}/dataspaces/{dataspace-name}/schema-sets/{schema-set-name}:
+ $ref: 'cpsAdmin.yml#/schemaSetBySchemaSetName'
+
+ /v1/dataspaces/{dataspace-name}/anchors/{anchor-name}/node:
+ $ref: 'cpsDataV1Deprecated.yml#/nodeByDataspaceAndAnchor'
+
+ /v2/dataspaces/{dataspace-name}/anchors/{anchor-name}/node:
+ $ref: 'cpsDataV2.yml#/nodeByDataspaceAndAnchor'
+
+ /{apiVersion}/dataspaces/{dataspace-name}/anchors/{anchor-name}/nodes:
+ $ref: 'cpsData.yml#/nodesByDataspaceAndAnchor'
+
+ /v1/dataspaces/{dataspace-name}/anchors/{anchor-name}/list-nodes:
+ $ref: 'cpsDataV1Deprecated.yml#/listElementByDataspaceAndAnchor'
+
+ /{apiVersion}/dataspaces/{dataspace-name}/anchors/{anchor-name}/list-nodes:
+ $ref: 'cpsData.yml#/listElementByDataspaceAndAnchor'
+
+ /v2/dataspaces/{dataspace-name}/anchors/{source-anchor-name}/delta:
+ $ref: 'cpsDataV2.yml#/delta'
+
+ /v1/dataspaces/{dataspace-name}/anchors/{anchor-name}/nodes/query:
+ $ref: 'cpsQueryV1Deprecated.yml#/nodesByDataspaceAndAnchorAndCpsPath'
+
+ /v2/dataspaces/{dataspace-name}/anchors/{anchor-name}/nodes/query:
+ $ref: 'cpsQueryV2.yml#/nodesByDataspaceAndAnchorAndCpsPath'
+
+ /v2/dataspaces/{dataspace-name}/nodes/query:
+ $ref: 'cpsQueryV2.yml#/nodesByDataspaceAndCpsPath'
+
+security:
+ - basicAuth: []
diff --git a/cps-rest/pom.xml b/cps-rest/pom.xml
index f115fdf..20fb299 100644
--- a/cps-rest/pom.xml
+++ b/cps-rest/pom.xml
@@ -27,7 +27,7 @@
<parent>
<groupId>org.onap.cps</groupId>
<artifactId>cps-parent</artifactId>
- <version>3.5.3-SNAPSHOT</version>
+ <version>3.5.4-SNAPSHOT</version>
<relativePath>../cps-parent/pom.xml</relativePath>
</parent>
@@ -141,7 +141,7 @@
<goal>generate</goal>
</goals>
<configuration>
- <inputSpec>${project.basedir}/../docs/api/swagger/cps/openapi.yaml</inputSpec>
+ <inputSpec>${project.basedir}/docs/openapi/openapi.yml</inputSpec>
<invokerPackage>org.onap.cps.rest.controller</invokerPackage>
<modelPackage>org.onap.cps.rest.model</modelPackage>
<apiPackage>org.onap.cps.rest.api</apiPackage>
@@ -165,7 +165,7 @@
</goals>
<phase>compile</phase>
<configuration>
- <inputSpec>${project.basedir}/../docs/api/swagger/cps/openapi.yaml</inputSpec>
+ <inputSpec>${project.basedir}/docs/openapi/openapi.yml</inputSpec>
<generatorName>openapi-yaml</generatorName>
<configOptions>
<outputFile>openapi.yaml</outputFile>
@@ -174,6 +174,30 @@
</execution>
</executions>
</plugin>
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-resources-plugin</artifactId>
+ <executions>
+ <execution>
+ <id>copy-resources</id>
+ <phase>compile</phase>
+ <goals>
+ <goal>copy-resources</goal>
+ </goals>
+ <configuration>
+ <outputDirectory>${project.basedir}/target/classes/static/api-docs/cps-core</outputDirectory>
+ <resources>
+ <resource>
+ <directory>${project.basedir}/target/generated-sources/openapi/</directory>
+ <includes>
+ <include>openapi.yaml</include>
+ </includes>
+ </resource>
+ </resources>
+ </configuration>
+ </execution>
+ </executions>
+ </plugin>
</plugins>
</build>
</project>
diff --git a/cps-ri/pom.xml b/cps-ri/pom.xml
index 57e6528..c3ad6a2 100644
--- a/cps-ri/pom.xml
+++ b/cps-ri/pom.xml
@@ -26,7 +26,7 @@
<parent>
<groupId>org.onap.cps</groupId>
<artifactId>cps-parent</artifactId>
- <version>3.5.3-SNAPSHOT</version>
+ <version>3.5.4-SNAPSHOT</version>
<relativePath>../cps-parent/pom.xml</relativePath>
</parent>
diff --git a/cps-ri/src/main/java/org/onap/cps/ri/CpsDataPersistenceServiceImpl.java b/cps-ri/src/main/java/org/onap/cps/ri/CpsDataPersistenceServiceImpl.java
index ec46fea..ee555f7 100644
--- a/cps-ri/src/main/java/org/onap/cps/ri/CpsDataPersistenceServiceImpl.java
+++ b/cps-ri/src/main/java/org/onap/cps/ri/CpsDataPersistenceServiceImpl.java
@@ -341,8 +341,7 @@
if (anchorIds.isEmpty()) {
fragmentEntities = fragmentRepository.findByDataspaceAndXpathIn(dataspaceEntity, ancestorXpaths);
} else {
- fragmentEntities = fragmentRepository.findByAnchorIdsAndXpathIn(
- anchorIds.toArray(new Long[0]), ancestorXpaths.toArray(new String[0]));
+ fragmentEntities = fragmentRepository.findByAnchorIdsAndXpathIn(anchorIds, ancestorXpaths);
}
}
@@ -475,7 +474,7 @@
fragmentRepository.findAllXpathByAnchorAndXpathIn(anchorEntity, deleteChecklist);
if (onlySupportListDeletion) {
final Collection<String> xpathsToExistingListElements = xpathsToExistingContainers.stream()
- .filter(CpsPathUtil::isPathToListElement).collect(Collectors.toList());
+ .filter(CpsPathUtil::isPathToListElement).toList();
deleteChecklist.removeAll(xpathsToExistingListElements);
} else {
deleteChecklist.removeAll(xpathsToExistingContainers);
@@ -483,15 +482,19 @@
final Collection<String> xpathsToExistingLists = deleteChecklist.stream()
.filter(xpath -> fragmentRepository.existsByAnchorAndXpathStartsWith(anchorEntity, xpath + "["))
- .collect(Collectors.toList());
+ .toList();
deleteChecklist.removeAll(xpathsToExistingLists);
if (!deleteChecklist.isEmpty()) {
throw new DataNodeNotFoundExceptionBatch(dataspaceName, anchorName, deleteChecklist);
}
- fragmentRepository.deleteByAnchorIdAndXpaths(anchorEntity.getId(), xpathsToExistingContainers);
- fragmentRepository.deleteListsByAnchorIdAndXpaths(anchorEntity.getId(), xpathsToExistingLists);
+ if (!xpathsToExistingContainers.isEmpty()) {
+ fragmentRepository.deleteByAnchorIdAndXpaths(anchorEntity.getId(), xpathsToExistingContainers);
+ }
+ for (final String listXpath : xpathsToExistingLists) {
+ fragmentRepository.deleteListByAnchorIdAndXpath(anchorEntity.getId(), listXpath);
+ }
}
@Override
diff --git a/cps-ri/src/main/java/org/onap/cps/ri/repository/AnchorRepository.java b/cps-ri/src/main/java/org/onap/cps/ri/repository/AnchorRepository.java
index 7fe14b3..f7f750c 100755
--- a/cps-ri/src/main/java/org/onap/cps/ri/repository/AnchorRepository.java
+++ b/cps-ri/src/main/java/org/onap/cps/ri/repository/AnchorRepository.java
@@ -1,7 +1,7 @@
/*
* ============LICENSE_START=======================================================
* Copyright (C) 2021 Pantheon.tech
- * Modifications Copyright (C) 2021-2023 Nordix Foundation
+ * Modifications Copyright (C) 2021-2024 Nordix Foundation
* ================================================================================
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -46,26 +46,26 @@
Collection<AnchorEntity> findAllBySchemaSet(SchemaSetEntity schemaSetEntity);
- @Query(value = "SELECT * FROM anchor WHERE dataspace_id = :dataspaceId AND name = ANY (:anchorNames)",
+ @Query(value = "SELECT * FROM anchor WHERE dataspace_id = :dataspaceId AND name IN (:anchorNames)",
nativeQuery = true)
Collection<AnchorEntity> findAllByDataspaceIdAndNameIn(@Param("dataspaceId") int dataspaceId,
- @Param("anchorNames") String[] anchorNames);
+ @Param("anchorNames") Collection<String> anchorNames);
default Collection<AnchorEntity> findAllByDataspaceAndNameIn(final DataspaceEntity dataspaceEntity,
final Collection<String> anchorNames) {
- return findAllByDataspaceIdAndNameIn(dataspaceEntity.getId(), anchorNames.toArray(new String[0]));
+ return findAllByDataspaceIdAndNameIn(dataspaceEntity.getId(), anchorNames);
}
@Query(value = "SELECT a.* FROM anchor a"
+ " LEFT OUTER JOIN schema_set s ON a.schema_set_id = s.id"
- + " WHERE a.dataspace_id = :dataspaceId AND s.name = ANY (:schemaSetNames)",
+ + " WHERE a.dataspace_id = :dataspaceId AND s.name IN (:schemaSetNames)",
nativeQuery = true)
- Collection<AnchorEntity> findAllByDataspaceIdAndSchemaSetNameIn(@Param("dataspaceId") int dataspaceId,
- @Param("schemaSetNames") String[] schemaSetNames);
+ Collection<AnchorEntity> findAllByDataspaceIdAndSchemaSetNameIn(
+ @Param("dataspaceId") int dataspaceId, @Param("schemaSetNames") Collection<String> schemaSetNames);
default Collection<AnchorEntity> findAllByDataspaceAndSchemaSetNameIn(final DataspaceEntity dataspaceEntity,
final Collection<String> schemaSetNames) {
- return findAllByDataspaceIdAndSchemaSetNameIn(dataspaceEntity.getId(), schemaSetNames.toArray(new String[0]));
+ return findAllByDataspaceIdAndSchemaSetNameIn(dataspaceEntity.getId(), schemaSetNames);
}
Integer countByDataspace(DataspaceEntity dataspaceEntity);
@@ -80,7 +80,7 @@
JOIN anchor ON anchor.schema_set_id = schema_set.id
WHERE
schema_set.dataspace_id = :dataspaceId
- AND module_name = ANY ( :moduleNames )
+ AND module_name IN (:moduleNames)
GROUP BY
anchor.id,
anchor.name,
@@ -90,25 +90,18 @@
COUNT(DISTINCT module_name) = :sizeOfModuleNames
""", nativeQuery = true)
Collection<String> getAnchorNamesByDataspaceIdAndModuleNames(@Param("dataspaceId") int dataspaceId,
- @Param("moduleNames") String[] moduleNames,
+ @Param("moduleNames") Collection<String> moduleNames,
@Param("sizeOfModuleNames") int sizeOfModuleNames);
- default Collection<String> getAnchorNamesByDataspaceIdAndModuleNames(final int dataspaceId,
- final Collection<String> moduleNames,
- final int sizeOfModuleNames) {
- final String[] moduleNamesArray = moduleNames.toArray(new String[0]);
- return getAnchorNamesByDataspaceIdAndModuleNames(dataspaceId, moduleNamesArray, sizeOfModuleNames);
- }
-
@Modifying
- @Query(value = "DELETE FROM anchor WHERE dataspace_id = :dataspaceId AND name = ANY (:anchorNames)",
+ @Query(value = "DELETE FROM anchor WHERE dataspace_id = :dataspaceId AND name IN (:anchorNames)",
nativeQuery = true)
void deleteAllByDataspaceIdAndNameIn(@Param("dataspaceId") int dataspaceId,
- @Param("anchorNames") String[] anchorNames);
+ @Param("anchorNames") Collection<String> anchorNames);
default void deleteAllByDataspaceAndNameIn(final DataspaceEntity dataspaceEntity,
final Collection<String> anchorNames) {
- deleteAllByDataspaceIdAndNameIn(dataspaceEntity.getId(), anchorNames.toArray(new String[0]));
+ deleteAllByDataspaceIdAndNameIn(dataspaceEntity.getId(), anchorNames);
}
@Modifying
diff --git a/cps-ri/src/main/java/org/onap/cps/ri/repository/FragmentRepository.java b/cps-ri/src/main/java/org/onap/cps/ri/repository/FragmentRepository.java
index 8edc3f2..9598230 100755
--- a/cps-ri/src/main/java/org/onap/cps/ri/repository/FragmentRepository.java
+++ b/cps-ri/src/main/java/org/onap/cps/ri/repository/FragmentRepository.java
@@ -1,6 +1,6 @@
/*
* ============LICENSE_START=======================================================
- * Copyright (C) 2021-2023 Nordix Foundation.
+ * Copyright (C) 2021-2024 Nordix Foundation.
* Modifications Copyright (C) 2020-2021 Bell Canada.
* Modifications Copyright (C) 2020-2021 Pantheon.tech.
* Modifications Copyright (C) 2023 TechMahindra Ltd.
@@ -48,14 +48,14 @@
new DataNodeNotFoundException(anchorEntity.getDataspace().getName(), anchorEntity.getName(), xpath));
}
- @Query(value = "SELECT * FROM fragment WHERE anchor_id = :anchorId AND xpath = ANY (:xpaths)",
+ @Query(value = "SELECT * FROM fragment WHERE anchor_id = :anchorId AND xpath IN (:xpaths)",
nativeQuery = true)
List<FragmentEntity> findByAnchorIdAndXpathIn(@Param("anchorId") long anchorId,
- @Param("xpaths") String[] xpaths);
+ @Param("xpaths") Collection<String> xpaths);
default List<FragmentEntity> findByAnchorAndXpathIn(final AnchorEntity anchorEntity,
final Collection<String> xpaths) {
- return findByAnchorIdAndXpathIn(anchorEntity.getId(), xpaths.toArray(new String[0]));
+ return findByAnchorIdAndXpathIn(anchorEntity.getId(), xpaths);
}
@Query(value = "SELECT * FROM fragment WHERE anchor_id = :anchorId \n"
@@ -70,58 +70,52 @@
}
@Query(value = "SELECT fragment.* FROM fragment JOIN anchor ON anchor.id = fragment.anchor_id "
- + "WHERE dataspace_id = :dataspaceId AND xpath = ANY (:xpaths)", nativeQuery = true)
+ + "WHERE dataspace_id = :dataspaceId AND xpath IN (:xpaths)", nativeQuery = true)
List<FragmentEntity> findByDataspaceIdAndXpathIn(@Param("dataspaceId") int dataspaceId,
- @Param("xpaths") String[] xpaths);
+ @Param("xpaths") Collection<String> xpaths);
default List<FragmentEntity> findByDataspaceAndXpathIn(final DataspaceEntity dataspaceEntity,
final Collection<String> xpaths) {
- return findByDataspaceIdAndXpathIn(dataspaceEntity.getId(), xpaths.toArray(new String[0]));
+ return findByDataspaceIdAndXpathIn(dataspaceEntity.getId(), xpaths);
}
@Query(value = "SELECT * FROM fragment WHERE anchor_id IN (:anchorIds)"
- + " AND xpath = ANY (:xpaths)", nativeQuery = true)
- List<FragmentEntity> findByAnchorIdsAndXpathIn(@Param("anchorIds") Long[] anchorIds,
- @Param("xpaths") String[] xpaths);
+ + " AND xpath IN (:xpaths)", nativeQuery = true)
+ List<FragmentEntity> findByAnchorIdsAndXpathIn(@Param("anchorIds") Collection<Long> anchorIds,
+ @Param("xpaths") Collection<String> xpaths);
@Query(value = "SELECT * FROM fragment WHERE anchor_id = :anchorId LIMIT 1", nativeQuery = true)
Optional<FragmentEntity> findOneByAnchorId(@Param("anchorId") long anchorId);
@Modifying
- @Query(value = "DELETE FROM fragment WHERE anchor_id = ANY (:anchorIds)", nativeQuery = true)
- void deleteByAnchorIdIn(@Param("anchorIds") long[] anchorIds);
+ @Query(value = "DELETE FROM fragment WHERE anchor_id IN (:anchorIds)", nativeQuery = true)
+ void deleteByAnchorIdIn(@Param("anchorIds") Collection<Long> anchorIds);
default void deleteByAnchorIn(final Collection<AnchorEntity> anchorEntities) {
- deleteByAnchorIdIn(anchorEntities.stream().map(AnchorEntity::getId).mapToLong(id -> id).toArray());
+ deleteByAnchorIdIn(anchorEntities.stream().map(AnchorEntity::getId).toList());
}
@Modifying
- @Query(value = "DELETE FROM fragment WHERE anchor_id = :anchorId AND xpath = ANY (:xpaths)", nativeQuery = true)
- void deleteByAnchorIdAndXpaths(@Param("anchorId") long anchorId, @Param("xpaths") String[] xpaths);
-
- default void deleteByAnchorIdAndXpaths(final long anchorId, final Collection<String> xpaths) {
- deleteByAnchorIdAndXpaths(anchorId, xpaths.toArray(new String[0]));
- }
+ @Query(value = "DELETE FROM fragment WHERE anchor_id = :anchorId AND xpath IN (:xpaths)", nativeQuery = true)
+ void deleteByAnchorIdAndXpaths(@Param("anchorId") long anchorId, @Param("xpaths") Collection<String> xpaths);
@Modifying
- @Query(value = "DELETE FROM fragment f WHERE anchor_id = :anchorId AND xpath LIKE ANY (:xpathPatterns)",
+ @Query(value = "DELETE FROM fragment f WHERE anchor_id = :anchorId AND xpath LIKE :xpathPattern",
nativeQuery = true)
- void deleteByAnchorIdAndXpathLikeAny(@Param("anchorId") long anchorId,
- @Param("xpathPatterns") String[] xpathPatterns);
+ void deleteByAnchorIdAndXpathLike(@Param("anchorId") long anchorId, @Param("xpathPattern") String xpathPattern);
- default void deleteListsByAnchorIdAndXpaths(long anchorId, Collection<String> xpaths) {
- deleteByAnchorIdAndXpathLikeAny(anchorId,
- xpaths.stream().map(xpath -> EscapeUtils.escapeForSqlLike(xpath) + "[@%").toArray(String[]::new));
+ default void deleteListByAnchorIdAndXpath(final long anchorId, final String xpath) {
+ deleteByAnchorIdAndXpathLike(anchorId, EscapeUtils.escapeForSqlLike(xpath) + "[@%");
}
- @Query(value = "SELECT xpath FROM fragment WHERE anchor_id = :anchorId AND xpath = ANY (:xpaths)",
+ @Query(value = "SELECT xpath FROM fragment WHERE anchor_id = :anchorId AND xpath IN (:xpaths)",
nativeQuery = true)
List<String> findAllXpathByAnchorIdAndXpathIn(@Param("anchorId") long anchorId,
- @Param("xpaths") String[] xpaths);
+ @Param("xpaths") Collection<String> xpaths);
default List<String> findAllXpathByAnchorAndXpathIn(final AnchorEntity anchorEntity,
final Collection<String> xpaths) {
- return findAllXpathByAnchorIdAndXpathIn(anchorEntity.getId(), xpaths.toArray(new String[0]));
+ return findAllXpathByAnchorIdAndXpathIn(anchorEntity.getId(), xpaths);
}
@Query(value = "SELECT EXISTS(SELECT 1 FROM fragment WHERE anchor_id = :anchorId"
diff --git a/cps-ri/src/main/java/org/onap/cps/ri/repository/ModuleReferenceRepositoryImpl.java b/cps-ri/src/main/java/org/onap/cps/ri/repository/ModuleReferenceRepositoryImpl.java
index c160fb1..702b589 100644
--- a/cps-ri/src/main/java/org/onap/cps/ri/repository/ModuleReferenceRepositoryImpl.java
+++ b/cps-ri/src/main/java/org/onap/cps/ri/repository/ModuleReferenceRepositoryImpl.java
@@ -64,7 +64,7 @@
}
final String tempTableName = tempTableCreator.createTemporaryTable(
- "moduleReferencesToCheckTemp", sqlData, "module_name", "revision");
+ "moduleReferencesToCheckTemp", sqlData, List.of("module_name", "revision"));
return identifyNewModuleReferencesForCmHandle(tempTableName);
}
diff --git a/cps-ri/src/main/java/org/onap/cps/ri/repository/SchemaSetRepository.java b/cps-ri/src/main/java/org/onap/cps/ri/repository/SchemaSetRepository.java
index 9357a5c..b455bc0 100644
--- a/cps-ri/src/main/java/org/onap/cps/ri/repository/SchemaSetRepository.java
+++ b/cps-ri/src/main/java/org/onap/cps/ri/repository/SchemaSetRepository.java
@@ -2,7 +2,7 @@
* ============LICENSE_START=======================================================
* Copyright (C) 2020 Pantheon.tech
* Modifications Copyright (C) 2022 TechMahindra Ltd.
- * Modifications Copyright (C) 2023 Nordix Foundation
+ * Modifications Copyright (C) 2023-2024 Nordix Foundation
* ================================================================================
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -61,10 +61,10 @@
}
@Modifying
- @Query(value = "DELETE FROM schema_set WHERE dataspace_id = :dataspaceId AND name = ANY (:schemaSetNames)",
+ @Query(value = "DELETE FROM schema_set WHERE dataspace_id = :dataspaceId AND name IN (:schemaSetNames)",
nativeQuery = true)
void deleteByDataspaceIdAndNameIn(@Param("dataspaceId") final int dataspaceId,
- @Param("schemaSetNames") final String[] schemaSetNames);
+ @Param("schemaSetNames") final Collection<String> schemaSetNames);
/**
* Delete multiple schema sets in a given dataspace.
@@ -73,7 +73,7 @@
*/
default void deleteByDataspaceAndNameIn(final DataspaceEntity dataspaceEntity,
final Collection<String> schemaSetNames) {
- deleteByDataspaceIdAndNameIn(dataspaceEntity.getId(), schemaSetNames.toArray(new String[0]));
+ deleteByDataspaceIdAndNameIn(dataspaceEntity.getId(), schemaSetNames);
}
}
diff --git a/cps-ri/src/main/java/org/onap/cps/ri/repository/TempTableCreator.java b/cps-ri/src/main/java/org/onap/cps/ri/repository/TempTableCreator.java
index cc83ab7..25c1491 100644
--- a/cps-ri/src/main/java/org/onap/cps/ri/repository/TempTableCreator.java
+++ b/cps-ri/src/main/java/org/onap/cps/ri/repository/TempTableCreator.java
@@ -1,6 +1,6 @@
/*-
* ============LICENSE_START=======================================================
- * Copyright (C) 2022-2023 Nordix Foundation.
+ * Copyright (C) 2022-2024 Nordix Foundation.
* ================================================================================
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -22,10 +22,8 @@
import jakarta.persistence.EntityManager;
import jakarta.persistence.PersistenceContext;
-import java.util.Arrays;
import java.util.Collection;
import java.util.HashSet;
-import java.util.Iterator;
import java.util.List;
import java.util.UUID;
import java.util.stream.Collectors;
@@ -54,7 +52,7 @@
*/
public String createTemporaryTable(final String prefix,
final Collection<List<String>> sqlData,
- final String... columnNames) {
+ final Collection<String> columnNames) {
final String tempTableName = prefix + UUID.randomUUID().toString().replace("-", "");
final StringBuilder sqlStringBuilder = new StringBuilder("CREATE TEMPORARY TABLE ");
sqlStringBuilder.append(tempTableName);
@@ -65,29 +63,21 @@
return tempTableName;
}
- private static void defineColumns(final StringBuilder sqlStringBuilder, final String[] columnNames) {
- sqlStringBuilder.append('(');
- final Iterator<String> it = Arrays.stream(columnNames).iterator();
- while (it.hasNext()) {
- final String columnName = it.next();
- sqlStringBuilder.append(" ");
- sqlStringBuilder.append(columnName);
- sqlStringBuilder.append(" varchar NOT NULL");
- if (it.hasNext()) {
- sqlStringBuilder.append(",");
- }
- }
- sqlStringBuilder.append(")");
+ private static void defineColumns(final StringBuilder sqlStringBuilder, final Collection<String> columnNames) {
+ final String columns = columnNames.stream()
+ .map(columnName -> " " + columnName + " varchar NOT NULL")
+ .collect(Collectors.joining(","));
+ sqlStringBuilder.append('(').append(columns).append(')');
}
private static void insertData(final StringBuilder sqlStringBuilder,
final String tempTableName,
- final String[] columnNames,
+ final Collection<String> columnNames,
final Collection<List<String>> sqlData) {
final Collection<String> sqlInserts = new HashSet<>(sqlData.size());
for (final Collection<String> rowValues : sqlData) {
final Collection<String> escapedValues =
- rowValues.stream().map(EscapeUtils::escapeForSqlStringLiteral).collect(Collectors.toList());
+ rowValues.stream().map(EscapeUtils::escapeForSqlStringLiteral).toList();
sqlInserts.add("('" + String.join("','", escapedValues) + "')");
}
sqlStringBuilder.append("INSERT INTO ");
diff --git a/cps-ri/src/main/java/org/onap/cps/ri/repository/YangResourceRepository.java b/cps-ri/src/main/java/org/onap/cps/ri/repository/YangResourceRepository.java
index 9a11592..831766c 100644
--- a/cps-ri/src/main/java/org/onap/cps/ri/repository/YangResourceRepository.java
+++ b/cps-ri/src/main/java/org/onap/cps/ri/repository/YangResourceRepository.java
@@ -35,11 +35,7 @@
public interface YangResourceRepository extends JpaRepository<YangResourceEntity, Integer>,
YangResourceNativeRepository, SchemaSetYangResourceRepository {
- List<YangResourceEntity> findAllByChecksumIn(String[] checksums);
-
- default List<YangResourceEntity> findAllByChecksumIn(final Collection<String> checksums) {
- return findAllByChecksumIn(checksums.toArray(new String[0]));
- }
+ List<YangResourceEntity> findAllByChecksumIn(Collection<String> checksums);
@Query(value = """
SELECT DISTINCT
diff --git a/cps-service/pom.xml b/cps-service/pom.xml
index 2a9c75f..6e53c2d 100644
--- a/cps-service/pom.xml
+++ b/cps-service/pom.xml
@@ -29,7 +29,7 @@
<parent>
<groupId>org.onap.cps</groupId>
<artifactId>cps-parent</artifactId>
- <version>3.5.3-SNAPSHOT</version>
+ <version>3.5.4-SNAPSHOT</version>
<relativePath>../cps-parent/pom.xml</relativePath>
</parent>
diff --git a/cps-service/src/main/java/org/onap/cps/utils/YangParserHelper.java b/cps-service/src/main/java/org/onap/cps/utils/YangParserHelper.java
index 5971645..a5865be 100644
--- a/cps-service/src/main/java/org/onap/cps/utils/YangParserHelper.java
+++ b/cps-service/src/main/java/org/onap/cps/utils/YangParserHelper.java
@@ -29,6 +29,7 @@
import java.util.Collection;
import java.util.HashMap;
import java.util.Iterator;
+import java.util.List;
import java.util.Map;
import javax.xml.parsers.ParserConfigurationException;
import javax.xml.stream.XMLInputFactory;
@@ -181,12 +182,12 @@
private static Map<String, Object> getDataSchemaNodeAndIdentifiersByXpath(final String parentNodeXpath,
final SchemaContext schemaContext) {
- final String[] xpathNodeIdSequence = xpathToNodeIdSequence(parentNodeXpath);
+ final List<String> xpathNodeIdSequence = xpathToNodeIdSequence(parentNodeXpath);
return findDataSchemaNodeAndIdentifiersByXpathNodeIdSequence(xpathNodeIdSequence, schemaContext.getChildNodes(),
new ArrayList<>());
}
- private static String[] xpathToNodeIdSequence(final String xpath) {
+ private static List<String> xpathToNodeIdSequence(final String xpath) {
try {
return CpsPathUtil.getXpathNodeIdSequence(xpath);
} catch (final PathParsingException pathParsingException) {
@@ -196,17 +197,16 @@
}
private static Map<String, Object> findDataSchemaNodeAndIdentifiersByXpathNodeIdSequence(
- final String[] xpathNodeIdSequence,
+ final List<String> xpathNodeIdSequence,
final Collection<? extends DataSchemaNode> dataSchemaNodes,
final Collection<QName> dataSchemaNodeIdentifiers) {
- final String currentXpathNodeId = xpathNodeIdSequence[0];
+ final String currentXpathNodeId = xpathNodeIdSequence.get(0);
final DataSchemaNode currentDataSchemaNode = dataSchemaNodes.stream()
.filter(dataSchemaNode -> currentXpathNodeId.equals(dataSchemaNode.getQName().getLocalName()))
.findFirst().orElseThrow(() -> schemaNodeNotFoundException(currentXpathNodeId));
dataSchemaNodeIdentifiers.add(currentDataSchemaNode.getQName());
- if (xpathNodeIdSequence.length <= 1) {
- final Map<String, Object> dataSchemaNodeAndIdentifiers =
- new HashMap<>();
+ if (xpathNodeIdSequence.size() <= 1) {
+ final Map<String, Object> dataSchemaNodeAndIdentifiers = new HashMap<>();
dataSchemaNodeAndIdentifiers.put("dataSchemaNode", currentDataSchemaNode);
dataSchemaNodeAndIdentifiers.put("dataSchemaNodeIdentifiers", dataSchemaNodeIdentifiers);
return dataSchemaNodeAndIdentifiers;
@@ -217,13 +217,11 @@
((DataNodeContainer) currentDataSchemaNode).getChildNodes(),
dataSchemaNodeIdentifiers);
}
- throw schemaNodeNotFoundException(xpathNodeIdSequence[1]);
+ throw schemaNodeNotFoundException(xpathNodeIdSequence.get(1));
}
- private static String[] getNextLevelXpathNodeIdSequence(final String[] xpathNodeIdSequence) {
- final String[] nextXpathNodeIdSequence = new String[xpathNodeIdSequence.length - 1];
- System.arraycopy(xpathNodeIdSequence, 1, nextXpathNodeIdSequence, 0, nextXpathNodeIdSequence.length);
- return nextXpathNodeIdSequence;
+ private static List<String> getNextLevelXpathNodeIdSequence(final List<String> xpathNodeIdSequence) {
+ return xpathNodeIdSequence.subList(1, xpathNodeIdSequence.size());
}
private static DataValidationException schemaNodeNotFoundException(final String schemaNodeIdentifier) {
diff --git a/docs/api/swagger/cps/openapi.yaml b/docs/api/swagger/cps/openapi.yaml
index 74b5234..d22b288 100644
--- a/docs/api/swagger/cps/openapi.yaml
+++ b/docs/api/swagger/cps/openapi.yaml
@@ -11,14 +11,14 @@
title: ONAP Open API v3 Configuration Persistence Service
version: 3.5.2
servers:
- - url: /cps/api
+- url: /cps/api
security:
- - basicAuth: []
+- basicAuth: []
tags:
- - description: cps Admin
- name: cps-admin
- - description: cps Data
- name: cps-data
+- description: cps Admin
+ name: cps-admin
+- description: cps Data
+ name: cps-data
paths:
/v1/dataspaces:
post:
@@ -26,13 +26,13 @@
description: Create a new dataspace
operationId: createDataspace
parameters:
- - description: dataspace-name
- in: query
- name: dataspace-name
- required: true
- schema:
- example: my-dataspace
- type: string
+ - description: dataspace-name
+ in: query
+ name: dataspace-name
+ required: true
+ schema:
+ example: my-dataspace
+ type: string
responses:
"201":
content:
@@ -83,29 +83,29 @@
description: Internal Server Error
summary: Create a dataspace
tags:
- - cps-admin
+ - cps-admin
/{apiVersion}/dataspaces:
delete:
description: Delete a dataspace
operationId: deleteDataspace
parameters:
- - description: apiVersion
- in: path
- name: apiVersion
- required: true
- schema:
- default: v2
- enum:
- - v1
- - v2
- type: string
- - description: dataspace-name
- in: query
- name: dataspace-name
- required: true
- schema:
- example: my-dataspace
- type: string
+ - description: apiVersion
+ in: path
+ name: apiVersion
+ required: true
+ schema:
+ default: v2
+ enum:
+ - v1
+ - v2
+ type: string
+ - description: dataspace-name
+ in: query
+ name: dataspace-name
+ required: true
+ schema:
+ example: my-dataspace
+ type: string
responses:
"204":
content: {}
@@ -152,19 +152,19 @@
description: Internal Server Error
summary: Delete a dataspace
tags:
- - cps-admin
+ - cps-admin
/v2/dataspaces:
post:
description: Create a new dataspace
operationId: createDataspaceV2
parameters:
- - description: dataspace-name
- in: query
- name: dataspace-name
- required: true
- schema:
- example: my-dataspace
- type: string
+ - description: dataspace-name
+ in: query
+ name: dataspace-name
+ required: true
+ schema:
+ example: my-dataspace
+ type: string
responses:
"201":
description: Created without response body
@@ -210,22 +210,22 @@
description: Internal Server Error
summary: Create a dataspace
tags:
- - cps-admin
+ - cps-admin
/{apiVersion}/admin/dataspaces:
get:
description: Read all dataspaces
operationId: getAllDataspaces
parameters:
- - description: apiVersion
- in: path
- name: apiVersion
- required: true
- schema:
- default: v2
- enum:
- - v1
- - v2
- type: string
+ - description: apiVersion
+ in: path
+ name: apiVersion
+ required: true
+ schema:
+ default: v2
+ enum:
+ - v1
+ - v2
+ type: string
responses:
"200":
content:
@@ -267,29 +267,29 @@
description: Internal Server Error
summary: Get all dataspaces
tags:
- - cps-admin
+ - cps-admin
/{apiVersion}/admin/dataspaces/{dataspace-name}:
get:
description: Read a dataspace given a dataspace name
operationId: getDataspace
parameters:
- - description: apiVersion
- in: path
- name: apiVersion
- required: true
- schema:
- default: v2
- enum:
- - v1
- - v2
- type: string
- - description: dataspace-name
- in: path
- name: dataspace-name
- required: true
- schema:
- example: my-dataspace
- type: string
+ - description: apiVersion
+ in: path
+ name: apiVersion
+ required: true
+ schema:
+ default: v2
+ enum:
+ - v1
+ - v2
+ type: string
+ - description: dataspace-name
+ in: path
+ name: dataspace-name
+ required: true
+ schema:
+ example: my-dataspace
+ type: string
responses:
"200":
content:
@@ -329,34 +329,34 @@
description: Internal Server Error
summary: Get a dataspace
tags:
- - cps-admin
+ - cps-admin
/v1/dataspaces/{dataspace-name}/anchors:
post:
deprecated: true
description: Create a new anchor in the given dataspace
operationId: createAnchor
parameters:
- - description: dataspace-name
- in: path
- name: dataspace-name
- required: true
- schema:
- example: my-dataspace
- type: string
- - description: schema-set-name
- in: query
- name: schema-set-name
- required: true
- schema:
- example: my-schema-set
- type: string
- - description: anchor-name
- in: query
- name: anchor-name
- required: true
- schema:
- example: my-anchor
- type: string
+ - description: dataspace-name
+ in: path
+ name: dataspace-name
+ required: true
+ schema:
+ example: my-dataspace
+ type: string
+ - description: schema-set-name
+ in: query
+ name: schema-set-name
+ required: true
+ schema:
+ example: my-schema-set
+ type: string
+ - description: anchor-name
+ in: query
+ name: anchor-name
+ required: true
+ schema:
+ example: my-anchor
+ type: string
responses:
"201":
content:
@@ -407,33 +407,33 @@
description: Internal Server Error
summary: Create an anchor
tags:
- - cps-admin
+ - cps-admin
/v2/dataspaces/{dataspace-name}/anchors:
post:
description: Create a new anchor in the given dataspace
operationId: createAnchorV2
parameters:
- - description: dataspace-name
- in: path
- name: dataspace-name
- required: true
- schema:
- example: my-dataspace
- type: string
- - description: schema-set-name
- in: query
- name: schema-set-name
- required: true
- schema:
- example: my-schema-set
- type: string
- - description: anchor-name
- in: query
- name: anchor-name
- required: true
- schema:
- example: my-anchor
- type: string
+ - description: dataspace-name
+ in: path
+ name: dataspace-name
+ required: true
+ schema:
+ example: my-dataspace
+ type: string
+ - description: schema-set-name
+ in: query
+ name: schema-set-name
+ required: true
+ schema:
+ example: my-schema-set
+ type: string
+ - description: anchor-name
+ in: query
+ name: anchor-name
+ required: true
+ schema:
+ example: my-anchor
+ type: string
responses:
"201":
description: Created without response body
@@ -479,29 +479,29 @@
description: Internal Server Error
summary: Create an anchor
tags:
- - cps-admin
+ - cps-admin
/{apiVersion}/dataspaces/{dataspace-name}/anchors:
get:
description: "Read all anchors, given a dataspace"
operationId: getAnchors
parameters:
- - description: apiVersion
- in: path
- name: apiVersion
- required: true
- schema:
- default: v2
- enum:
- - v1
- - v2
- type: string
- - description: dataspace-name
- in: path
- name: dataspace-name
- required: true
- schema:
- example: my-dataspace
- type: string
+ - description: apiVersion
+ in: path
+ name: apiVersion
+ required: true
+ schema:
+ default: v2
+ enum:
+ - v1
+ - v2
+ type: string
+ - description: dataspace-name
+ in: path
+ name: dataspace-name
+ required: true
+ schema:
+ example: my-dataspace
+ type: string
responses:
"200":
content:
@@ -543,36 +543,36 @@
description: Internal Server Error
summary: Get anchors
tags:
- - cps-admin
+ - cps-admin
/{apiVersion}/dataspaces/{dataspace-name}/anchors/{anchor-name}:
delete:
description: Delete an anchor given an anchor name and a dataspace
operationId: deleteAnchor
parameters:
- - description: apiVersion
- in: path
- name: apiVersion
- required: true
- schema:
- default: v2
- enum:
- - v1
- - v2
- type: string
- - description: dataspace-name
- in: path
- name: dataspace-name
- required: true
- schema:
- example: my-dataspace
- type: string
- - description: anchor-name
- in: path
- name: anchor-name
- required: true
- schema:
- example: my-anchor
- type: string
+ - description: apiVersion
+ in: path
+ name: apiVersion
+ required: true
+ schema:
+ default: v2
+ enum:
+ - v1
+ - v2
+ type: string
+ - description: dataspace-name
+ in: path
+ name: dataspace-name
+ required: true
+ schema:
+ example: my-dataspace
+ type: string
+ - description: anchor-name
+ in: path
+ name: anchor-name
+ required: true
+ schema:
+ example: my-anchor
+ type: string
responses:
"204":
content: {}
@@ -609,35 +609,35 @@
description: Internal Server Error
summary: Delete an anchor
tags:
- - cps-admin
+ - cps-admin
get:
description: Read an anchor given an anchor name and a dataspace
operationId: getAnchor
parameters:
- - description: apiVersion
- in: path
- name: apiVersion
- required: true
- schema:
- default: v2
- enum:
- - v1
- - v2
- type: string
- - description: dataspace-name
- in: path
- name: dataspace-name
- required: true
- schema:
- example: my-dataspace
- type: string
- - description: anchor-name
- in: path
- name: anchor-name
- required: true
- schema:
- example: my-anchor
- type: string
+ - description: apiVersion
+ in: path
+ name: apiVersion
+ required: true
+ schema:
+ default: v2
+ enum:
+ - v1
+ - v2
+ type: string
+ - description: dataspace-name
+ in: path
+ name: dataspace-name
+ required: true
+ schema:
+ example: my-dataspace
+ type: string
+ - description: anchor-name
+ in: path
+ name: anchor-name
+ required: true
+ schema:
+ example: my-anchor
+ type: string
responses:
"200":
content:
@@ -677,27 +677,27 @@
description: Internal Server Error
summary: Get an anchor
tags:
- - cps-admin
+ - cps-admin
/v1/dataspaces/{dataspace-name}/schema-sets:
post:
deprecated: true
description: Create a new schema set in the given dataspace
operationId: createSchemaSet
parameters:
- - description: dataspace-name
- in: path
- name: dataspace-name
- required: true
- schema:
- example: my-dataspace
- type: string
- - description: schema-set-name
- in: query
- name: schema-set-name
- required: true
- schema:
- example: my-schema-set
- type: string
+ - description: dataspace-name
+ in: path
+ name: dataspace-name
+ required: true
+ schema:
+ example: my-dataspace
+ type: string
+ - description: schema-set-name
+ in: query
+ name: schema-set-name
+ required: true
+ schema:
+ example: my-schema-set
+ type: string
requestBody:
content:
multipart/form-data:
@@ -754,26 +754,26 @@
description: Internal Server Error
summary: Create a schema set
tags:
- - cps-admin
+ - cps-admin
/v2/dataspaces/{dataspace-name}/schema-sets:
post:
description: Create a new schema set in the given dataspace
operationId: createSchemaSetV2
parameters:
- - description: dataspace-name
- in: path
- name: dataspace-name
- required: true
- schema:
- example: my-dataspace
- type: string
- - description: schema-set-name
- in: query
- name: schema-set-name
- required: true
- schema:
- example: my-schema-set
- type: string
+ - description: dataspace-name
+ in: path
+ name: dataspace-name
+ required: true
+ schema:
+ example: my-dataspace
+ type: string
+ - description: schema-set-name
+ in: query
+ name: schema-set-name
+ required: true
+ schema:
+ example: my-schema-set
+ type: string
requestBody:
content:
multipart/form-data:
@@ -825,29 +825,29 @@
description: Internal Server Error
summary: Create a schema set
tags:
- - cps-admin
+ - cps-admin
/{apiVersion}/dataspaces/{dataspace-name}/schema-sets:
get:
description: "Read all schema sets, given a dataspace"
operationId: getSchemaSets
parameters:
- - description: apiVersion
- in: path
- name: apiVersion
- required: true
- schema:
- default: v2
- enum:
- - v1
- - v2
- type: string
- - description: dataspace-name
- in: path
- name: dataspace-name
- required: true
- schema:
- example: my-dataspace
- type: string
+ - description: apiVersion
+ in: path
+ name: apiVersion
+ required: true
+ schema:
+ default: v2
+ enum:
+ - v1
+ - v2
+ type: string
+ - description: dataspace-name
+ in: path
+ name: dataspace-name
+ required: true
+ schema:
+ example: my-dataspace
+ type: string
responses:
"200":
content:
@@ -889,36 +889,36 @@
description: Internal Server Error
summary: Get schema sets
tags:
- - cps-admin
+ - cps-admin
/{apiVersion}/dataspaces/{dataspace-name}/schema-sets/{schema-set-name}:
delete:
description: Delete a schema set given a schema set name and a dataspace
operationId: deleteSchemaSet
parameters:
- - description: apiVersion
- in: path
- name: apiVersion
- required: true
- schema:
- default: v2
- enum:
- - v1
- - v2
- type: string
- - description: dataspace-name
- in: path
- name: dataspace-name
- required: true
- schema:
- example: my-dataspace
- type: string
- - description: schema-set-name
- in: path
- name: schema-set-name
- required: true
- schema:
- example: my-schema-set
- type: string
+ - description: apiVersion
+ in: path
+ name: apiVersion
+ required: true
+ schema:
+ default: v2
+ enum:
+ - v1
+ - v2
+ type: string
+ - description: dataspace-name
+ in: path
+ name: dataspace-name
+ required: true
+ schema:
+ example: my-dataspace
+ type: string
+ - description: schema-set-name
+ in: path
+ name: schema-set-name
+ required: true
+ schema:
+ example: my-schema-set
+ type: string
responses:
"204":
content: {}
@@ -965,35 +965,35 @@
description: Internal Server Error
summary: Delete a schema set
tags:
- - cps-admin
+ - cps-admin
get:
description: Read a schema set given a schema set name and a dataspace
operationId: getSchemaSet
parameters:
- - description: apiVersion
- in: path
- name: apiVersion
- required: true
- schema:
- default: v2
- enum:
- - v1
- - v2
- type: string
- - description: dataspace-name
- in: path
- name: dataspace-name
- required: true
- schema:
- example: my-dataspace
- type: string
- - description: schema-set-name
- in: path
- name: schema-set-name
- required: true
- schema:
- example: my-schema-set
- type: string
+ - description: apiVersion
+ in: path
+ name: apiVersion
+ required: true
+ schema:
+ default: v2
+ enum:
+ - v1
+ - v2
+ type: string
+ - description: dataspace-name
+ in: path
+ name: dataspace-name
+ required: true
+ schema:
+ example: my-dataspace
+ type: string
+ - description: schema-set-name
+ in: path
+ name: schema-set-name
+ required: true
+ schema:
+ example: my-schema-set
+ type: string
responses:
"200":
content:
@@ -1033,7 +1033,7 @@
description: Internal Server Error
summary: Get a schema set
tags:
- - cps-admin
+ - cps-admin
/v1/dataspaces/{dataspace-name}/anchors/{anchor-name}/node:
get:
deprecated: true
@@ -1041,40 +1041,40 @@
anchor and dataspace
operationId: getNodeByDataspaceAndAnchor
parameters:
- - description: dataspace-name
- in: path
- name: dataspace-name
- required: true
- schema:
- example: my-dataspace
- type: string
- - description: anchor-name
- in: path
- name: anchor-name
- required: true
- schema:
- example: my-anchor
- type: string
- - description: "For more details on xpath, please refer https://docs.onap.org/projects/onap-cps/en/latest/xpath.html"
- examples:
- container xpath:
- value: /shops/bookstore
- list attributes xpath:
- value: "/shops/bookstore/categories[@code=1]"
- in: query
- name: xpath
- required: false
- schema:
- default: /
- type: string
- - description: include-descendants
- in: query
- name: include-descendants
- required: false
- schema:
- default: false
- example: false
- type: boolean
+ - description: dataspace-name
+ in: path
+ name: dataspace-name
+ required: true
+ schema:
+ example: my-dataspace
+ type: string
+ - description: anchor-name
+ in: path
+ name: anchor-name
+ required: true
+ schema:
+ example: my-anchor
+ type: string
+ - description: "For more details on xpath, please refer https://docs.onap.org/projects/onap-cps/en/latest/xpath.html"
+ examples:
+ container xpath:
+ value: /shops/bookstore
+ list attributes xpath:
+ value: "/shops/bookstore/categories[@code=1]"
+ in: query
+ name: xpath
+ required: false
+ schema:
+ default: /
+ type: string
+ - description: include-descendants
+ in: query
+ name: include-descendants
+ required: false
+ schema:
+ default: false
+ example: false
+ type: boolean
responses:
"200":
content:
@@ -1118,7 +1118,7 @@
description: Internal Server Error
summary: Get a node
tags:
- - cps-data
+ - cps-data
x-codegen-request-body-name: xpath
/v2/dataspaces/{dataspace-name}/anchors/{anchor-name}/node:
get:
@@ -1126,42 +1126,42 @@
anchor and dataspace
operationId: getNodeByDataspaceAndAnchorV2
parameters:
- - description: dataspace-name
- in: path
- name: dataspace-name
- required: true
- schema:
- example: my-dataspace
- type: string
- - description: anchor-name
- in: path
- name: anchor-name
- required: true
- schema:
- example: my-anchor
- type: string
- - description: "For more details on xpath, please refer https://docs.onap.org/projects/onap-cps/en/latest/xpath.html"
- examples:
- container xpath:
- value: /shops/bookstore
- list attributes xpath:
- value: "/shops/bookstore/categories[@code=1]"
- in: query
- name: xpath
- required: false
- schema:
- default: /
- type: string
- - description: "Number of descendants to query. Allowed values are 'none', 'all',\
+ - description: dataspace-name
+ in: path
+ name: dataspace-name
+ required: true
+ schema:
+ example: my-dataspace
+ type: string
+ - description: anchor-name
+ in: path
+ name: anchor-name
+ required: true
+ schema:
+ example: my-anchor
+ type: string
+ - description: "For more details on xpath, please refer https://docs.onap.org/projects/onap-cps/en/latest/xpath.html"
+ examples:
+ container xpath:
+ value: /shops/bookstore
+ list attributes xpath:
+ value: "/shops/bookstore/categories[@code=1]"
+ in: query
+ name: xpath
+ required: false
+ schema:
+ default: /
+ type: string
+ - description: "Number of descendants to query. Allowed values are 'none', 'all',\
\ 'direct', 1 (for direct), -1 (for all), 0 (for none) and any positive\
\ number."
- in: query
- name: descendants
- required: false
- schema:
- default: none
- example: "3"
- type: string
+ in: query
+ name: descendants
+ required: false
+ schema:
+ default: none
+ example: "3"
+ type: string
responses:
"200":
content:
@@ -1205,7 +1205,7 @@
description: Internal Server Error
summary: Get a node
tags:
- - cps-data
+ - cps-data
x-codegen-request-body-name: xpath
/{apiVersion}/dataspaces/{dataspace-name}/anchors/{anchor-name}/nodes:
delete:
@@ -1213,49 +1213,49 @@
xpath.
operationId: deleteDataNode
parameters:
- - description: apiVersion
- in: path
- name: apiVersion
- required: true
- schema:
- default: v2
- enum:
- - v1
- - v2
- type: string
- - description: dataspace-name
- in: path
- name: dataspace-name
- required: true
- schema:
- example: my-dataspace
- type: string
- - description: anchor-name
- in: path
- name: anchor-name
- required: true
- schema:
- example: my-anchor
- type: string
- - description: "For more details on xpath, please refer https://docs.onap.org/projects/onap-cps/en/latest/xpath.html"
- examples:
- container xpath:
- value: /shops/bookstore
- list attributes xpath:
- value: "/shops/bookstore/categories[@code=1]"
- in: query
- name: xpath
- required: false
- schema:
- default: /
- type: string
- - description: observed-timestamp
- in: query
- name: observed-timestamp
- required: false
- schema:
- example: 2021-03-21T00:10:34.030-0100
- type: string
+ - description: apiVersion
+ in: path
+ name: apiVersion
+ required: true
+ schema:
+ default: v2
+ enum:
+ - v1
+ - v2
+ type: string
+ - description: dataspace-name
+ in: path
+ name: dataspace-name
+ required: true
+ schema:
+ example: my-dataspace
+ type: string
+ - description: anchor-name
+ in: path
+ name: anchor-name
+ required: true
+ schema:
+ example: my-anchor
+ type: string
+ - description: "For more details on xpath, please refer https://docs.onap.org/projects/onap-cps/en/latest/xpath.html"
+ examples:
+ container xpath:
+ value: /shops/bookstore
+ list attributes xpath:
+ value: "/shops/bookstore/categories[@code=1]"
+ in: query
+ name: xpath
+ required: false
+ schema:
+ default: /
+ type: string
+ - description: observed-timestamp
+ in: query
+ name: observed-timestamp
+ required: false
+ schema:
+ example: 2021-03-21T00:10:34.030-0100
+ type: string
responses:
"204":
content: {}
@@ -1292,63 +1292,63 @@
description: Internal Server Error
summary: Delete a data node
tags:
- - cps-data
+ - cps-data
patch:
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:
- - description: apiVersion
- in: path
- name: apiVersion
- required: true
- schema:
- default: v2
- enum:
- - v1
- - v2
- type: string
- - description: dataspace-name
- in: path
- name: dataspace-name
- required: true
- schema:
- example: my-dataspace
- type: string
- - description: anchor-name
- in: path
- name: anchor-name
- required: true
- schema:
- example: my-anchor
- type: string
- - description: "For more details on xpath, please refer https://docs.onap.org/projects/onap-cps/en/latest/xpath.html"
- examples:
- container xpath:
- value: /shops/bookstore
- list attributes xpath:
- value: "/shops/bookstore/categories[@code=1]"
- in: query
- name: xpath
- required: false
- schema:
- default: /
- type: string
- - description: observed-timestamp
- in: query
- name: observed-timestamp
- required: false
- schema:
- example: 2021-03-21T00:10:34.030-0100
- type: string
- - description: Content type in header
- in: header
- name: Content-Type
- required: true
- schema:
- example: application/json
- type: string
+ - description: apiVersion
+ in: path
+ name: apiVersion
+ required: true
+ schema:
+ default: v2
+ enum:
+ - v1
+ - v2
+ type: string
+ - description: dataspace-name
+ in: path
+ name: dataspace-name
+ required: true
+ schema:
+ example: my-dataspace
+ type: string
+ - description: anchor-name
+ in: path
+ name: anchor-name
+ required: true
+ schema:
+ example: my-anchor
+ type: string
+ - description: "For more details on xpath, please refer https://docs.onap.org/projects/onap-cps/en/latest/xpath.html"
+ examples:
+ container xpath:
+ value: /shops/bookstore
+ list attributes xpath:
+ value: "/shops/bookstore/categories[@code=1]"
+ in: query
+ name: xpath
+ required: false
+ schema:
+ default: /
+ type: string
+ - description: observed-timestamp
+ in: query
+ name: observed-timestamp
+ required: false
+ schema:
+ example: 2021-03-21T00:10:34.030-0100
+ type: string
+ - description: Content type in header
+ in: header
+ name: Content-Type
+ required: true
+ schema:
+ example: application/json
+ type: string
requestBody:
content:
application/json:
@@ -1410,61 +1410,61 @@
description: Internal Server Error
summary: Update node leaves
tags:
- - cps-data
+ - cps-data
post:
description: Create a node for a given anchor and dataspace
operationId: createNode
parameters:
- - description: apiVersion
- in: path
- name: apiVersion
- required: true
- schema:
- default: v2
- enum:
- - v1
- - v2
- type: string
- - description: dataspace-name
- in: path
- name: dataspace-name
- required: true
- schema:
- example: my-dataspace
- type: string
- - description: anchor-name
- in: path
- name: anchor-name
- required: true
- schema:
- example: my-anchor
- type: string
- - description: "For more details on xpath, please refer https://docs.onap.org/projects/onap-cps/en/latest/xpath.html"
- examples:
- container xpath:
- value: /shops/bookstore
- list attributes xpath:
- value: "/shops/bookstore/categories[@code=1]"
- in: query
- name: xpath
- required: false
- schema:
- default: /
- type: string
- - description: observed-timestamp
- in: query
- name: observed-timestamp
- required: false
- schema:
- example: 2021-03-21T00:10:34.030-0100
- type: string
- - description: Content type in header
- in: header
- name: Content-Type
- required: true
- schema:
- example: application/json
- type: string
+ - description: apiVersion
+ in: path
+ name: apiVersion
+ required: true
+ schema:
+ default: v2
+ enum:
+ - v1
+ - v2
+ type: string
+ - description: dataspace-name
+ in: path
+ name: dataspace-name
+ required: true
+ schema:
+ example: my-dataspace
+ type: string
+ - description: anchor-name
+ in: path
+ name: anchor-name
+ required: true
+ schema:
+ example: my-anchor
+ type: string
+ - description: "For more details on xpath, please refer https://docs.onap.org/projects/onap-cps/en/latest/xpath.html"
+ examples:
+ container xpath:
+ value: /shops/bookstore
+ list attributes xpath:
+ value: "/shops/bookstore/categories[@code=1]"
+ in: query
+ name: xpath
+ required: false
+ schema:
+ default: /
+ type: string
+ - description: observed-timestamp
+ in: query
+ name: observed-timestamp
+ required: false
+ schema:
+ example: 2021-03-21T00:10:34.030-0100
+ type: string
+ - description: Content type in header
+ in: header
+ name: Content-Type
+ required: true
+ schema:
+ example: application/json
+ type: string
requestBody:
content:
application/json:
@@ -1534,62 +1534,62 @@
description: Internal Server Error
summary: Create a node
tags:
- - cps-data
+ - cps-data
put:
description: "Replace a node with descendants for a given dataspace, anchor\
\ and a parent node xpath"
operationId: replaceNode
parameters:
- - description: apiVersion
- in: path
- name: apiVersion
- required: true
- schema:
- default: v2
- enum:
- - v1
- - v2
- type: string
- - description: dataspace-name
- in: path
- name: dataspace-name
- required: true
- schema:
- example: my-dataspace
- type: string
- - description: anchor-name
- in: path
- name: anchor-name
- required: true
- schema:
- example: my-anchor
- type: string
- - description: "For more details on xpath, please refer https://docs.onap.org/projects/onap-cps/en/latest/xpath.html"
- examples:
- container xpath:
- value: /shops/bookstore
- list attributes xpath:
- value: "/shops/bookstore/categories[@code=1]"
- in: query
- name: xpath
- required: false
- schema:
- default: /
- type: string
- - description: observed-timestamp
- in: query
- name: observed-timestamp
- required: false
- schema:
- example: 2021-03-21T00:10:34.030-0100
- type: string
- - description: Content type in header
- in: header
- name: Content-Type
- required: true
- schema:
- example: application/json
- type: string
+ - description: apiVersion
+ in: path
+ name: apiVersion
+ required: true
+ schema:
+ default: v2
+ enum:
+ - v1
+ - v2
+ type: string
+ - description: dataspace-name
+ in: path
+ name: dataspace-name
+ required: true
+ schema:
+ example: my-dataspace
+ type: string
+ - description: anchor-name
+ in: path
+ name: anchor-name
+ required: true
+ schema:
+ example: my-anchor
+ type: string
+ - description: "For more details on xpath, please refer https://docs.onap.org/projects/onap-cps/en/latest/xpath.html"
+ examples:
+ container xpath:
+ value: /shops/bookstore
+ list attributes xpath:
+ value: "/shops/bookstore/categories[@code=1]"
+ in: query
+ name: xpath
+ required: false
+ schema:
+ default: /
+ type: string
+ - description: observed-timestamp
+ in: query
+ name: observed-timestamp
+ required: false
+ schema:
+ example: 2021-03-21T00:10:34.030-0100
+ type: string
+ - description: Content type in header
+ in: header
+ name: Content-Type
+ required: true
+ schema:
+ example: application/json
+ type: string
requestBody:
content:
application/json:
@@ -1651,45 +1651,45 @@
description: Internal Server Error
summary: Replace a node with descendants
tags:
- - cps-data
+ - cps-data
/v1/dataspaces/{dataspace-name}/anchors/{anchor-name}/list-nodes:
delete:
deprecated: true
description: Delete one or all list element(s) for a given anchor and dataspace
operationId: deleteListOrListElement
parameters:
- - description: dataspace-name
- in: path
- name: dataspace-name
- required: true
- schema:
- example: my-dataspace
- type: string
- - description: anchor-name
- in: path
- name: anchor-name
- required: true
- schema:
- example: my-anchor
- type: string
- - description: "For more details on xpath, please refer https://docs.onap.org/projects/onap-cps/en/latest/xpath.html"
- examples:
- container xpath:
- value: /shops/bookstore
- list attributes xpath:
- value: "/shops/bookstore/categories[@code=1]"
- in: query
- name: xpath
- required: true
- schema:
- type: string
- - description: observed-timestamp
- in: query
- name: observed-timestamp
- required: false
- schema:
- example: 2021-03-21T00:10:34.030-0100
- type: string
+ - description: dataspace-name
+ in: path
+ name: dataspace-name
+ required: true
+ schema:
+ example: my-dataspace
+ type: string
+ - description: anchor-name
+ in: path
+ name: anchor-name
+ required: true
+ schema:
+ example: my-anchor
+ type: string
+ - description: "For more details on xpath, please refer https://docs.onap.org/projects/onap-cps/en/latest/xpath.html"
+ examples:
+ container xpath:
+ value: /shops/bookstore
+ list attributes xpath:
+ value: "/shops/bookstore/categories[@code=1]"
+ in: query
+ name: xpath
+ required: true
+ schema:
+ type: string
+ - description: observed-timestamp
+ in: query
+ name: observed-timestamp
+ required: false
+ schema:
+ example: 2021-03-21T00:10:34.030-0100
+ type: string
responses:
"204":
content: {}
@@ -1726,61 +1726,61 @@
description: Internal Server Error
summary: Delete one or all list element(s)
tags:
- - cps-data
+ - cps-data
/{apiVersion}/dataspaces/{dataspace-name}/anchors/{anchor-name}/list-nodes:
post:
description: Add list element(s) to a list for a given anchor and dataspace
operationId: addListElements
parameters:
- - description: apiVersion
- in: path
- name: apiVersion
- required: true
- schema:
- default: v2
- enum:
- - v1
- - v2
- type: string
- - description: dataspace-name
- in: path
- name: dataspace-name
- required: true
- schema:
- example: my-dataspace
- type: string
- - description: anchor-name
- in: path
- name: anchor-name
- required: true
- schema:
- example: my-anchor
- type: string
- - description: "For more details on xpath, please refer https://docs.onap.org/projects/onap-cps/en/latest/xpath.html"
- examples:
- container xpath:
- value: /shops/bookstore
- list attributes xpath:
- value: "/shops/bookstore/categories[@code=1]"
- in: query
- name: xpath
- required: true
- schema:
- type: string
- - description: observed-timestamp
- in: query
- name: observed-timestamp
- required: false
- schema:
- example: 2021-03-21T00:10:34.030-0100
- type: string
- - description: Content type in header
- in: header
- name: Content-Type
- required: true
- schema:
- example: application/json
- type: string
+ - description: apiVersion
+ in: path
+ name: apiVersion
+ required: true
+ schema:
+ default: v2
+ enum:
+ - v1
+ - v2
+ type: string
+ - description: dataspace-name
+ in: path
+ name: dataspace-name
+ required: true
+ schema:
+ example: my-dataspace
+ type: string
+ - description: anchor-name
+ in: path
+ name: anchor-name
+ required: true
+ schema:
+ example: my-anchor
+ type: string
+ - description: "For more details on xpath, please refer https://docs.onap.org/projects/onap-cps/en/latest/xpath.html"
+ examples:
+ container xpath:
+ value: /shops/bookstore
+ list attributes xpath:
+ value: "/shops/bookstore/categories[@code=1]"
+ in: query
+ name: xpath
+ required: true
+ schema:
+ type: string
+ - description: observed-timestamp
+ in: query
+ name: observed-timestamp
+ required: false
+ schema:
+ example: 2021-03-21T00:10:34.030-0100
+ type: string
+ - description: Content type in header
+ in: header
+ name: Content-Type
+ required: true
+ schema:
+ example: application/json
+ type: string
requestBody:
content:
application/json:
@@ -1840,53 +1840,53 @@
description: Internal Server Error
summary: Add list element(s)
tags:
- - cps-data
+ - cps-data
put:
description: "Replace list content under a given parent, anchor and dataspace"
operationId: replaceListContent
parameters:
- - description: apiVersion
- in: path
- name: apiVersion
- required: true
- schema:
- default: v2
- enum:
- - v1
- - v2
- type: string
- - description: dataspace-name
- in: path
- name: dataspace-name
- required: true
- schema:
- example: my-dataspace
- type: string
- - description: anchor-name
- in: path
- name: anchor-name
- required: true
- schema:
- example: my-anchor
- type: string
- - description: "For more details on xpath, please refer https://docs.onap.org/projects/onap-cps/en/latest/xpath.html"
- examples:
- container xpath:
- value: /shops/bookstore
- list attributes xpath:
- value: "/shops/bookstore/categories[@code=1]"
- in: query
- name: xpath
- required: true
- schema:
- type: string
- - description: observed-timestamp
- in: query
- name: observed-timestamp
- required: false
- schema:
- example: 2021-03-21T00:10:34.030-0100
- type: string
+ - description: apiVersion
+ in: path
+ name: apiVersion
+ required: true
+ schema:
+ default: v2
+ enum:
+ - v1
+ - v2
+ type: string
+ - description: dataspace-name
+ in: path
+ name: dataspace-name
+ required: true
+ schema:
+ example: my-dataspace
+ type: string
+ - description: anchor-name
+ in: path
+ name: anchor-name
+ required: true
+ schema:
+ example: my-anchor
+ type: string
+ - description: "For more details on xpath, please refer https://docs.onap.org/projects/onap-cps/en/latest/xpath.html"
+ examples:
+ container xpath:
+ value: /shops/bookstore
+ list attributes xpath:
+ value: "/shops/bookstore/categories[@code=1]"
+ in: query
+ name: xpath
+ required: true
+ schema:
+ type: string
+ - description: observed-timestamp
+ in: query
+ name: observed-timestamp
+ required: false
+ schema:
+ example: 2021-03-21T00:10:34.030-0100
+ type: string
requestBody:
content:
application/json:
@@ -1939,55 +1939,55 @@
description: Internal Server Error
summary: Replace list content
tags:
- - cps-data
+ - cps-data
/v2/dataspaces/{dataspace-name}/anchors/{source-anchor-name}/delta:
get:
description: Get delta between two anchors within a given dataspace
operationId: getDeltaByDataspaceAndAnchors
parameters:
- - description: dataspace-name
- in: path
- name: dataspace-name
- required: true
- schema:
- example: my-dataspace
- type: string
- - description: source-anchor-name
- in: path
- name: source-anchor-name
- required: true
- schema:
- example: my-anchor
- type: string
- - description: target-anchor-name
- in: query
- name: target-anchor-name
- required: true
- schema:
- example: my-anchor
- type: string
- - description: "For more details on xpath, please refer https://docs.onap.org/projects/onap-cps/en/latest/xpath.html"
- examples:
- container xpath:
- value: /shops/bookstore
- list attributes xpath:
- value: "/shops/bookstore/categories[@code=1]"
- in: query
- name: xpath
- required: false
- schema:
- default: /
- type: string
- - description: "Number of descendants to query. Allowed values are 'none', 'all',\
+ - description: dataspace-name
+ in: path
+ name: dataspace-name
+ required: true
+ schema:
+ example: my-dataspace
+ type: string
+ - description: source-anchor-name
+ in: path
+ name: source-anchor-name
+ required: true
+ schema:
+ example: my-anchor
+ type: string
+ - description: target-anchor-name
+ in: query
+ name: target-anchor-name
+ required: true
+ schema:
+ example: my-anchor
+ type: string
+ - description: "For more details on xpath, please refer https://docs.onap.org/projects/onap-cps/en/latest/xpath.html"
+ examples:
+ container xpath:
+ value: /shops/bookstore
+ list attributes xpath:
+ value: "/shops/bookstore/categories[@code=1]"
+ in: query
+ name: xpath
+ required: false
+ schema:
+ default: /
+ type: string
+ - description: "Number of descendants to query. Allowed values are 'none', 'all',\
\ 'direct', 1 (for direct), -1 (for all), 0 (for none) and any positive\
\ number."
- in: query
- name: descendants
- required: false
- schema:
- default: none
- example: "3"
- type: string
+ in: query
+ name: descendants
+ required: false
+ schema:
+ default: none
+ example: "3"
+ type: string
responses:
"200":
content:
@@ -2031,38 +2031,38 @@
description: Internal Server Error
summary: Get delta between anchors in the same dataspace
tags:
- - cps-data
+ - cps-data
x-codegen-request-body-name: xpath
post:
description: Get delta between an anchor in a dataspace and JSON payload
operationId: getDeltaByDataspaceAnchorAndPayload
parameters:
- - description: dataspace-name
- in: path
- name: dataspace-name
- required: true
- schema:
- example: my-dataspace
- type: string
- - description: source-anchor-name
- in: path
- name: source-anchor-name
- required: true
- schema:
- example: my-anchor
- type: string
- - description: "For more details on xpath, please refer https://docs.onap.org/projects/onap-cps/en/latest/xpath.html"
- examples:
- container xpath:
- value: /shops/bookstore
- list attributes xpath:
- value: "/shops/bookstore/categories[@code=1]"
- in: query
- name: xpath
- required: false
- schema:
- default: /
- type: string
+ - description: dataspace-name
+ in: path
+ name: dataspace-name
+ required: true
+ schema:
+ example: my-dataspace
+ type: string
+ - description: source-anchor-name
+ in: path
+ name: source-anchor-name
+ required: true
+ schema:
+ example: my-anchor
+ type: string
+ - description: "For more details on xpath, please refer https://docs.onap.org/projects/onap-cps/en/latest/xpath.html"
+ examples:
+ container xpath:
+ value: /shops/bookstore
+ list attributes xpath:
+ value: "/shops/bookstore/categories[@code=1]"
+ in: query
+ name: xpath
+ required: false
+ schema:
+ default: /
+ type: string
requestBody:
content:
multipart/form-data:
@@ -2121,47 +2121,47 @@
description: Internal Server Error
summary: Get delta between an anchor and JSON payload
tags:
- - cps-data
+ - cps-data
/v1/dataspaces/{dataspace-name}/anchors/{anchor-name}/nodes/query:
get:
deprecated: true
description: Query data nodes for the given dataspace and anchor using CPS path
operationId: getNodesByDataspaceAndAnchorAndCpsPath
parameters:
- - description: dataspace-name
- in: path
- name: dataspace-name
- required: true
- schema:
- example: my-dataspace
- type: string
- - description: anchor-name
- in: path
- name: anchor-name
- required: true
- schema:
- example: my-anchor
- type: string
- - description: "For more details on cps path, please refer https://docs.onap.org/projects/onap-cps/en/latest/cps-path.html"
- examples:
- container cps path:
- value: //bookstore
- list attributes cps path:
- value: "//categories[@code=1]"
- in: query
- name: cps-path
- required: false
- schema:
- default: /
- type: string
- - description: include-descendants
- in: query
- name: include-descendants
- required: false
- schema:
- default: false
- example: false
- type: boolean
+ - description: dataspace-name
+ in: path
+ name: dataspace-name
+ required: true
+ schema:
+ example: my-dataspace
+ type: string
+ - description: anchor-name
+ in: path
+ name: anchor-name
+ required: true
+ schema:
+ example: my-anchor
+ type: string
+ - description: "For more details on cps path, please refer https://docs.onap.org/projects/onap-cps/en/latest/cps-path.html"
+ examples:
+ container cps path:
+ value: //bookstore
+ list attributes cps path:
+ value: "//categories[@code=1]"
+ in: query
+ name: cps-path
+ required: false
+ schema:
+ default: /
+ type: string
+ - description: include-descendants
+ in: query
+ name: include-descendants
+ required: false
+ schema:
+ default: false
+ example: false
+ type: boolean
responses:
"200":
content:
@@ -2205,49 +2205,49 @@
description: Internal Server Error
summary: Query data nodes
tags:
- - cps-query
+ - cps-query
x-codegen-request-body-name: xpath
/v2/dataspaces/{dataspace-name}/anchors/{anchor-name}/nodes/query:
get:
description: Query data nodes for the given dataspace and anchor using CPS path
operationId: getNodesByDataspaceAndAnchorAndCpsPathV2
parameters:
- - description: dataspace-name
- in: path
- name: dataspace-name
- required: true
- schema:
- example: my-dataspace
- type: string
- - description: anchor-name
- in: path
- name: anchor-name
- required: true
- schema:
- example: my-anchor
- type: string
- - description: "For more details on cps path, please refer https://docs.onap.org/projects/onap-cps/en/latest/cps-path.html"
- examples:
- container cps path:
- value: //bookstore
- list attributes cps path:
- value: "//categories[@code=1]"
- in: query
- name: cps-path
- required: false
- schema:
- default: /
- type: string
- - description: "Number of descendants to query. Allowed values are 'none', 'all',\
+ - description: dataspace-name
+ in: path
+ name: dataspace-name
+ required: true
+ schema:
+ example: my-dataspace
+ type: string
+ - description: anchor-name
+ in: path
+ name: anchor-name
+ required: true
+ schema:
+ example: my-anchor
+ type: string
+ - description: "For more details on cps path, please refer https://docs.onap.org/projects/onap-cps/en/latest/cps-path.html"
+ examples:
+ container cps path:
+ value: //bookstore
+ list attributes cps path:
+ value: "//categories[@code=1]"
+ in: query
+ name: cps-path
+ required: false
+ schema:
+ default: /
+ type: string
+ - description: "Number of descendants to query. Allowed values are 'none', 'all',\
\ 'direct', 1 (for direct), -1 (for all), 0 (for none) and any positive\
\ number."
- in: query
- name: descendants
- required: false
- schema:
- default: none
- example: "3"
- type: string
+ in: query
+ name: descendants
+ required: false
+ schema:
+ default: none
+ example: "3"
+ type: string
responses:
"200":
content:
@@ -2291,7 +2291,7 @@
description: Internal Server Error
summary: Query data nodes
tags:
- - cps-query
+ - cps-query
x-codegen-request-body-name: xpath
/v2/dataspaces/{dataspace-name}/nodes/query:
get:
@@ -2299,51 +2299,51 @@
path
operationId: getNodesByDataspaceAndCpsPath
parameters:
- - description: dataspace-name
- in: path
- name: dataspace-name
- required: true
- schema:
- example: my-dataspace
- type: string
- - description: "For more details on cps path, please refer https://docs.onap.org/projects/onap-cps/en/latest/cps-path.html"
- examples:
- container cps path:
- value: //bookstore
- list attributes cps path:
- value: "//categories[@code=1]"
- in: query
- name: cps-path
- required: false
- schema:
- default: /
- type: string
- - description: "Number of descendants to query. Allowed values are 'none', 'all',\
+ - description: dataspace-name
+ in: path
+ name: dataspace-name
+ required: true
+ schema:
+ example: my-dataspace
+ type: string
+ - description: "For more details on cps path, please refer https://docs.onap.org/projects/onap-cps/en/latest/cps-path.html"
+ examples:
+ container cps path:
+ value: //bookstore
+ list attributes cps path:
+ value: "//categories[@code=1]"
+ in: query
+ name: cps-path
+ required: false
+ schema:
+ default: /
+ type: string
+ - description: "Number of descendants to query. Allowed values are 'none', 'all',\
\ 'direct', 1 (for direct), -1 (for all), 0 (for none) and any positive\
\ number."
- in: query
- name: descendants
- required: false
- schema:
- default: none
- example: "3"
- type: string
- - description: page index for pagination over anchors. It must be greater then
- zero if provided.
- in: query
- name: pageIndex
- required: false
- schema:
- example: 1
- type: integer
- - description: number of records (anchors) per page. It must be greater then
- zero if provided.
- in: query
- name: pageSize
- required: false
- schema:
- example: 10
- type: integer
+ in: query
+ name: descendants
+ required: false
+ schema:
+ default: none
+ example: "3"
+ type: string
+ - description: page index for pagination over anchors. It must be greater then
+ zero if provided.
+ in: query
+ name: pageIndex
+ required: false
+ schema:
+ example: 1
+ type: integer
+ - description: number of records (anchors) per page. It must be greater then
+ zero if provided.
+ in: query
+ name: pageSize
+ required: false
+ schema:
+ example: 10
+ type: integer
responses:
"200":
content:
@@ -2387,7 +2387,7 @@
description: Internal Server Error
summary: Query data nodes across anchors
tags:
- - cps-query
+ - cps-query
x-codegen-request-body-name: xpath
components:
examples:
@@ -2396,52 +2396,52 @@
test:bookstore:
bookstore-name: Chapters
categories:
- - code: 1
- name: SciFi
- - code: 2
- name: kids
+ - code: 1
+ 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>
<code>2</code> <name>kids</name> </categories> </bookstore> </stores>
deltaReportSample:
value:
- - action: create
- xpath: "/bookstore/categories/[@code=3]"
- target-data:
- code: "3,"
- name: kidz
- - action: remove
- xpath: "/bookstore/categories/[@code=1]"
- source-data:
- code: "1,"
- name: Fiction
- - action: replace
- xpath: "/bookstore/categories/[@code=2]"
- source-data:
- name: Funny
- target-data:
- name: Comic
+ - action: create
+ xpath: "/bookstore/categories/[@code=3]"
+ target-data:
+ code: "3,"
+ name: kidz
+ - action: remove
+ xpath: "/bookstore/categories/[@code=1]"
+ source-data:
+ code: "1,"
+ name: Fiction
+ - action: replace
+ xpath: "/bookstore/categories/[@code=2]"
+ source-data:
+ name: Funny
+ target-data:
+ name: Comic
dataSampleAcrossAnchors:
value:
- - anchorName: bookstore1
- dataNode:
- test:bookstore:
- bookstore-name: Chapters
- categories:
- - code: 1
- name: SciFi
- - code: 2
- name: kids
- - anchorName: bookstore2
- dataNode:
- test:bookstore:
- bookstore-name: Chapters
- categories:
- - code: 1
- name: SciFi
- - code: 2
- name: kids
+ - anchorName: bookstore1
+ dataNode:
+ test:bookstore:
+ bookstore-name: Chapters
+ categories:
+ - code: 1
+ name: SciFi
+ - code: 2
+ name: kids
+ - anchorName: bookstore2
+ dataNode:
+ test:bookstore:
+ bookstore-name: Chapters
+ categories:
+ - code: 1
+ name: SciFi
+ - code: 2
+ name: kids
parameters:
dataspaceNameInQuery:
description: dataspace-name
@@ -2459,8 +2459,8 @@
schema:
default: v2
enum:
- - v1
- - v2
+ - v1
+ - v2
type: string
dataspaceNameInPath:
description: dataspace-name
@@ -2725,19 +2725,19 @@
format: binary
type: string
required:
- - file
+ - file
type: object
SchemaSetDetails:
example:
dataspaceName: my-dataspace
name: my-schema-set
moduleReferences:
- - name: my-module-reference-name
- namespace: my-module-reference-namespace
- revision: my-module-reference-revision
- - name: my-module-reference-name
- namespace: my-module-reference-namespace
- revision: my-module-reference-revision
+ - name: my-module-reference-name
+ namespace: my-module-reference-namespace
+ revision: my-module-reference-revision
+ - name: my-module-reference-name
+ namespace: my-module-reference-namespace
+ revision: my-module-reference-revision
properties:
dataspaceName:
example: my-dataspace
@@ -2750,7 +2750,7 @@
example: my-schema-set
type: string
required:
- - moduleReferences
+ - moduleReferences
title: Schema set details by dataspace and schemasetName
type: object
ModuleReferences:
@@ -2777,16 +2777,16 @@
test:bookstore:
bookstore-name: Chapters
categories:
- - code: 1
- name: SciFi
- - code: 2
- name: kids
+ - code: 1
+ name: SciFi
+ - code: 2
+ name: kids
type: object
file:
format: binary
type: string
required:
- - json
+ - json
type: object
securitySchemes:
basicAuth:
diff --git a/docs/api/swagger/ncmp/openapi.yaml b/docs/api/swagger/ncmp/openapi.yaml
index a227add..871090f 100644
--- a/docs/api/swagger/ncmp/openapi.yaml
+++ b/docs/api/swagger/ncmp/openapi.yaml
@@ -20,13 +20,14 @@
schema:
example: ncmp-datastore:running
type: string
- - description: "The identifier for a network function, network element, subnetwork\
- \ or any other cm object by managed Network CM Proxy"
+ - description: "The identifier (cmHandle or alternate) for a network function,\
+ \ network element, subnetwork or any other cm object by managed Network\
+ \ CM Proxy"
in: path
name: cm-handle
required: true
schema:
- example: my-cm-handle
+ example: my-cm-handle-reference
type: string
- description: The format of resource identifier depend on the associated DMI
Plugin implementation. For ONAP DMI Plugin it will be RESTConf paths but
@@ -130,13 +131,14 @@
schema:
example: ncmp-datastore:running
type: string
- - description: "The identifier for a network function, network element, subnetwork\
- \ or any other cm object by managed Network CM Proxy"
+ - description: "The identifier (cmHandle or alternate) for a network function,\
+ \ network element, subnetwork or any other cm object by managed Network\
+ \ CM Proxy"
in: path
name: cm-handle
required: true
schema:
- example: my-cm-handle
+ example: my-cm-handle-reference
type: string
- description: The format of resource identifier depend on the associated DMI
Plugin implementation. For ONAP DMI Plugin it will be RESTConf paths but
@@ -264,13 +266,14 @@
schema:
example: ncmp-datastore:running
type: string
- - description: "The identifier for a network function, network element, subnetwork\
- \ or any other cm object by managed Network CM Proxy"
+ - description: "The identifier (cmHandle or alternate) for a network function,\
+ \ network element, subnetwork or any other cm object by managed Network\
+ \ CM Proxy"
in: path
name: cm-handle
required: true
schema:
- example: my-cm-handle
+ example: my-cm-handle-reference
type: string
- description: The format of resource identifier depend on the associated DMI
Plugin implementation. For ONAP DMI Plugin it will be RESTConf paths but
@@ -377,13 +380,14 @@
schema:
example: ncmp-datastore:running
type: string
- - description: "The identifier for a network function, network element, subnetwork\
- \ or any other cm object by managed Network CM Proxy"
+ - description: "The identifier (cmHandle or alternate) for a network function,\
+ \ network element, subnetwork or any other cm object by managed Network\
+ \ CM Proxy"
in: path
name: cm-handle
required: true
schema:
- example: my-cm-handle
+ example: my-cm-handle-reference
type: string
- description: The format of resource identifier depend on the associated DMI
Plugin implementation. For ONAP DMI Plugin it will be RESTConf paths but
@@ -495,13 +499,14 @@
schema:
example: ncmp-datastore:running
type: string
- - description: "The identifier for a network function, network element, subnetwork\
- \ or any other cm object by managed Network CM Proxy"
+ - description: "The identifier (cmHandle or alternate) for a network function,\
+ \ network element, subnetwork or any other cm object by managed Network\
+ \ CM Proxy"
in: path
name: cm-handle
required: true
schema:
- example: my-cm-handle
+ example: my-cm-handle-reference
type: string
- description: The format of resource identifier depend on the associated DMI
Plugin implementation. For ONAP DMI Plugin it will be RESTConf paths but
@@ -824,13 +829,14 @@
handle
operationId: getModuleReferencesByCmHandle
parameters:
- - description: "The identifier for a network function, network element, subnetwork\
- \ or any other cm object by managed Network CM Proxy"
+ - description: "The identifier (cmHandle or alternate) for a network function,\
+ \ network element, subnetwork or any other cm object by managed Network\
+ \ CM Proxy"
in: path
name: cm-handle
required: true
schema:
- example: my-cm-handle
+ example: my-cm-handle-reference
type: string
responses:
"200":
@@ -880,13 +886,14 @@
\ with options to filter on module name and revision"
operationId: getModuleDefinitions
parameters:
- - description: "The identifier for a network function, network element, subnetwork\
- \ or any other cm object by managed Network CM Proxy"
+ - description: "The identifier (cmHandle or alternate) for a network function,\
+ \ network element, subnetwork or any other cm object by managed Network\
+ \ CM Proxy"
in: path
name: cm-handle
required: true
schema:
- example: my-cm-handle
+ example: my-cm-handle-reference
type: string
- description: Filter for a module name.This is an optional parameter
in: query
@@ -1017,13 +1024,14 @@
description: Retrieve CM handle details and properties by cm handle id
operationId: retrieveCmHandleDetailsById
parameters:
- - description: "The identifier for a network function, network element, subnetwork\
- \ or any other cm object by managed Network CM Proxy"
+ - description: "The identifier (cmHandle or alternate) for a network function,\
+ \ network element, subnetwork or any other cm object by managed Network\
+ \ CM Proxy"
in: path
name: cm-handle
required: true
schema:
- example: my-cm-handle
+ example: my-cm-handle-reference
type: string
responses:
"200":
@@ -1070,13 +1078,14 @@
description: Get CM handle properties by cm handle id
operationId: getCmHandlePublicPropertiesByCmHandleId
parameters:
- - description: "The identifier for a network function, network element, subnetwork\
- \ or any other cm object by managed Network CM Proxy"
+ - description: "The identifier (cmHandle or alternate) for a network function,\
+ \ network element, subnetwork or any other cm object by managed Network\
+ \ CM Proxy"
in: path
name: cm-handle
required: true
schema:
- example: my-cm-handle
+ example: my-cm-handle-reference
type: string
responses:
"200":
@@ -1210,13 +1219,14 @@
description: Get CM handle state by cm handle id
operationId: getCmHandleStateByCmHandleId
parameters:
- - description: "The identifier for a network function, network element, subnetwork\
- \ or any other cm object by managed Network CM Proxy"
+ - description: "The identifier (cmHandle or alternate) for a network function,\
+ \ network element, subnetwork or any other cm object by managed Network\
+ \ CM Proxy"
in: path
name: cm-handle
required: true
schema:
- example: my-cm-handle
+ example: my-cm-handle-reference
type: string
responses:
"200":
@@ -1464,14 +1474,15 @@
schema:
example: ncmp-datastore:running
type: string
- cmHandleInPath:
- description: "The identifier for a network function, network element, subnetwork\
- \ or any other cm object by managed Network CM Proxy"
+ cmHandleReferenceInPath:
+ description: "The identifier (cmHandle or alternate) for a network function,\
+ \ network element, subnetwork or any other cm object by managed Network CM\
+ \ Proxy"
in: path
name: cm-handle
required: true
schema:
- example: my-cm-handle
+ example: my-cm-handle-reference
type: string
resourceIdentifierInQuery:
description: The format of resource identifier depend on the associated DMI
@@ -1558,6 +1569,15 @@
required: true
schema:
type: string
+ cmHandleInPath:
+ description: "The identifier for a network function, network element, subnetwork\
+ \ or any other cm object by managed Network CM Proxy"
+ in: path
+ name: cm-handle
+ required: true
+ schema:
+ example: my-cm-handle
+ type: string
cpsPathInQuery:
description: "For more details on cps path, please refer https://docs.onap.org/projects/onap-cps/en/latest/cps-path.html"
examples:
diff --git a/docs/api/swagger/policy-executor/openapi.yaml b/docs/api/swagger/policy-executor/openapi.yaml
index 6b73d98..1248c0d 100644
--- a/docs/api/swagger/policy-executor/openapi.yaml
+++ b/docs/api/swagger/policy-executor/openapi.yaml
@@ -18,55 +18,170 @@
openapi: 3.0.3
info:
+ description: Allows NCMP to execute a policy defined by a third party implementation
+ before proceeding with a CM operation
title: Policy Executor
- description: "Allows NCMP to execute a policy defined by a third party implementation before proceeding with a CM operation"
version: 1.0.0
+servers:
+- url: /
+security:
+- bearerAuth: []
tags:
- - name: policy-executor
- description: "Execute all your policies"
+- description: Execute all your policies
+ name: policy-executor
paths:
/policy-executor/api/v1/{action}:
post:
- description: "Fire a Policy action"
+ description: Fire a Policy action
operationId: executePolicyAction
parameters:
- - $ref: '#/components/parameters/authorizationInHeader'
- - $ref: '#/components/parameters/actionInPath'
- requestBody:
+ - description: Bearer token may be used to identify client as part of a policy
+ explode: false
+ in: header
+ name: Authorization
+ required: false
+ schema:
+ type: string
+ style: simple
+ - description: "The policy action. Currently supported options: 'execute'"
+ explode: false
+ in: path
+ name: action
required: true
- description: "The action request body"
+ schema:
+ example: execute
+ type: string
+ style: simple
+ requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/PolicyExecutionRequest'
- tags:
- - policy-executor
+ description: The action request body
+ required: true
responses:
- '200':
- description: "Successful policy execution"
+ "200":
content:
application/json:
schema:
$ref: '#/components/schemas/PolicyExecutionResponse'
- '400':
- $ref: '#/components/responses/BadRequest'
- '401':
- $ref: '#/components/responses/Unauthorized'
- '403':
- $ref: '#/components/responses/Forbidden'
- '500':
- $ref: '#/components/responses/InternalServerError'
-
+ description: Successful policy execution
+ "400":
+ content:
+ application/json:
+ example:
+ status: 400
+ message: Bad Request
+ details: The provided request is not valid
+ schema:
+ $ref: '#/components/schemas/ErrorMessage'
+ description: Bad request
+ "401":
+ content:
+ application/json:
+ example:
+ status: 401
+ message: Unauthorized request
+ details: This request is unauthorized
+ schema:
+ $ref: '#/components/schemas/ErrorMessage'
+ description: Unauthorized request
+ "403":
+ content:
+ application/json:
+ example:
+ status: 403
+ message: Request Forbidden
+ details: This request is forbidden
+ schema:
+ $ref: '#/components/schemas/ErrorMessage'
+ description: Request forbidden
+ "500":
+ content:
+ application/json:
+ example:
+ status: 500
+ message: Internal Server Error
+ details: Internal server error occurred
+ schema:
+ $ref: '#/components/schemas/ErrorMessage'
+ description: Internal server error
+ tags:
+ - policy-executor
components:
- securitySchemes:
- bearerAuth:
- type: http
- description: "Bearer token (from client that called CPS-NCMP),used by policies to identify the client"
- scheme: bearer
+ parameters:
+ actionInPath:
+ description: "The policy action. Currently supported options: 'execute'"
+ explode: false
+ in: path
+ name: action
+ required: true
+ schema:
+ example: execute
+ type: string
+ style: simple
+ authorizationInHeader:
+ description: Bearer token may be used to identify client as part of a policy
+ explode: false
+ in: header
+ name: Authorization
+ required: false
+ schema:
+ type: string
+ style: simple
+ responses:
+ BadRequest:
+ content:
+ application/json:
+ example:
+ status: 400
+ message: Bad Request
+ details: The provided request is not valid
+ schema:
+ $ref: '#/components/schemas/ErrorMessage'
+ description: Bad request
+ Unauthorized:
+ content:
+ application/json:
+ example:
+ status: 401
+ message: Unauthorized request
+ details: This request is unauthorized
+ schema:
+ $ref: '#/components/schemas/ErrorMessage'
+ description: Unauthorized request
+ Forbidden:
+ content:
+ application/json:
+ example:
+ status: 403
+ message: Request Forbidden
+ details: This request is forbidden
+ schema:
+ $ref: '#/components/schemas/ErrorMessage'
+ description: Request forbidden
+ InternalServerError:
+ content:
+ application/json:
+ example:
+ status: 500
+ message: Internal Server Error
+ details: Internal server error occurred
+ schema:
+ $ref: '#/components/schemas/ErrorMessage'
+ description: Internal server error
+ NotImplemented:
+ content:
+ application/json:
+ example:
+ status: 501
+ message: Not Implemented
+ details: Method not implemented
+ schema:
+ $ref: '#/components/schemas/ErrorMessage'
+ description: Method not (yet) implemented
schemas:
ErrorMessage:
- type: object
- title: Error
properties:
status:
type: string
@@ -74,125 +189,73 @@
type: string
details:
type: string
-
- Request:
+ title: Error
type: object
+ Request:
+ example:
+ schema: org.onap.cps.ncmp.policy-executor:ncmp-create-schema:1.0.0
+ data: "{}"
properties:
schema:
+ description: The schema for the data in this request. The schema name should
+ include the type of operation
+ example: org.onap.cps.ncmp.policy-executor:ncmp-create-schema:1.0.0
type: string
- description: "The schema for the data in this request. The schema name should include the type of operation"
- example: "org.onap.cps.ncmp.policy-executor:ncmp-create-schema:1.0.0"
data:
+ description: The data related to the request. The format of the object is
+ determined by the schema
type: object
- description: "The data related to the request. The format of the object is determined by the schema"
required:
- - schema
- - data
-
- PolicyExecutionRequest:
+ - data
+ - schema
type: object
+ PolicyExecutionRequest:
+ example:
+ decisionType: allow
+ requests:
+ - schema: org.onap.cps.ncmp.policy-executor:ncmp-create-schema:1.0.0
+ data: "{}"
+ - schema: org.onap.cps.ncmp.policy-executor:ncmp-create-schema:1.0.0
+ data: "{}"
properties:
decisionType:
- type: string
description: "The type of decision. Currently supported options: 'allow'"
- example: "allow"
+ example: allow
+ type: string
requests:
- type: array
items:
$ref: '#/components/schemas/Request'
+ type: array
required:
- - decisionType
- - requests
-
- PolicyExecutionResponse:
+ - decisionType
+ - requests
type: object
+ PolicyExecutionResponse:
+ example:
+ decision: deny
+ decisionId: 550e8400-e29b-41d4-a716-446655440000
+ message: Object locked due to recent change
properties:
decisionId:
+ description: Unique ID for the decision (for auditing purposes)
+ example: 550e8400-e29b-41d4-a716-446655440000
type: string
- description: "Unique ID for the decision (for auditing purposes)"
- example: "550e8400-e29b-41d4-a716-446655440000"
decision:
- type: string
description: "The decision outcome. Currently supported values: 'allow','deny'"
- example: "deny"
- message:
+ example: deny
type: string
- description: "Additional information regarding the decision outcome"
- example: "Object locked due to recent change"
+ message:
+ description: Additional information regarding the decision outcome
+ example: Object locked due to recent change
+ type: string
required:
- - decisionId
- - decision
- - message
-
- responses:
- BadRequest:
- description: "Bad request"
- content:
- application/json:
- schema:
- $ref: '#/components/schemas/ErrorMessage'
- example:
- status: 400
- message: "Bad Request"
- details: "The provided request is not valid"
- Unauthorized:
- description: "Unauthorized request"
- content:
- application/json:
- schema:
- $ref: '#/components/schemas/ErrorMessage'
- example:
- status: 401
- message: "Unauthorized request"
- details: "This request is unauthorized"
- Forbidden:
- description: "Request forbidden"
- content:
- application/json:
- schema:
- $ref: '#/components/schemas/ErrorMessage'
- example:
- status: 403
- message: "Request Forbidden"
- details: "This request is forbidden"
-
- InternalServerError:
- description: "Internal server error"
- content:
- application/json:
- schema:
- $ref: '#/components/schemas/ErrorMessage'
- example:
- status: 500
- message: "Internal Server Error"
- details: "Internal server error occurred"
-
- NotImplemented:
- description: "Method not (yet) implemented"
- content:
- application/json:
- schema:
- $ref: '#/components/schemas/ErrorMessage'
- example:
- status: 501
- message: "Not Implemented"
- details: "Method not implemented"
-
- parameters:
- actionInPath:
- name: action
- in: path
- description: "The policy action. Currently supported options: 'execute'"
- required: true
- schema:
- type: string
- example: "execute"
- authorizationInHeader:
- name: Authorization
- in: header
- description: "Bearer token may be used to identify client as part of a policy"
- schema:
- type: string
-
-security:
- - bearerAuth: []
+ - decision
+ - decisionId
+ - message
+ type: object
+ securitySchemes:
+ bearerAuth:
+ description: "Bearer token (from client that called CPS-NCMP),used by policies\
+ \ to identify the client"
+ scheme: bearer
+ type: http
diff --git a/docs/release-notes.rst b/docs/release-notes.rst
index 7340e7a..cebb1c0 100644
--- a/docs/release-notes.rst
+++ b/docs/release-notes.rst
@@ -16,6 +16,34 @@
.. * * * OSLO * * *
.. ====================
+Version: 3.5.4
+==============
+
+Release Data
+------------
+
++--------------------------------------+--------------------------------------------------------+
+| **CPS Project** | |
+| | |
++--------------------------------------+--------------------------------------------------------+
+| **Docker images** | onap/cps-and-ncmp:3.5.4 |
+| | |
++--------------------------------------+--------------------------------------------------------+
+| **Release designation** | 3.5.4 Oslo |
+| | |
++--------------------------------------+--------------------------------------------------------+
+| **Release date** | Not yet released |
+| | |
++--------------------------------------+--------------------------------------------------------+
+
+Bug Fixes
+---------
+3.5.4
+
+Features
+--------
+3.5.4
+
Version: 3.5.3
==============
@@ -32,17 +60,25 @@
| **Release designation** | 3.5.3 Oslo |
| | |
+--------------------------------------+--------------------------------------------------------+
-| **Release date** | Not yet released |
+| **Release date** | 2024 October 04 |
| | |
+--------------------------------------+--------------------------------------------------------+
Bug Fixes
---------
3.5.3
+ - `CPS-2353 <https://lf-onap.atlassian.net/browse/CPS-2353>`_ Slow cmHandle registration when we use moduleSetTag, alternateId and dataProducerIdentifier
+ - `CPS-2395 <https://lf-onap.atlassian.net/browse/CPS-2395>`_ Retry mechanism (with back off algorithm) is removed with more frequent watchdog poll
+ - `CPS-2409 <https://lf-onap.atlassian.net/browse/CPS-2409>`_ Return NONE for get effective trust level api if the trust level caches empty (restart case)
+ - `CPS-2430 <https://lf-onap.atlassian.net/browse/CPS-2430>`_ Fix memory leak related to using arrays in Hibernate
+
Features
--------
3.5.3
+ - `CPS-2247 <https://lf-onap.atlassian.net/browse/CPS-2247>`_ Policy Executor: Invoke Policy Executor and handle 'deny' response
+ - `CPS-2412 <https://lf-onap.atlassian.net/browse/CPS-2412>`_ Policy Executor: handle errors
+ - `CPS-2417 <https://lf-onap.atlassian.net/browse/CPS-2417>`_ Remove Hazelcast cache for prefix resolver
Version: 3.5.2
diff --git a/integration-test/pom.xml b/integration-test/pom.xml
index ef8fdc8..b26ec5b 100644
--- a/integration-test/pom.xml
+++ b/integration-test/pom.xml
@@ -23,7 +23,7 @@
<parent>
<groupId>org.onap.cps</groupId>
<artifactId>cps-parent</artifactId>
- <version>3.5.3-SNAPSHOT</version>
+ <version>3.5.4-SNAPSHOT</version>
<relativePath>../cps-parent/pom.xml</relativePath>
</parent>
<modelVersion>4.0.0</modelVersion>
diff --git a/jacoco-report/pom.xml b/jacoco-report/pom.xml
index 503500f..298a0e7 100644
--- a/jacoco-report/pom.xml
+++ b/jacoco-report/pom.xml
@@ -5,7 +5,7 @@
<parent>
<groupId>org.onap.cps</groupId>
<artifactId>cps-parent</artifactId>
- <version>3.5.3-SNAPSHOT</version>
+ <version>3.5.4-SNAPSHOT</version>
<relativePath>../cps-parent/pom.xml</relativePath>
</parent>
<modelVersion>4.0.0</modelVersion>
diff --git a/policy-executor-stub/pom.xml b/policy-executor-stub/pom.xml
index 35ff835..420f565 100644
--- a/policy-executor-stub/pom.xml
+++ b/policy-executor-stub/pom.xml
@@ -6,7 +6,7 @@
<parent>
<groupId>org.onap.cps</groupId>
<artifactId>cps-parent</artifactId>
- <version>3.5.3-SNAPSHOT</version>
+ <version>3.5.4-SNAPSHOT</version>
<relativePath>../cps-parent/pom.xml</relativePath>
</parent>
diff --git a/pom.xml b/pom.xml
index 8347b1f..8796d53 100644
--- a/pom.xml
+++ b/pom.xml
@@ -32,7 +32,7 @@
<groupId>org.onap.cps</groupId>
<artifactId>cps-aggregator</artifactId>
- <version>3.5.3-SNAPSHOT</version>
+ <version>3.5.4-SNAPSHOT</version>
<packaging>pom</packaging>
<name>cps</name>
diff --git a/releases/3.5.3-container.yaml b/releases/3.5.3-container.yaml
new file mode 100644
index 0000000..de99979
--- /dev/null
+++ b/releases/3.5.3-container.yaml
@@ -0,0 +1,8 @@
+distribution_type: container
+container_release_tag: 3.5.3
+project: cps
+log_dir: cps-maven-docker-stage-master/946/
+ref: ef70022bddcb18a17c4afe2332cafa78621ab8b5
+containers:
+ - name: 'cps-and-ncmp'
+ version: '3.5.3-20241004T144917Z'
diff --git a/releases/3.5.3.yaml b/releases/3.5.3.yaml
new file mode 100644
index 0000000..db6944c
--- /dev/null
+++ b/releases/3.5.3.yaml
@@ -0,0 +1,4 @@
+distribution_type: maven
+log_dir: cps-maven-stage-master/954/
+project: cps
+version: 3.5.3
diff --git a/spotbugs/pom.xml b/spotbugs/pom.xml
index 1433bd3..aaa3d95 100644
--- a/spotbugs/pom.xml
+++ b/spotbugs/pom.xml
@@ -25,7 +25,7 @@
<modelVersion>4.0.0</modelVersion>
<groupId>org.onap.cps</groupId>
<artifactId>spotbugs</artifactId>
- <version>3.5.3-SNAPSHOT</version>
+ <version>3.5.4-SNAPSHOT</version>
<properties>
<nexusproxy>https://nexus.onap.org</nexusproxy>
diff --git a/version.properties b/version.properties
index 5b93875..fa9fe7b 100644
--- a/version.properties
+++ b/version.properties
@@ -22,7 +22,7 @@
major=3
minor=5
-patch=3
+patch=4
base_version=${major}.${minor}.${patch}