It might be difficult to search for an item in a SharePoint recycle bin. I was using the end point _api/site/RecycleBin
as a Site Collection Administrator, but in some cases it returns an error « The attempted operation is prohibited because it exceeds the list view threshold. ».
The solution is to use another end point _api/site/getrecyclebinitems
(see the documentation for the various parameters):
fetch("https://tenant.sharepoint.com/sites/YourSite/_api/site/getrecyclebinitems?rowLimit=%2770000%27&itemState=0&orderby=3&isAscending=false", { "headers": { "accept": "application/json", "content-type": "application/json", "x-requestdigest": document.querySelector("#__REQUESTDIGEST").value }, "method": "GET", }) .then(res => res.json()) .then(json => { console.log(json.value); // it will show an array with an object that contains several interesting properties: // AuthorEmail, AuthorName, DeletedByEmail, DeletedDate, DirName, Id, LeafName, Title, … })
You can then filter the result to get what you need, for example if you’re looking for an item from the list “Projects” that has the ID 1981:
json.value.filter(item => item.DirName.includes("Lists/Projects") && item.LeafName === "1981_.000");
Then, to restore an item, we need the Id
from the previous result. The famous endpoint to restore an item is _api/site/RecycleBin('Id')/restore
, however it could also return the error « The attempted operation is prohibited because it exceeds the list view threshold ». In that case, we can use this other endpoint _api/site/RecycleBin/RestoreByIds
:
fetch("https://tenant.sharepoint.com/sites/YourSite/_api/site/RecycleBin/RestoreByIds", { "headers": { "accept": "application/json", "content-type": "application/json", "x-requestdigest": document.querySelector("#__REQUESTDIGEST").value }, "method": "POST", "body":JSON.stringify({ "ids": [ "4f855ee7-472b-414a-a482-4317a114c1a2" // Id to restore ], "bRenameExistingItems": true }) })