| # ============LICENSE_START======================================================= |
| # Copyright (C) 2021 Nordix Foundation |
| # Modifications 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. |
| # |
| # 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: '//localhost:8088' |
| tags: |
| - name: cps-admin |
| description: cps Admin |
| - name: cps-data |
| description: cps Data |
| paths: |
| /v1/dataspaces: |
| post: |
| description: Create a new dataspace |
| tags: |
| - cps-admin |
| summary: Create a dataspace |
| operationId: createDataspace |
| parameters: |
| - name: dataspace-name |
| in: query |
| description: dataspace-name |
| required: true |
| schema: |
| type: string |
| responses: |
| '201': |
| description: Created |
| content: |
| text/plain: |
| schema: |
| type: string |
| '400': |
| description: Bad Request |
| content: |
| application/json: |
| schema: |
| $ref: '#/components/schemas/ErrorMessage' |
| '401': |
| description: Unauthorized |
| content: |
| application/json: |
| schema: |
| $ref: '#/components/schemas/ErrorMessage' |
| '403': |
| description: Forbidden |
| content: |
| application/json: |
| schema: |
| $ref: '#/components/schemas/ErrorMessage' |
| '/v1/dataspaces/{dataspace-name}': |
| delete: |
| description: Delete the given dataspace - DRAFT |
| tags: |
| - cps-admin |
| summary: Delete a dataspace |
| operationId: deleteDataspace |
| parameters: |
| - name: dataspace-name |
| in: path |
| description: dataspace-name |
| required: true |
| schema: |
| type: string |
| responses: |
| '200': |
| description: OK |
| content: |
| application/json: |
| schema: |
| type: object |
| '204': |
| description: No Content |
| content: {} |
| '400': |
| description: Bad Request |
| content: |
| application/json: |
| schema: |
| $ref: '#/components/schemas/ErrorMessage' |
| '401': |
| description: Unauthorized |
| content: |
| application/json: |
| schema: |
| $ref: '#/components/schemas/ErrorMessage' |
| '403': |
| description: Forbidden |
| content: |
| application/json: |
| schema: |
| $ref: '#/components/schemas/ErrorMessage' |
| '/v1/dataspaces/{dataspace-name}/anchors': |
| get: |
| description: 'Read all anchors, given a dataspace' |
| tags: |
| - cps-admin |
| summary: Get anchors |
| operationId: getAnchors |
| parameters: |
| - name: dataspace-name |
| in: path |
| description: dataspace-name |
| required: true |
| schema: |
| type: string |
| responses: |
| '200': |
| description: OK |
| content: |
| application/json: |
| schema: |
| type: object |
| '400': |
| description: Bad Request |
| content: |
| application/json: |
| schema: |
| $ref: '#/components/schemas/ErrorMessage' |
| '401': |
| description: Unauthorized |
| content: |
| application/json: |
| schema: |
| $ref: '#/components/schemas/ErrorMessage' |
| '403': |
| description: Forbidden |
| content: |
| application/json: |
| schema: |
| $ref: '#/components/schemas/ErrorMessage' |
| '404': |
| description: The specified resource was not found |
| content: |
| application/json: |
| schema: |
| $ref: '#/components/schemas/ErrorMessage' |
| post: |
| description: Create a new anchor in the given dataspace |
| tags: |
| - cps-admin |
| summary: Create an anchor |
| operationId: createAnchor |
| parameters: |
| - name: dataspace-name |
| in: path |
| description: dataspace-name |
| required: true |
| schema: |
| type: string |
| - name: schema-set-name |
| in: query |
| description: schema-set-name |
| required: true |
| schema: |
| type: string |
| - name: anchor-name |
| in: query |
| description: anchor-name |
| required: true |
| schema: |
| type: string |
| responses: |
| '201': |
| description: Created |
| content: |
| text/plain: |
| schema: |
| type: string |
| '400': |
| description: Bad Request |
| content: |
| application/json: |
| schema: |
| $ref: '#/components/schemas/ErrorMessage' |
| '401': |
| description: Unauthorized |
| content: |
| application/json: |
| schema: |
| $ref: '#/components/schemas/ErrorMessage' |
| '403': |
| description: Forbidden |
| content: |
| application/json: |
| schema: |
| $ref: '#/components/schemas/ErrorMessage' |
| '/v1/dataspaces/{dataspace-name}/anchors/{anchor-name}': |
| get: |
| description: Read an anchor given an anchor name and a dataspace |
| tags: |
| - cps-admin |
| summary: Get an anchor |
| operationId: getAnchor |
| parameters: |
| - name: dataspace-name |
| in: path |
| description: dataspace-name |
| required: true |
| schema: |
| type: string |
| - name: anchor-name |
| in: path |
| description: anchor-name |
| required: true |
| schema: |
| type: string |
| responses: |
| '200': |
| description: OK |
| content: |
| application/json: |
| schema: |
| type: object |
| '400': |
| description: Bad Request |
| content: |
| application/json: |
| schema: |
| $ref: '#/components/schemas/ErrorMessage' |
| '401': |
| description: Unauthorized |
| content: |
| application/json: |
| schema: |
| $ref: '#/components/schemas/ErrorMessage' |
| '403': |
| description: Forbidden |
| content: |
| application/json: |
| schema: |
| $ref: '#/components/schemas/ErrorMessage' |
| '404': |
| description: The specified resource was not found |
| content: |
| application/json: |
| schema: |
| $ref: '#/components/schemas/ErrorMessage' |
| delete: |
| description: Delete an anchor given an anchor name and a dataspace - DRAFT |
| tags: |
| - cps-admin |
| summary: Delete an anchor |
| operationId: deleteAnchor |
| parameters: |
| - name: dataspace-name |
| in: path |
| description: dataspace-name |
| required: true |
| schema: |
| type: string |
| - name: anchor-name |
| in: path |
| description: anchor-name |
| required: true |
| schema: |
| type: string |
| responses: |
| '200': |
| description: OK |
| content: |
| application/json: |
| schema: |
| type: object |
| '204': |
| description: No Content |
| content: {} |
| '400': |
| description: Bad Request |
| content: |
| application/json: |
| schema: |
| $ref: '#/components/schemas/ErrorMessage' |
| '401': |
| description: Unauthorized |
| content: |
| application/json: |
| schema: |
| $ref: '#/components/schemas/ErrorMessage' |
| '403': |
| description: Forbidden |
| content: |
| application/json: |
| schema: |
| $ref: '#/components/schemas/ErrorMessage' |
| '/v1/dataspaces/{dataspace-name}/schema-sets': |
| post: |
| description: Create a new schema set in the given dataspace |
| tags: |
| - cps-admin |
| summary: Create a schema set |
| operationId: createSchemaSet |
| parameters: |
| - name: dataspace-name |
| in: path |
| description: dataspace-name |
| required: true |
| schema: |
| type: string |
| - name: schema-set-name |
| in: query |
| description: schema-set-name |
| required: true |
| schema: |
| type: string |
| requestBody: |
| required: true |
| content: |
| multipart/form-data: |
| schema: |
| type: object |
| required: |
| - file |
| properties: |
| file: |
| type: string |
| description: multipartFile |
| format: binary |
| example: 'http://example.com/examples/example.yang' |
| responses: |
| '201': |
| description: Created |
| content: |
| text/plain: |
| schema: |
| type: string |
| '400': |
| description: Bad Request |
| content: |
| application/json: |
| schema: |
| $ref: '#/components/schemas/ErrorMessage' |
| '401': |
| description: Unauthorized |
| content: |
| application/json: |
| schema: |
| $ref: '#/components/schemas/ErrorMessage' |
| '403': |
| description: Forbidden |
| content: |
| application/json: |
| schema: |
| $ref: '#/components/schemas/ErrorMessage' |
| '/v1/dataspaces/{dataspace-name}/schema-sets/{schema-set-name}': |
| 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: |
| - name: dataspace-name |
| in: path |
| description: dataspace-name |
| required: true |
| schema: |
| type: string |
| - name: schema-set-name |
| in: path |
| description: schema-set-name |
| required: true |
| schema: |
| type: string |
| responses: |
| '200': |
| description: OK |
| content: |
| application/json: |
| schema: |
| type: object |
| '400': |
| description: Bad Request |
| content: |
| application/json: |
| schema: |
| $ref: '#/components/schemas/ErrorMessage' |
| '401': |
| description: Unauthorized |
| content: |
| application/json: |
| schema: |
| $ref: '#/components/schemas/ErrorMessage' |
| '403': |
| description: Forbidden |
| content: |
| application/json: |
| schema: |
| $ref: '#/components/schemas/ErrorMessage' |
| '404': |
| description: The specified resource was not found |
| content: |
| application/json: |
| schema: |
| $ref: '#/components/schemas/ErrorMessage' |
| 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: |
| - name: dataspace-name |
| in: path |
| description: dataspace-name |
| required: true |
| schema: |
| type: string |
| - name: schema-set-name |
| in: path |
| description: schema-set-name |
| required: true |
| schema: |
| type: string |
| responses: |
| '204': |
| description: No Content |
| content: {} |
| '400': |
| description: Bad Request |
| content: |
| application/json: |
| schema: |
| $ref: '#/components/schemas/ErrorMessage' |
| '401': |
| description: Unauthorized |
| content: |
| application/json: |
| schema: |
| $ref: '#/components/schemas/ErrorMessage' |
| '403': |
| description: Forbidden |
| content: |
| application/json: |
| schema: |
| $ref: '#/components/schemas/ErrorMessage' |
| '409': |
| description: Conflict |
| content: |
| application/json: |
| schema: |
| $ref: '#/components/schemas/ErrorMessage' |
| '/v1/dataspaces/{dataspace-name}/anchors/{anchor-name}/node': |
| 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: |
| - name: dataspace-name |
| in: path |
| description: dataspace-name |
| required: true |
| schema: |
| type: string |
| - name: anchor-name |
| in: path |
| description: anchor-name |
| required: true |
| schema: |
| type: string |
| - name: xpath |
| in: query |
| description: xpath |
| required: false |
| schema: |
| type: string |
| default: / |
| - name: include-descendants |
| in: query |
| description: include-descendants |
| required: false |
| schema: |
| type: boolean |
| default: false |
| responses: |
| '200': |
| description: OK |
| content: |
| application/json: |
| schema: |
| type: object |
| '400': |
| description: Bad Request |
| content: |
| application/json: |
| schema: |
| $ref: '#/components/schemas/ErrorMessage' |
| '401': |
| description: Unauthorized |
| content: |
| application/json: |
| schema: |
| $ref: '#/components/schemas/ErrorMessage' |
| '403': |
| description: Forbidden |
| content: |
| application/json: |
| schema: |
| $ref: '#/components/schemas/ErrorMessage' |
| '404': |
| description: The specified resource was not found |
| content: |
| application/json: |
| schema: |
| $ref: '#/components/schemas/ErrorMessage' |
| x-codegen-request-body-name: xpath |
| '/v1/dataspaces/{dataspace-name}/anchors/{anchor-name}/nodes': |
| post: |
| description: Create a node for a given anchor and dataspace |
| tags: |
| - cps-data |
| summary: Create a node |
| operationId: createNode |
| parameters: |
| - name: dataspace-name |
| in: path |
| description: dataspace-name |
| required: true |
| schema: |
| type: string |
| - name: anchor-name |
| in: path |
| description: anchor-name |
| required: true |
| schema: |
| type: string |
| requestBody: |
| required: true |
| content: |
| application/json: |
| schema: |
| type: string |
| responses: |
| '201': |
| description: Created |
| content: |
| text/plain: |
| schema: |
| type: string |
| '400': |
| description: Bad Request |
| content: |
| application/json: |
| schema: |
| $ref: '#/components/schemas/ErrorMessage' |
| '401': |
| description: Unauthorized |
| content: |
| application/json: |
| schema: |
| $ref: '#/components/schemas/ErrorMessage' |
| '403': |
| description: Forbidden |
| content: |
| application/json: |
| schema: |
| $ref: '#/components/schemas/ErrorMessage' |
| 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: |
| - name: dataspace-name |
| in: path |
| description: dataspace-name |
| required: true |
| schema: |
| type: string |
| - name: anchor-name |
| in: path |
| description: anchor-name |
| required: true |
| schema: |
| type: string |
| - name: xpath |
| in: query |
| description: xpath |
| required: false |
| schema: |
| type: string |
| default: / |
| requestBody: |
| required: true |
| content: |
| application/json: |
| schema: |
| type: string |
| responses: |
| '200': |
| description: OK |
| content: |
| application/json: |
| schema: |
| type: object |
| '400': |
| description: Bad Request |
| content: |
| application/json: |
| schema: |
| $ref: '#/components/schemas/ErrorMessage' |
| '401': |
| description: Unauthorized |
| content: |
| application/json: |
| schema: |
| $ref: '#/components/schemas/ErrorMessage' |
| '403': |
| description: Forbidden |
| content: |
| application/json: |
| schema: |
| $ref: '#/components/schemas/ErrorMessage' |
| 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: |
| - name: dataspace-name |
| in: path |
| description: dataspace-name |
| required: true |
| schema: |
| type: string |
| - name: anchor-name |
| in: path |
| description: anchor-name |
| required: true |
| schema: |
| type: string |
| - name: xpath |
| in: query |
| description: xpath |
| required: false |
| schema: |
| type: string |
| default: / |
| requestBody: |
| required: true |
| content: |
| application/json: |
| schema: |
| type: string |
| responses: |
| '200': |
| description: OK |
| content: |
| application/json: |
| schema: |
| type: object |
| '400': |
| description: Bad Request |
| content: |
| application/json: |
| schema: |
| $ref: '#/components/schemas/ErrorMessage' |
| '401': |
| description: Unauthorized |
| content: |
| application/json: |
| schema: |
| $ref: '#/components/schemas/ErrorMessage' |
| '403': |
| description: Forbidden |
| content: |
| application/json: |
| schema: |
| $ref: '#/components/schemas/ErrorMessage' |
| '/v1/dataspaces/{dataspace-name}/nodes': |
| 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: |
| - name: dataspace-name |
| in: path |
| description: dataspace-name |
| required: true |
| schema: |
| type: string |
| responses: |
| '200': |
| description: OK |
| content: |
| application/json: |
| schema: |
| type: object |
| '400': |
| description: Bad Request |
| content: |
| application/json: |
| schema: |
| $ref: '#/components/schemas/ErrorMessage' |
| '401': |
| description: Unauthorized |
| content: |
| application/json: |
| schema: |
| $ref: '#/components/schemas/ErrorMessage' |
| '403': |
| description: Forbidden |
| content: |
| application/json: |
| schema: |
| $ref: '#/components/schemas/ErrorMessage' |
| '404': |
| description: The specified resource was not found |
| content: |
| application/json: |
| schema: |
| $ref: '#/components/schemas/ErrorMessage' |
| x-codegen-request-body-name: requestBody |
| '/v1/dataspaces/{dataspace-name}/anchors/{anchor-name}/nodes/query': |
| get: |
| description: Query data nodes for the given dataspace and anchor using CPS path |
| tags: |
| - cps-query |
| summary: Query data nodes |
| operationId: getNodesByDataspaceAndAnchorAndCpsPath |
| parameters: |
| - name: dataspace-name |
| in: path |
| description: dataspace-name |
| required: true |
| schema: |
| type: string |
| - name: anchor-name |
| in: path |
| description: anchor-name |
| required: true |
| schema: |
| type: string |
| - name: cps-path |
| in: query |
| description: cps-path |
| required: false |
| schema: |
| type: string |
| default: / |
| - name: include-descendants |
| in: query |
| description: include-descendants |
| required: false |
| schema: |
| type: boolean |
| default: false |
| responses: |
| '200': |
| description: OK |
| content: |
| application/json: |
| schema: |
| type: object |
| '400': |
| description: Bad Request |
| content: |
| application/json: |
| schema: |
| $ref: '#/components/schemas/ErrorMessage' |
| '401': |
| description: Unauthorized |
| content: |
| application/json: |
| schema: |
| $ref: '#/components/schemas/ErrorMessage' |
| '403': |
| description: Forbidden |
| content: |
| application/json: |
| schema: |
| $ref: '#/components/schemas/ErrorMessage' |
| '404': |
| description: The specified resource was not found |
| content: |
| application/json: |
| schema: |
| $ref: '#/components/schemas/ErrorMessage' |
| x-codegen-request-body-name: xpath |
| components: |
| schemas: |
| 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. |