public ShareLinkItem updateBookmark(String key, Uri link, String title, String description, List <String> spaceKeys, Bitmap icon) { try { LinkApi linkApi = new LinkApi(session.GetApiClient()); DocumentApi documentApi = new DocumentApi(session.GetApiClient()); GetLinkResult getLinkResult = linkApi.GetLink(key); if (getLinkResult.Hdr.Rc == 0) { LinkV2Record existingLink = getLinkResult.Link; existingLink.Link = link.ToString(); existingLink.Title = title; existingLink.Text = description; existingLink.Type = "link"; //UpdateLinkInput updateLinkInput = new UpdateLinkInput(existingLink); //UpdateLinkResult updateLinkResult = linkApi.UpdateLink(key, updateLinkInput); UpdateDocumentInput updateDocumentInput = new UpdateDocumentInput(existingLink); UpdateDocumentResult updateDocumentResult = documentApi.UpdateDocument(key, updateDocumentInput); if (updateDocumentResult.Hdr.Rc == 0) { DocumentV2Record updatedDocument = updateDocumentResult.Document; SpaceApi spaceApi = new SpaceApi(session.GetApiClient()); // Remove spaces foreach (DisplayRecord destination in updatedDocument.Destinations) { if (!spaceKeys.Contains(destination.Key)) { List <String> itemKeysToRemove = new List <String>() { updatedDocument.Key }; RemoveObjectsInput removeObjectsInput = new RemoveObjectsInput(destination.Key, itemKeysToRemove); RemoveObjectsResult removeObjectsResult = spaceApi.RemoveObjects(destination.Key, removeObjectsInput); if (removeObjectsResult.Hdr.Rc != 0) { throw new Exception("Vmoso error removing bookmark from space. Rc=" + removeObjectsResult.Hdr.Rc); } } else { spaceKeys.Remove(destination.Key); } } if (spaceKeys.Count > 0) { ShareObjectInput shareInput = new ShareObjectInput(null, spaceKeys, null); ShareObjectResult shareResult = spaceApi.ShareObject(updatedDocument.Key, shareInput); if (shareResult.Hdr.Rc != 0) { throw new Exception("Vmoso error sharing bookmark. Rc=" + shareResult.Hdr.Rc); } } getLinkResult = linkApi.GetLink(updatedDocument.Key); if (getLinkResult.Hdr.Rc == 0) { LinkV2Record updatedLink = getLinkResult.Link; ShareLinkItem item = new ShareLinkItem(updatedLink.Title, updatedLink.Text); item.Key = updatedLink.Key; item.Link = new Uri(updatedLink.Link); item.Record = updatedLink; item.SetIcon(icon); List <ShareSpace> itemSpaces = new List <ShareSpace>(); foreach (DisplayRecord spaceDisplayRecord in updatedLink.Destinations) { ShareSpace space = new ShareSpace(spaceDisplayRecord.Key, spaceDisplayRecord.DisplayName, null); itemSpaces.Add(space); } item.Spaces = itemSpaces; return(item); } else { throw new Exception("Vmoso error getting updated link. Rc=" + getLinkResult.Hdr.Rc); } } else { throw new Exception("Vmoso error updating link. Rc=" + updateDocumentResult.Hdr.Rc); } } else { throw new Exception("Vmoso error getting link to update. Rc=" + getLinkResult.Hdr.Rc); } } catch (Exception ex) { throw new Exception("Vmoso error getting link to update", ex); } }