top of page

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

bottom of page