diff options
author | JosephKeenan <joseph.keenan@est.tech> | 2021-06-23 14:15:52 +0100 |
---|---|---|
committer | JosephKeenan <joseph.keenan@est.tech> | 2021-07-16 14:58:31 +0100 |
commit | 2472e61ecf2f5ebf9c5e3ddcf9c2b66ab0d4219e (patch) | |
tree | ed7c5017a0ef4104dece1cc562f42063b419d815 /cps-rest/src/main | |
parent | b81d0407c3f3356057bd1a8d66aadc42270becfe (diff) |
CPS-401 Update Open API YAML with data types and example for output (cpsData)
-added response for get data nodes based on dataspace and anchor
-modified modelmapper jn DataRestControllerSpec to be Spy not Mock
-when openapi.yaml is entered into https://editor.swagger.io/ it
displays however locally it does not, This may be due to file
segmentation but this is still unclear.
-moved files from docs/openapi to src/main/resources/static as required
for new swagger sprindoc
Issue-ID: CPS-401
Change-Id: I45286530d9a9ca85b56c0a656a44675398a003f4
Signed-off-by: JosephKeenan <joseph.keenan@est.tech>
Diffstat (limited to 'cps-rest/src/main')
-rw-r--r-- | cps-rest/src/main/resources/static/components.yml | 208 | ||||
-rw-r--r-- | cps-rest/src/main/resources/static/cpsAdmin.yml | 222 | ||||
-rw-r--r-- | cps-rest/src/main/resources/static/cpsData.yml | 200 | ||||
-rw-r--r-- | cps-rest/src/main/resources/static/cpsQuery.yml | 42 | ||||
-rw-r--r-- | cps-rest/src/main/resources/static/openapi.yml | 77 |
5 files changed, 749 insertions, 0 deletions
diff --git a/cps-rest/src/main/resources/static/components.yml b/cps-rest/src/main/resources/static/components.yml new file mode 100644 index 0000000000..51a49a6e9f --- /dev/null +++ b/cps-rest/src/main/resources/static/components.yml @@ -0,0 +1,208 @@ +# ============LICENSE_START======================================================= +# Copyright (c) 2021 Bell Canada. +# ================================================================================ +# 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. +# ============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 + + ErrorMessage: + type: object + title: Error + properties: + status: + type: string + example: 400 + message: + type: string + example: Dataspace not found + details: + type: string + example: Dataspace with name D1 does not exist. + + MultipartFile: + required: + - file + properties: + multipartFile: + type: string + description: multipartFile + format: binary + example: http://example.com/examples/example.yang + + ModuleReferences: + type: object + title: Module reference object + properties: + name: + type: string + example: module_reference_name + namespace: + type: string + example: module_reference_namespace + revision: + type: string + example: module_reference_revision + + SchemaSetDetails: + type: object + title: Schema set details by dataspace and schemasetName + properties: + dataspaceName: + type: string + example: my_dataspace + moduleReferences: + type: array + items: + $ref: '#/components/schemas/ModuleReferences' + name: + type: string + example: my_schema_set + + parameters: + dataspaceNameInQuery: + name: dataspace-name + in: query + description: dataspace-name + required: true + schema: + type: string + dataspaceNameInPath: + name: dataspace-name + in: path + description: dataspace-name + required: true + schema: + type: string + anchorNameInPath: + name: anchor-name + in: path + description: anchor-name + required: true + schema: + type: string + schemaSetNameInQuery: + name: schema-set-name + in: query + description: schema-set-name + required: true + schema: + type: string + schemaSetNameInPath: + name: schema-set-name + in: path + description: schema-set-name + required: true + schema: + type: string + anchorNameInQuery: + name: anchor-name + in: query + description: anchor-name + required: true + schema: + type: string + xpathInQuery: + name: xpath + in: query + description: xpath + required: false + schema: + type: string + default: / + requiredXpathInQuery: + name: xpath + in: query + description: xpath + required: true + schema: + type: string + cpsPathInQuery: + name: cps-path + in: query + description: cps-path + required: false + schema: + type: string + default: / + includeDescendantsOptionInQuery: + name: include-descendants + in: query + description: include-descendants + required: false + schema: + type: boolean + default: false + + responses: + NotFound: + description: The specified resource was not found + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorMessage' + Unauthorized: + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorMessage' + Forbidden: + description: Forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorMessage' + BadRequest: + description: Bad Request + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorMessage' + Conflict: + description: Conflict + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorMessage' + Ok: + description: OK + content: + application/json: + schema: + type: object + example: { "key": "value" } + Created: + description: Created + content: + text/plain: + schema: + type: string + NoContent: + description: No Content + content: {} diff --git a/cps-rest/src/main/resources/static/cpsAdmin.yml b/cps-rest/src/main/resources/static/cpsAdmin.yml new file mode 100644 index 0000000000..35b2e4ca6a --- /dev/null +++ b/cps-rest/src/main/resources/static/cpsAdmin.yml @@ -0,0 +1,222 @@ +# ============LICENSE_START======================================================= +# Copyright (c) 2021 Bell Canada. +# ================================================================================ +# 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. +# ============LICENSE_END========================================================= + +dataspaces: + post: + 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' + '401': + $ref: 'components.yml#/components/responses/Unauthorized' + '403': + $ref: 'components.yml#/components/responses/Forbidden' + +dataspaceByDataspaceName: + delete: + description: Delete the given dataspace - DRAFT + tags: + - cps-admin + summary: Delete a dataspace + operationId: deleteDataspace + parameters: + - $ref: 'components.yml#/components/parameters/dataspaceNameInPath' + responses: + '200': + $ref: 'components.yml#/components/responses/Ok' + '204': + $ref: 'components.yml#/components/responses/NoContent' + '400': + $ref: 'components.yml#/components/responses/BadRequest' + '401': + $ref: 'components.yml#/components/responses/Unauthorized' + '403': + $ref: 'components.yml#/components/responses/Forbidden' + + +schemaSet: + post: + 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' + '401': + $ref: 'components.yml#/components/responses/Unauthorized' + '403': + $ref: 'components.yml#/components/responses/Forbidden' + +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/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' + '401': + $ref: 'components.yml#/components/responses/Unauthorized' + '403': + $ref: 'components.yml#/components/responses/Forbidden' + '404': + $ref: 'components.yml#/components/responses/NotFound' + + 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/dataspaceNameInPath' + - $ref: 'components.yml#/components/parameters/schemaSetNameInPath' + responses: + '204': + $ref: 'components.yml#/components/responses/NoContent' + '400': + $ref: 'components.yml#/components/responses/BadRequest' + '401': + $ref: 'components.yml#/components/responses/Unauthorized' + '403': + $ref: 'components.yml#/components/responses/Forbidden' + '409': + $ref: 'components.yml#/components/responses/Conflict' + +anchorsByDataspace: + get: + description: Read all anchors, given a dataspace + tags: + - cps-admin + summary: Get anchors + operationId: getAnchors + parameters: + - $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' + '401': + $ref: 'components.yml#/components/responses/Unauthorized' + '403': + $ref: 'components.yml#/components/responses/Forbidden' + '404': + $ref: 'components.yml#/components/responses/NotFound' + + post: + 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' + '401': + $ref: 'components.yml#/components/responses/Unauthorized' + '403': + $ref: 'components.yml#/components/responses/Forbidden' + +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/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' + '401': + $ref: 'components.yml#/components/responses/Unauthorized' + '403': + $ref: 'components.yml#/components/responses/Forbidden' + '404': + $ref: 'components.yml#/components/responses/NotFound' + + 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/dataspaceNameInPath' + - $ref: 'components.yml#/components/parameters/anchorNameInPath' + responses: + '204': + $ref: 'components.yml#/components/responses/NoContent' + '400': + $ref: 'components.yml#/components/responses/BadRequest' + '401': + $ref: 'components.yml#/components/responses/Unauthorized' + '403': + $ref: 'components.yml#/components/responses/Forbidden'
\ No newline at end of file diff --git a/cps-rest/src/main/resources/static/cpsData.yml b/cps-rest/src/main/resources/static/cpsData.yml new file mode 100644 index 0000000000..7e9f71d62b --- /dev/null +++ b/cps-rest/src/main/resources/static/cpsData.yml @@ -0,0 +1,200 @@ +# ============LICENSE_START======================================================= +# Copyright (c) 2021 Bell Canada. +# ================================================================================ +# 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. +# ============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: 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 + example: { "child": my_child,"leafList": "leafListElement1, leafListElement2", "leaf": my_leaf } + '400': + $ref: 'components.yml#/components/responses/BadRequest' + '401': + $ref: 'components.yml#/components/responses/Unauthorized' + '403': + $ref: 'components.yml#/components/responses/Forbidden' + '404': + $ref: 'components.yml#/components/responses/NotFound' + x-codegen-request-body-name: xpath + +listNodeByDataspaceAndAnchor: + post: + description: Add list-node child elements to existing node for a given anchor and dataspace + tags: + - cps-data + summary: Add list-node child element(s) under existing parent node + operationId: addListNodeElements + parameters: + - $ref: 'components.yml#/components/parameters/dataspaceNameInPath' + - $ref: 'components.yml#/components/parameters/anchorNameInPath' + - $ref: 'components.yml#/components/parameters/requiredXpathInQuery' + requestBody: + required: true + content: + application/json: + schema: + type: string + responses: + '201': + $ref: 'components.yml#/components/responses/Created' + '400': + $ref: 'components.yml#/components/responses/BadRequest' + '401': + $ref: 'components.yml#/components/responses/Unauthorized' + '403': + $ref: 'components.yml#/components/responses/Forbidden' + + patch: + description: Replace list-node child elements under existing node for a given anchor and dataspace + tags: + - cps-data + summary: Replace list-node child element(s) under existing parent node + operationId: replaceListNodeElements + parameters: + - $ref: 'components.yml#/components/parameters/dataspaceNameInPath' + - $ref: 'components.yml#/components/parameters/anchorNameInPath' + - $ref: 'components.yml#/components/parameters/requiredXpathInQuery' + requestBody: + required: true + content: + application/json: + schema: + type: string + responses: + '200': + $ref: 'components.yml#/components/responses/Created' + '400': + $ref: 'components.yml#/components/responses/BadRequest' + '401': + $ref: 'components.yml#/components/responses/Unauthorized' + '403': + $ref: 'components.yml#/components/responses/Forbidden' + +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/dataspaceNameInPath' + - $ref: 'components.yml#/components/parameters/anchorNameInPath' + - $ref: 'components.yml#/components/parameters/xpathInQuery' + requestBody: + required: true + content: + application/json: + schema: + type: string + responses: + '201': + $ref: 'components.yml#/components/responses/Created' + '400': + $ref: 'components.yml#/components/responses/BadRequest' + '401': + $ref: 'components.yml#/components/responses/Unauthorized' + '403': + $ref: 'components.yml#/components/responses/Forbidden' + + patch: + description: Update a data node leaves for a given dataspace and anchor and a parent node xpath + tags: + - cps-data + summary: Update node leaves + operationId: updateNodeLeaves + parameters: + - $ref: 'components.yml#/components/parameters/dataspaceNameInPath' + - $ref: 'components.yml#/components/parameters/anchorNameInPath' + - $ref: 'components.yml#/components/parameters/xpathInQuery' + requestBody: + required: true + content: + application/json: + schema: + type: string + responses: + '200': + $ref: 'components.yml#/components/responses/Ok' + '400': + $ref: 'components.yml#/components/responses/BadRequest' + '401': + $ref: 'components.yml#/components/responses/Unauthorized' + '403': + $ref: 'components.yml#/components/responses/Forbidden' + + 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/dataspaceNameInPath' + - $ref: 'components.yml#/components/parameters/anchorNameInPath' + - $ref: 'components.yml#/components/parameters/xpathInQuery' + requestBody: + required: true + content: + application/json: + schema: + type: string + responses: + '200': + $ref: 'components.yml#/components/responses/Ok' + '400': + $ref: 'components.yml#/components/responses/BadRequest' + '401': + $ref: 'components.yml#/components/responses/Unauthorized' + '403': + $ref: 'components.yml#/components/responses/Forbidden' + + +nodesByDataspace: + get: + description: Get all nodes for a given dataspace using an xpath or schema node identifier - DRAFT + tags: + - cps-data + summary: Get nodes + operationId: getNodesByDataspace + parameters: + - $ref: 'components.yml#/components/parameters/dataspaceNameInPath' + responses: + '200': + $ref: 'components.yml#/components/responses/Ok' + '400': + $ref: 'components.yml#/components/responses/BadRequest' + '401': + $ref: 'components.yml#/components/responses/Unauthorized' + '403': + $ref: 'components.yml#/components/responses/Forbidden' + '404': + $ref: 'components.yml#/components/responses/NotFound' + x-codegen-request-body-name: requestBody diff --git a/cps-rest/src/main/resources/static/cpsQuery.yml b/cps-rest/src/main/resources/static/cpsQuery.yml new file mode 100644 index 0000000000..f45f3f41ae --- /dev/null +++ b/cps-rest/src/main/resources/static/cpsQuery.yml @@ -0,0 +1,42 @@ +# ============LICENSE_START======================================================= +# Copyright (C) 2021 Nordix Foundation +# ================================================================================ +# 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: 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': + $ref: 'components.yml#/components/responses/Ok' + '400': + $ref: 'components.yml#/components/responses/BadRequest' + '401': + $ref: 'components.yml#/components/responses/Unauthorized' + '403': + $ref: 'components.yml#/components/responses/Forbidden' + '404': + $ref: 'components.yml#/components/responses/NotFound' + x-codegen-request-body-name: xpath diff --git a/cps-rest/src/main/resources/static/openapi.yml b/cps-rest/src/main/resources/static/openapi.yml new file mode 100644 index 0000000000..8fa640cf9b --- /dev/null +++ b/cps-rest/src/main/resources/static/openapi.yml @@ -0,0 +1,77 @@ +# ============LICENSE_START======================================================= +# Copyright (C) 2021 Nordix Foundation +# Modifications Copyright (C) 2021 Pantheon.tech +# ================================================================================ +# 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.1 +info: + title: ONAP Open API v3 Configuration Persistence Service + description: Configuration Persistence Service is a Model Driven Generic Database + version: "1.0.0" + 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" + x-planned-retirement-date: "202212" + x-component: "Modeling" + x-logo: + url: "cps_logo.png" + +servers: + - url: /cps/api +tags: + - name: cps-admin + description: cps Admin + - name: cps-data + description: cps Data +paths: + + /v1/dataspaces: + $ref: 'cpsAdmin.yml#/dataspaces' + + /v1/dataspaces/{dataspace-name}: + $ref: 'cpsAdmin.yml#/dataspaceByDataspaceName' + + /v1/dataspaces/{dataspace-name}/anchors: + $ref: 'cpsAdmin.yml#/anchorsByDataspace' + + /v1/dataspaces/{dataspace-name}/anchors/{anchor-name}: + $ref: 'cpsAdmin.yml#/anchorByDataspaceAndAnchorName' + + /v1/dataspaces/{dataspace-name}/schema-sets: + $ref: 'cpsAdmin.yml#/schemaSet' + + /v1/dataspaces/{dataspace-name}/schema-sets/{schema-set-name}: + $ref: 'cpsAdmin.yml#/schemaSetBySchemaSetName' + + /v1/dataspaces/{dataspace-name}/anchors/{anchor-name}/node: + $ref: 'cpsData.yml#/nodeByDataspaceAndAnchor' + + /v1/dataspaces/{dataspace-name}/anchors/{anchor-name}/nodes: + $ref: 'cpsData.yml#/nodesByDataspaceAndAnchor' + + /v1/dataspaces/{dataspace-name}/anchors/{anchor-name}/list-node: + $ref: 'cpsData.yml#/listNodeByDataspaceAndAnchor' + + /v1/dataspaces/{dataspace-name}/nodes: + $ref: 'cpsData.yml#/nodesByDataspace' + + /v1/dataspaces/{dataspace-name}/anchors/{anchor-name}/nodes/query: + $ref: 'cpsQuery.yml#/nodesByDataspaceAndAnchorAndCpsPath' |