Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

The idea here is to have a mechanism to validate the data and throw an appropriate response with message, before the data is persisted in the database. This validation check is not meant to be limited for new data but should also extend to sub-parts sets of a larger data set, such as data used in case of an update operation. So based on this the following approaches are proposed to perform a validation on data:

...

In either case the endpoint should return a REST RESTful response with appropriate response code and message. 

  • Response Code: 400
  • Response Body: a JSON response providing details about the failure. (response body format to be finalized)

...

#API

Request parameters

Response CodesScenarios
1

Create a Node:

/v2/dataspaces/{dataspace-name}/anchors/{anchor-name}/nodes


Parameter NameInRequiredDescription
dataspace-namePathtruedataspace name
anchor-namePathtrueanchor name
xpathQuerytruexpath of node
dry-runQueryfalse

flag to enable or disable data validation

(set to false by default)


  • 200 (OK)
    • success
  • 400
    • dataspace not found
      DataspaceNotFoundException
    • anchor not found
      AnchorNotFoundException
    • Data node not found
      DataNodeNotFoundException
    • invalid xpath
      CpsPathException
  • 500
    • unexpected error

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,
    • in case 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 case the validation fails a 200-respoonse code is returned with appropriate error message and description

References:

...