Limitations of SharePoint ListData.svc

The SharePoint RESTful API (ListData.svc) is a great and effective way to access data in SharePoint lists and document libraries for use in mobile/desktop web apps. However, you should be aware of some of the limitations of ListData.svc in SharePoint 2010.

  1. Anonymous access not allowed.

    Only authenticated users can use ListData.svc, even for lists that allow anonymous access. This means you can’t use ListData.svc in public sites.

  2. Property names based on display names instead of internal names

    In contrast to SharePoint Web Services and CSOM, which use internal names of the item fields, ListData.svc uses the display names (with whitespace trimmed). This can cause issues when your user changes the display names of columns or if your user can switch languages in a multilingual SharePoint site (the display names of fields may change).

  3. No access to External List

    You cannot access (read or write) data in SharePoint External Lists.

  4. No access to discussion list

    ListData returns HTTP 500 error when accessing a Discussion list. This is confirmed as a bug and has been escalated to the development team. More details here.

  5. Cannot use $filter beyond resource throttling threshold

    You cannot filter on a list with more items than the throttling threshold. ListData.svc does not take into account the use of folders. Full details in this blog post.

Did you encounter any other limitations? Let me know and I’ll update the post.


API access to SharePoint external lists

Suppose you want to programmatically access data in a SharePoint external list (e.g.  data from SQL Server). You may think that you can just use SharePoint’s ListData.svc. Think again…

I did some experimenting with an external list connected to SQL Server, with the following results:

SharePoint API Read Create/Update/Delete
ListData.svc (REST) Not supported Not supported
Web services (SOAP) Supported (GetListItems) Not supported
Client side object model Supported Supported

In short: if you want CRUD access to an external list, your SharePoint API choice is reduced to the client side object model.

I hope this is useful to others working with external lists, as there is little information about this topic on the internet. Let me know if you have different findings.