How ValidateUpdateFetchListItem type of update works?

After some tests with customRowAction in column formatting, I have noticed that there is another endpoint similar to /items/(id)/ValidateUpdateListItem named /items/(id)/ValidateUpdateFetchListItem, which is used in the setValue method. Both use the same request body and have the same effect — updating an item.

The difference starts in the request results:

Calls Comparison

As you can observe, the ValidateUpdateFetchListItem request also provides full information about the changed item in the UpdatedData property of the result.

Usage

Example to be used in Power Automate flow:


Replace contoso, TargetSite, and TargetList with your values.

URL:

 https://<contoso>.sharepoint.com/sites/<TargetSite>/_api/web/GetList(@a1)/ValidateUpdateFetchListItem()?@a1=%27%2Fsites%2F<TargetSite>%2FLists%2F<TargetList>%27

Body:

{
  "formValues": [
    {
      "FieldName": "Title",
      "FieldValue": "TitleValue"
    }
  ],
  "bNewDocumentUpdate": false
}

An example of result

{
  "d": {
    "ValidateUpdateFetchListItem": {
      "__metadata": {
        "type": "SP.ListItemUpdateResults"
      },
      "UpdatedData": "{ \"Row\" : \n[{\r\n\"ID\": \"1\",\r\n\"PermMask\": \"0x7ffffffffffbffff\",\r\n\"FSObjType\": \"0\",\r\n\"UniqueId\": \"{1556EB05-0135-469F-8170-48C9802EAA1F}\",\r\n\"Title\": \"TitleValue\",\r\n\"FileLeafRef\": \"1_.000\",\r\n\"FileLeafRef.Name\": \"1_\",\r\n\"FileLeafRef.Suffix\": \"000\",\r\n\"Created_x0020_Date\": \"1;#2024-07-29 10:21:59\",\r\n\"Created_x0020_Date.\": \"2024-07-29T17:21:59Z\",\r\n\"Created_x0020_Date.ifnew\": \"1\",\r\n\"FileRef\": \"\\u002fsites\\u002fSiteName\\u002fLists\\u002fListName\\u002f1_.000\",\r\n\"FileRef.urlencode\": \"%2Fsites%2FSiteName%2FLists%2FListName%2F1%5F%2E000\",\r\n\"FileRef.urlencodeasurl\": \"\\u002fsites\\u002fSiteName\\u002fLists\\u002fListName\\u002f1_.000\",\r\n\"FileRef.urlencoding\": \"\\u002fsites\\u002fSiteName\\u002fLists\\u002fListName\\u002f1_.000\",\r\n\"FileRef.scriptencodeasurl\": \"\\\\u002fsites\\\\u002fSiteName\\\\u002fLists\\\\u002fListName\\\\u002f1_.000\",\r\n\"File_x0020_Type\": \"\",\r\n\"HTML_x0020_File_x0020_Type.File_x0020_Type.mapall\": \"icgen.gif|||\",\r\n\"HTML_x0020_File_x0020_Type.File_x0020_Type.mapcon\": \"\",\r\n\"HTML_x0020_File_x0020_Type.File_x0020_Type.mapico\": \"icgen.gif\",\r\n\"ContentTypeId\": \"0x0100C6346114FCBA5642B737CFEF36E87277005CB6464EE82D9F4190824DA0F156AFD0\",\r\n\"TestColumn2\": \"\",\r\n\"TestColumn\": \"\",\r\n\"ItemChildCount\": \"0\",\r\n\"FolderChildCount\": \"0\",\r\n\"ScopeId\": \"{AC3A9953-2893-4E7E-835E-6C17F9D7B41D}\",\r\n\"owshiddenversion\": \"3\",\r\n\"Restricted\": \"\"\r\n}\r\n],\"FirstRow\" : 1,\r\n\"FolderPermissions\" : \"0x7ffffffffffbffff\"\r\n,\"LastRow\" : 1,\r\n\"RowLimit\" : 30\r\n,\"FilterLink\" : \"?\"\n,\"ForceNoHierarchy\" : \"1\"\n,\"HierarchyHasIndention\" : \"\"\n,\"CurrentFolderPrincipalCount\" : \"0\"\n,\"CurrentFolderSpItemUrl\" : \"\"\n\n}",
      "UpdateResults": {
        "__metadata": {
          "type": "Collection(SP.ListItemFormUpdateValue)"
        },
        "results": [
          {
            "ErrorCode": 0,
            "ErrorMessage": null,
            "FieldName": "Title",
            "FieldValue": "TitleValue",
            "HasException": false,
            "ItemId": 1
          }
        ]
      }
    }
  }
}

The endpoint would be useful when you need to use the updated item data after the update.