I am now inheriting the permissions as I only have two groups which is group1 which has full control already and the other group is domain group which is everybody in the org so I removed that group by using deleteObject. I still can't give Author of the list item read permissions.
Error I get is. "Unknown Error" or "Invalid Request"
//variable declaration var collListItems; var getItemCount; var sArd; var selectedItem; var requesterPermissions; $(document).ready(function () { retreiveFieldValues(); }); /*------------------------RETRIEVE ALL ITEMS COLLECTION FUNCTION-----------------------------------*/ /*------------------------------------------------------------------------------------------------------------*/ function retreiveFieldValues() { var context = SP.ClientContext.get_current(); sArd= context.get_web().get_lists().getByTitle('MyList'); var camlQuery = new SP.CamlQuery(); collListItems = sArd.getItems(camlQuery); context.load(sArd); context.load(collListItems); context.executeQueryAsync(onSuccess, onFailure); } function onSuccess() { getItemCount = sArd.get_itemCount(); retreiveSelectedItem(getItemCount); //Ending of On Query Success of retrieve field values function } function onFailure(sender, args) { console.log( " Failed to get the Values. Error: " + args.get_message()); } /*------------------------RETRIEVE SELECTED ITEM BY ITEM ID FUNCTION-------------------------------*/ /*------------------------------------------------------------------------------------------------------------*/ function retreiveSelectedItem() { console.log("No of Items inside Sub Method are: " + getItemCount); var context2 = SP.ClientContext.get_current(); var sArd2= context2.get_web().get_lists().getByTitle('MyList'); selectedItem = sArd2.getItemById(getItemCount); context2.load(selectedItem); context2.executeQueryAsync(onCodeSuccess, onCodeFailure); } function onCodeSuccess() { console.log("Entered the On Success function"); var createdBy = selectedItem.get_item('Author').get_lookupValue(); console.log("Created By " + createdBy); var requestID = selectedItem.get_item("RequestID"); console.log("Request ID " + requestID); assignPermissions(this.createdBy, getItemCount); } function onCodeFailure(sender, args) { console.log("Failed in 2nd sub method "+ args.get_message()); } /*---------------ASSIGN PERMISSIONS TO REQUESTER AND APPROVER FUNCTION ---------------------*/ /*------------------------------------------------------------------------------------------*/ function assignPermissions() { var context3 = new SP.ClientContext.get_current(); var sArd3= context3.get_web().get_lists().getByTitle('MyList'); selectedItem = sArd3.getItemById(getItemCount); selectedItem.breakRoleInheritance(true); selectedItem.get_roleAssignments().getByPrincipalId(8).deleteObject(); requesterPermissions = SP.RoleDefinitionBindingCollection.newObject(context3); requesterPermissions.add(context3.get_web().get_roleDefinitions().getByType(SP.RoleType.reader)); selectedItem.get_roleAssignments().add(createdBy, requesterPermissions); console.log("Assigned read permissions to requester"); context3.load(sArd3); //context3.load(createdBy); context3.executeQueryAsync(onQuerySuccess, onQueryFail); } function onQuerySuccess() { console.log("Added permissions"); } function onQueryFail(sender, args) { console.log("Failed in 3rd sub method. :"+ args.get_message()); } </script>```