#csom 7 articles
Get lists by URL, not by title gotchas / rest-api getbytitle() breaks the moment someone renames a list; resolve by URL (bonus: GetList normalises folder paths to their list) Limited Access cannot be granted — the API returns 200 and does nothing gotchas / permissions RoleTypeKind: 1 is derived, not assignable: SharePoint maintains it so people can traverse to a child with unique permissions, and an explicit addroleassignment returns 200 while doing nothing. Strip it from EVERY… Locking down a no-script site from code: web NoCrawl is denied even to a site collection admin, and turning off access requests returns 200 and changes nothing gotchas / security On a modern site with custom scripts disabled, NoCrawl on the WEB returns 403 via REST and CSOM even for a site collection admin, and SetUseAccessRequestDefaultAndUpdate(false) returns 200 without effect; both work… PermissionKind is 1-based — decoding BasePermissions with 1 << kind invents a security finding gotchas / permissions The flag for kind k is 1 << (k - 1), so 1 << k invents a security finding: Contribute appears to hold ManageLists (it holds ViewFormPages). Calibrate any decoder against a known level first, and note the tell — a… Reindex a library from code works even on a no-script site — the root folder's property bag is writable, the web's is not gotchas / rest-api Bumping vti_searchversion on the library's RootFolder property bag via CSOM succeeds on sites with custom scripts disabled (unlike the web property bag); find the library from any item URL with GetWebUrlFromPageUrl +… The crawl log DOES exist in SharePoint Online — it just isn't where you look for it gotchas / search Reachable only through CSOM DocumentCrawlLog via /_vti_bin/client.svc/ProcessQuery, gated by a separate Crawl Log Permissions grant that no admin role implies; returns ~52 columns incl. per-pass crawl timestamps… View formatting JSON can't contain < or & — XmlException on save gotchas / lists It's stored inside the view's schema XML; reverse the comparison and nest if()