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 <aditya.puthuparambil@bell.ca>
Change-Id: I18fb9b8a2be85d180d4625657aca399dbf60b7bc
diff --git a/cps-rest/docs/api/swagger/components.yaml b/cps-rest/docs/api/swagger/components.yaml
new file mode 100644
index 0000000..ab964a9
--- /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 0000000..948c43b
--- /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 0000000..c33cf16
--- /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 2acd2b1..44064e2 100755
--- a/cps-rest/docs/api/swagger/openapi.yml
+++ b/cps-rest/docs/api/swagger/openapi.yml
@@ -10,400 +10,25 @@
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'