Forget the SharePoint SDK
One the greatest strengths of SharePoint, and arguably also its Achille's Hill is its Software Development Kit (SDK). There are too many versions of the SDK depending on the version of SharePoint, its complexity is high, and developing against SharePoint from Linux or non-Microsoft development platforms (think Raspberry Pi, Mobile Phones, or low-level languages like C++) is challenging at best.
SDK and Libraries
Of course, certain libraries exist depending on your programming language. For example a GitHub project exists for Python (https://github.com/ox-it/python-sharepoint), which is a great start. However, this is really another SDK. You are still left with many implementation details that are not easy to deal with, such as paging (SharePoint Online requires paging list items for lists with more than 4,000 items), or dealing with XAML. So even if you find an SDK for your development platform, you still need to write a lot of code for specific implementation details.
An SDK-LESS Approach
Welcome to the SDK-less (should I dare call it a no-sdk?) development platform: Enzo. With Enzo you can develop against SharePoint or SharePoint Online using simple HTTP/S calls, without the need for a SharePoint library, and without learning XAML. Making an HTTP request is easy regardless of your development language and platform.
Here is sample code using Python that allows you to retrieve list items using Enzo Online:
import sys
import urllib
import urllib2
import requests
enzourl_receiveMsg="https://ENZO_URI/bsc/sharepoint/getlistitemsex"
enzo_guid="YOUR_AUTH_ID"
#create the headers this call expects
headers={
'authToken': enzoguid,
'viewname': 'mylist',
'where': 'State=''FL''',
'_config': 'myconfigname' }
response=requests.get(enzourl_receiveMsg,headers=headers)
The above code uses standard libraries (sys, urllib...), so no special SDK is necessary. This makes it very easy to use this code from any device, or mobile phone. The "WHERE" parameter is a SQL-like command and is automatically turned into a XAML query by the service.
And because Enzo Online is a service, it manages paging automatically and returns all the list items available by default; you can also page if desired. The enterprise edition of Enzo also gives you the ability to cache results for faster results, and execute native SQL commands against SharePoint and SharePoint Online.
HTTP Test Harness
Since there is no SDK involved, you can also make the same calls from HTTP clients, such as Google's Postman or Fiddler for example. An HTTP request to retrieve SharePoint list items would look something like this:
GET ENZO_URI:ENZO_PORT/bsc/sharepoint/getlistitemsex HTTP/1.1
authToken: YOUR_AUTH_TOKEN
_config: myconfigname
viewname: mylist
where: State='FL'
SharePoint and SharePoint Online
Enzo comes in two flavors: Enzo Unified and Enzo Online.
Enzo Online
For IoT and Mobile development, or prototyping using HTTP/S against SharePoint Online, you can use the Enzo cloud solution: Enzo Online. This PaaS edition of Enzo offers a freemium and also offers the ability to implement data pipelines and CDC against SharePoint Online (click here for more information on CDC).
Enzo Unified
For SharePoint or SharePoint Online development, or if you would like to use more powerful features such as native SQL commands against SharePoint, Caching, and additional security options, you can download Enzo Unified.
Conclusion
While there is certainly room for an SDK when more control is necessary, using an SDK-less development approach can provide significant benefits, including:
Technical benefits
Automatic caching of certain information (schema)
Automatic Paging for large lists
Automatic conversion of Where clause into XAML
Development benefits
No need to manage the SDK lifecycle (upgrades)
Quick prototyping using any platform and language
Centralization of configuration settings
For additional information and documentation of the supported HTTP/S calls, visit: https://portal.enzounified.com