Versions Compared

Key

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

...


NameEndpointIssueRequired Action
1Create a Node/{apiVersion}/dataspaces/{dataspace-name}/anchors/{anchor-name}/nodesReturns 500 status on data validation failure

Return 400 status with updated and detailed error message.

Updated Message:

Code Block
{
"status": "400 BAD_REQUEST",
"message": "Data Validation Failed",
"details": "Failed to parse JSON data. 
Data node with name "Node" was not found 
under Schema Node "categories"."
}


2Update Node Leaves/{apiVersion}/dataspaces/{dataspace-name}/anchors/{anchor-name}/nodesReturns 400 status with entire JSON payload in error message
3Replace Nodes/{apiVersion}/dataspaces/{dataspace-name}/anchors/{anchor-name}/nodesReturns 400 status with entire JSON payload in error message
4Add List Element/{apiVersion}/dataspaces/{dataspace-name}/anchors/{anchor-name}/list-nodesReturns 500 status on data validation failure
5Replace List element/{apiVersion}/dataspaces/{dataspace-name}/anchors/{anchor-name}/list-nodesReturns 400 status with entire JSON payload in error message
6Get Delta between anchor and JSON payload/v2/dataspaces/{dataspace-name}/anchors/{anchor-name}/deltaAnchorsReturns 400 status with entire JSON payload in error message

Example

The following example shows the expected changes to existing APIs to implement a dry-run flag:

#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.

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, but the data will not be persisted in case of POST operation or modified in case of PUT/PATCH operations.

References:

...