Issues and Decisions
Date | Issue/Questions | Decisions |
---|
| Should dry-run be a path parameter or a query parameter? |
|
---|
Overview
Currently when persisting any data in CPS the data validation is performed using the yang schema and upon successful validation the data is stored in CPS DB. But in case the data validation fails a 500 response is returned by CPS.
...
The following example shows the expected changes to existing APIs to implement a dry-run flag:
# | API | Request parameters | Response Codes | Scenarios |
---|
1 | Create a Node: /v2/dataspaces/{dataspace-name}/anchors/{anchor-name}/nodes |
Parameter Name | In | Required | Description |
---|
dataspace-name | Path | true | dataspace name | anchor-name | Path | true | anchor name | xpath | Query | true | xpath of node | dry-run | Query | false | flag to enable or disable data validation (set to false by default) |
| - 200 (OK)
- 400
- dataspace not found
DataspaceNotFoundException - anchor not found
AnchorNotFoundException - Data node not found
DataNodeNotFoundException - invalid xpath
CpsPathException
- 500
| Scenario 1: dry run set to false - In this case there will be no functional change in the APIs, and they would return appropriate response codes with messages in case of any failure.
- In case of successful validation, the data will be persisted, and a 200-response code is returned with nothing in response body
- In case of validation failure, the data validation error is returned with appropriate message and a 400-response code.
Scenario 2: dry run set to true - In this case the APIs will return the same response codes. The only difference will be:
- in case data validation passes, then it would return a 200-response code without any response body, and the data will not be persisted in case of POST operation or modified in case of PUT/PATCH operations.
- In case of validation failure, the data validation error is returned with appropriate message and a 400-response code.
- another approach that can be taken here is,
|
it - data passes validation, then a 200-response code will be returned with response message saying that validation has passed but the data will not be persisted or modified.
|
In of validation failure, data validation error - validation fails a 200-respoonse code is returned with appropriate error message and
|
a 400-response code.References:
...