From 001e7738f4968ec390ea8af36de019aa87e3c2f2 Mon Sep 17 00:00:00 2001 From: "puthuparambil.aditya" Date: Wed, 13 Jan 2021 12:06:20 +0000 Subject: [PATCH] Split OpenAPI yaml file 1. components like schema, parameters, responses, requestBodies all moved to components.yml (https://swagger.io/docs/specification/components/) 2. CpAdmin.yml includes the configuration details for cpsAdmin APIs 3. CpsData.yml includes the API configuration details for cpsData Issue-ID: CPS-155 Signed-off-by: puthuparambil.aditya Change-Id: I18fb9b8a2be85d180d4625657aca399dbf60b7bc --- cps-rest/docs/api/swagger/components.yaml | 105 ++++++ cps-rest/docs/api/swagger/cpsAdmin.yml | 165 +++++++++ cps-rest/docs/api/swagger/cpsData.yml | 65 ++++ cps-rest/docs/api/swagger/openapi.yml | 409 +-------------------- .../cps/rest/controller/AdminRestController.java | 4 +- .../cps/rest/controller/DataRestController.java | 2 +- .../rest/controller/AdminRestControllerSpec.groovy | 2 +- 7 files changed, 356 insertions(+), 396 deletions(-) create mode 100644 cps-rest/docs/api/swagger/components.yaml create mode 100644 cps-rest/docs/api/swagger/cpsAdmin.yml create mode 100644 cps-rest/docs/api/swagger/cpsData.yml diff --git a/cps-rest/docs/api/swagger/components.yaml b/cps-rest/docs/api/swagger/components.yaml new file mode 100644 index 000000000..ab964a93a --- /dev/null +++ b/cps-rest/docs/api/swagger/components.yaml @@ -0,0 +1,105 @@ +components: + schemas: + ErrorMessage: + type: object + title: Error + properties: + status: + type: string + message: + type: string + details: + type: string + MultipartFile: + required: + - file + properties: + multipartFile: + type: string + description: multipartFile + format: binary + + 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 + + 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' + Ok: + description: OK + content: + application/json: + schema: + type: object + Created: + description: Created + content: + text/plain: + schema: + type: string + NoContent: + description: No Content + content: {} diff --git a/cps-rest/docs/api/swagger/cpsAdmin.yml b/cps-rest/docs/api/swagger/cpsAdmin.yml new file mode 100644 index 000000000..948c43b76 --- /dev/null +++ b/cps-rest/docs/api/swagger/cpsAdmin.yml @@ -0,0 +1,165 @@ +dataspace: + post: + tags: + - cps-admin + summary: Create a new dataspace + operationId: createDataspace + parameters: + - $ref: 'components.yaml#/components/parameters/dataspaceNameInQuery' + responses: + 201: + $ref: 'components.yaml#/components/responses/Created' + 400: + $ref: 'components.yaml#/components/responses/BadRequest' + 401: + $ref: 'components.yaml#/components/responses/Unauthorized' + 403: + $ref: 'components.yaml#/components/responses/Forbidden' + +dataspaceByDataspaceName: + delete: + tags: + - cps-admin + summary: Delete the given dataspace - DRAFT + operationId: deleteDataspace + parameters: + - $ref: 'components.yaml#/components/parameters/dataspaceNameInPath' + responses: + 200: + $ref: 'components.yaml#/components/responses/Ok' + 204: + $ref: 'components.yaml#/components/responses/NoContent' + 400: + $ref: 'components.yaml#/components/responses/BadRequest' + 401: + $ref: 'components.yaml#/components/responses/Unauthorized' + 403: + $ref: 'components.yaml#/components/responses/Forbidden' + + +schemaSet: + post: + tags: + - cps-admin + summary: Create a new schema set in the given dataspace + operationId: createSchemaSet + parameters: + - $ref: 'components.yaml#/components/parameters/dataspaceNameInPath' + - $ref: 'components.yaml#/components/parameters/schemaSetNameInQuery' + requestBody: + required: true + content: + multipart/form-data: + schema: + $ref: 'components.yaml#/components/schemas/MultipartFile' + + responses: + 201: + $ref: 'components.yaml#/components/responses/Created' + 400: + $ref: 'components.yaml#/components/responses/BadRequest' + 401: + $ref: 'components.yaml#/components/responses/Unauthorized' + 403: + $ref: 'components.yaml#/components/responses/Forbidden' + +schemaSetBySchemaSetName: + get: + tags: + - cps-admin + summary: Read a schema set given a schema set and a dataspace + operationId: getSchemaSet + parameters: + - $ref: 'components.yaml#/components/parameters/dataspaceNameInPath' + - $ref: 'components.yaml#/components/parameters/schemaSetNameInPath' + responses: + 200: + $ref: 'components.yaml#/components/responses/Ok' + 400: + $ref: 'components.yaml#/components/responses/BadRequest' + 401: + $ref: 'components.yaml#/components/responses/Unauthorized' + 403: + $ref: 'components.yaml#/components/responses/Forbidden' + 404: + $ref: 'components.yaml#/components/responses/NotFound' + +anchorsByDataspace: + get: + tags: + - cps-admin + summary: Read all anchors, given a dataspace + operationId: getAnchors + parameters: + - $ref: 'components.yaml#/components/parameters/dataspaceNameInPath' + responses: + 200: + $ref: 'components.yaml#/components/responses/Ok' + 400: + $ref: 'components.yaml#/components/responses/BadRequest' + 401: + $ref: 'components.yaml#/components/responses/Unauthorized' + 403: + $ref: 'components.yaml#/components/responses/Forbidden' + 404: + $ref: 'components.yaml#/components/responses/NotFound' + + post: + tags: + - cps-admin + summary: Create a new anchor in the given dataspace + operationId: createAnchor + parameters: + - $ref: 'components.yaml#/components/parameters/dataspaceNameInPath' + - $ref: 'components.yaml#/components/parameters/schemaSetNameInQuery' + - $ref: 'components.yaml#/components/parameters/anchorNameInQuery' + responses: + 201: + $ref: 'components.yaml#/components/responses/Created' + 400: + $ref: 'components.yaml#/components/responses/BadRequest' + 401: + $ref: 'components.yaml#/components/responses/Unauthorized' + 403: + $ref: 'components.yaml#/components/responses/Forbidden' + +anchorByDataspaceAndAnchorName: + get: + tags: + - cps-admin + summary: Read an anchor given a anchor and a dataspace - DRAFT + operationId: getAnchor + parameters: + - $ref: 'components.yaml#/components/parameters/dataspaceNameInPath' + - $ref: 'components.yaml#/components/parameters/anchorNameInPath' + responses: + 200: + $ref: 'components.yaml#/components/responses/Ok' + 400: + $ref: 'components.yaml#/components/responses/BadRequest' + 401: + $ref: 'components.yaml#/components/responses/Unauthorized' + 403: + $ref: 'components.yaml#/components/responses/Forbidden' + 404: + $ref: 'components.yaml#/components/responses/NotFound' + + delete: + tags: + - cps-admin + summary: Delete an anchor given a anchor and a dataspace - DRAFT + operationId: deleteAnchor + parameters: + - $ref: 'components.yaml#/components/parameters/dataspaceNameInPath' + - $ref: 'components.yaml#/components/parameters/anchorNameInPath' + responses: + 200: + $ref: 'components.yaml#/components/responses/Ok' + 204: + $ref: 'components.yaml#/components/responses/NoContent' + 400: + $ref: 'components.yaml#/components/responses/BadRequest' + 401: + $ref: 'components.yaml#/components/responses/Unauthorized' + 403: + $ref: 'components.yaml#/components/responses/Forbidden' \ No newline at end of file diff --git a/cps-rest/docs/api/swagger/cpsData.yml b/cps-rest/docs/api/swagger/cpsData.yml new file mode 100644 index 000000000..c33cf168e --- /dev/null +++ b/cps-rest/docs/api/swagger/cpsData.yml @@ -0,0 +1,65 @@ +nodesByDataspaceAndAnchor: + get: + tags: + - cps-data + summary: Get a node given an anchor for the given dataspace - DRAFT + operationId: getNodeByDataspaceAndAnchor + parameters: + - $ref: 'components.yaml#/components/parameters/dataspaceNameInPath' + - $ref: 'components.yaml#/components/parameters/anchorNameInPath' + responses: + 200: + $ref: 'components.yaml#/components/responses/Ok' + 400: + $ref: 'components.yaml#/components/responses/BadRequest' + 401: + $ref: 'components.yaml#/components/responses/Unauthorized' + 403: + $ref: 'components.yaml#/components/responses/Forbidden' + 404: + $ref: 'components.yaml#/components/responses/NotFound' + x-codegen-request-body-name: xpath + +nodesByDataspace: + get: + tags: + - cps-data + summary: Get all nodes for a given dataspace using an xpath or schema node identifier - DRAFT + operationId: getNode + parameters: + - $ref: 'components.yaml#/components/parameters/dataspaceNameInPath' + responses: + 200: + $ref: 'components.yaml#/components/responses/Ok' + 400: + $ref: 'components.yaml#/components/responses/BadRequest' + 401: + $ref: 'components.yaml#/components/responses/Unauthorized' + 403: + $ref: 'components.yaml#/components/responses/Forbidden' + 404: + $ref: 'components.yaml#/components/responses/NotFound' + x-codegen-request-body-name: requestBody + + post: + tags: + - cps-data + summary: Create a node for a given anchor for the given dataspace - DRAFT + operationId: createNode + parameters: + - $ref: 'components.yaml#/components/parameters/dataspaceNameInPath' + requestBody: + content: + multipart/form-data: + schema: + $ref: 'components.yaml#/components/schemas/MultipartFile' + required: true + responses: + 201: + $ref: 'components.yaml#/components/responses/Created' + 400: + $ref: 'components.yaml#/components/responses/BadRequest' + 401: + $ref: 'components.yaml#/components/responses/Unauthorized' + 403: + $ref: 'components.yaml#/components/responses/Forbidden' \ No newline at end of file diff --git a/cps-rest/docs/api/swagger/openapi.yml b/cps-rest/docs/api/swagger/openapi.yml index 2acd2b164..44064e217 100755 --- a/cps-rest/docs/api/swagger/openapi.yml +++ b/cps-rest/docs/api/swagger/openapi.yml @@ -10,400 +10,25 @@ tags: description: cps Resource paths: /v1/dataspaces: - post: - tags: - - cps-admin - summary: Create a new dataspace - operationId: createDataspace - parameters: - - name: dataspace-name - in: query - description: dataspace-name - required: true - schema: - type: string - responses: - 201: - description: Created - content: - application/json: - schema: - type: string - 400: - description: Bad Request - content: { } - 401: - description: Unauthorized - content: { } - 403: - description: Forbidden - content: { } + $ref: 'cpsAdmin.yml#/dataspace' + /v1/dataspaces/{dataspace-name}/: - delete: - tags: - - cps-admin - summary: Delete the given 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: {} - 401: - description: Unauthorized - content: {} - 403: - description: Forbidden - content: {} - /v1/dataspaces/{dataspace-name}/schema-sets/{schema-set-name}: - get: - tags: - - cps-admin - summary: Read a schema set given a schema set and a dataspace - operationId: getSchemaSet - parameters: - - name: dataspace-name - in: path - description: dataspace-name - required: true - schema: - type: string - - name: schema-set-name - in: path - description: schema-name - required: true - schema: - type: string - responses: - 200: - description: OK - content: - application/json: - schema: - type: object - 401: - description: Unauthorized - content: {} - 403: - description: Forbidden - content: {} - 404: - description: Not Found - content: {} - /v1/dataspaces/{dataspace-name}/schema-sets: - post: - tags: - - cps-admin - summary: Create a new schema set in the given dataspace - operationId: createSchemaSet - parameters: - - name: dataspace-name - in: path - description: dataspace-name - required: true - schema: - type: string - requestBody: - required: true - content: - multipart/form-data: - schema: - required: - - schemaSetName - - multipartFile - properties: - schemaSetName: - type: string - multipartFile: - type: string - description: multipartFile - format: binary - responses: - 201: - description: Created - content: - application/json: - schema: - type: string - 401: - description: Unauthorized - content: { } - 403: - description: Forbidden - content: { } + $ref: 'cpsAdmin.yml#/dataspaceByDataspaceName' + /v1/dataspaces/{dataspace-name}/anchors: - get: - tags: - - cps-admin - summary: Read all anchors, given a dataspace - 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 - 401: - description: Unauthorized - content: {} - 400: - description: Bad Request - content: {} - 403: - description: Forbidden - 404: - description: Not Found - content: {} - 204: - description: No Content - content: {} - post: - tags: - - cps-admin - summary: Create a new anchor in the given dataspace - 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: - application/json: - schema: - type: string - 401: - description: Unauthorized - content: {} - 403: - description: Forbidden - content: {} - 404: - description: Not Found - content: {} + $ref: 'cpsAdmin.yml#/anchorsByDataspace' + /v1/dataspaces/{dataspace-name}/anchors/{anchor-name}: - get: - tags: - - cps-admin - summary: Read an anchor given a anchor and a dataspace - 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 - 401: - description: Unauthorized - content: {} - 403: - description: Forbidden - content: {} - 404: - description: Not Found - content: {} - delete: - tags: - - cps-admin - summary: Delete an anchor given a anchor and a dataspace - 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: {} - 401: - description: Unauthorized - content: {} - 403: - description: Forbidden - content: {} + $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}/nodes: - get: - tags: - - cps-data - summary: Get a node given an anchor for the given dataspace - 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 - responses: - 200: - description: OK - content: - application/json: - schema: - type: object - 401: - description: Unauthorized - content: {} - 403: - description: Forbidden - content: {} - 404: - description: Not Found - content: {} - x-codegen-request-body-name: xpath + $ref: 'cpsData.yml#/nodesByDataspaceAndAnchor' + /v1/dataspaces/{dataspace-name}/nodes: - get: - tags: - - cps-data - summary: Get all nodes for a given dataspace using an xpath or schema node identifier - operationId: getNode - parameters: - - name: dataspace-name - in: path - description: dataspace-name - required: true - schema: - type: string - responses: - 200: - description: OK - content: - application/json: - schema: - type: object - 401: - description: Unauthorized - content: {} - 403: - description: Forbidden - content: {} - 404: - description: Not Found - content: {} - x-codegen-request-body-name: requestBody - post: - tags: - - cps-data - summary: Create a node for a given anchor for the given dataspace - operationId: createNode - parameters: - - name: dataspace-name - in: path - description: dataspace-name - required: true - schema: - type: string - requestBody: - content: - multipart/form-data: - schema: - required: - - file - properties: - multipartFile: - type: string - description: multipartFile - format: binary - required: true - responses: - 200: - description: OK - content: - application/json: - schema: - type: object - 201: - description: Created - content: {} - 401: - description: Unauthorized - content: {} - 403: - description: Forbidden - content: {} - 404: - description: Not Found - content: {} -components: - schemas: - ErrorMessage: - type: object - title: Error - properties: - status: - type: string - message: - type: string - details: - type: string + $ref: 'cpsData.yml#/nodesByDataspace' diff --git a/cps-rest/src/main/java/org/onap/cps/rest/controller/AdminRestController.java b/cps-rest/src/main/java/org/onap/cps/rest/controller/AdminRestController.java index 407a76738..4237846ee 100644 --- a/cps-rest/src/main/java/org/onap/cps/rest/controller/AdminRestController.java +++ b/cps-rest/src/main/java/org/onap/cps/rest/controller/AdminRestController.java @@ -54,8 +54,8 @@ public class AdminRestController implements CpsAdminApi { } @Override - public ResponseEntity createSchemaSet(final String schemaSetName, final MultipartFile multipartFile, - final String dataspaceName) { + public ResponseEntity createSchemaSet(final MultipartFile multipartFile, + final String schemaSetName, final String dataspaceName) { cpsModuleService.createSchemaSet(dataspaceName, schemaSetName, extractYangResourcesMap(multipartFile)); return new ResponseEntity<>(schemaSetName, HttpStatus.CREATED); } diff --git a/cps-rest/src/main/java/org/onap/cps/rest/controller/DataRestController.java b/cps-rest/src/main/java/org/onap/cps/rest/controller/DataRestController.java index c637cc6d8..fcb8ddc1c 100644 --- a/cps-rest/src/main/java/org/onap/cps/rest/controller/DataRestController.java +++ b/cps-rest/src/main/java/org/onap/cps/rest/controller/DataRestController.java @@ -38,7 +38,7 @@ public class DataRestController implements CpsDataApi { private ModelMapper modelMapper; @Override - public ResponseEntity createNode(@Valid final MultipartFile multipartFile, final String dataspaceName) { + public ResponseEntity createNode(@Valid final MultipartFile multipartFile, final String dataspaceName) { return null; } diff --git a/cps-rest/src/test/groovy/org/onap/cps/rest/controller/AdminRestControllerSpec.groovy b/cps-rest/src/test/groovy/org/onap/cps/rest/controller/AdminRestControllerSpec.groovy index 078253a64..0a61c7dd5 100644 --- a/cps-rest/src/test/groovy/org/onap/cps/rest/controller/AdminRestControllerSpec.groovy +++ b/cps-rest/src/test/groovy/org/onap/cps/rest/controller/AdminRestControllerSpec.groovy @@ -122,7 +122,7 @@ class AdminRestControllerSpec extends Specification { MockMvcRequestBuilders .multipart(schemaSetsEndpoint) .file(multipartFile) - .param('schemaSetName', 'test-schema-set') + .param('schema-set-name', 'test-schema-set') ).andReturn().response } -- 2.16.6