OneNote and Microsoft's quiet API revolution
Microsoft just released OneNote for Mac today. They also made OneNote for PC free, which means there's a free OneNote app on Windows, Windows Phone, iOS, Mac, Android and a really full featured HTML5 web version at http://www.office.com. This is all very cool of course, but I'm interested in the APIs.
Now, to be clear, I have worked for Microsoft for the last few years on ASP.NET and Azure, but I don't know anyone in the Office team. I am not privy to any secret info and I get most of my news from The Verge, just like you.
But from my perspective, the real story here is that Microsoft has woken up to the power of the API. Some may argue that they've always had powerful web APIs, which is true, however the breadth and scope of these APIs and their ubiquity seems to have accelerated in recent years. They are clearer, more open, simpler, and more cross-platform than ever before.
The Azure cloud and the Azure HTML5 Portal where folks manage their apps uses a REST API, and the SDKs to use them - as well as a cross platform nodejs command line application - are on GitHub. If you use the main portal, write your own, or use Visual Studio, it all calls the same open API. Duh.
Exchange has APIs, Microsoft IDs use OAuth, Azure's Portal has an API and uses it themselves, SharePoint is one giant REST/OData API, Office 365 has been quietly releasing APIs for Mail, Calendar, and Contacts, and even now Lync has a REST Web API now.
Today when the Office team launched OneNote for Mac, they also launched http://dev.onenote.com along with integration partners like Feedly, JotNot, IFTTT, Weave News Reader and more all integrating with their REST API.
The moral of the story here is - if you have no API then you have no story.
Using the OneNote API
There's even more evidence of a change in thinking inside the big house. It's clearly of note that the API example in the OneNote API documentation on MSDN used Objective-C. They also link to a OneNote interactive Console at Apigee.
The API appears to be basically RESTful, with a POST of HTML to https://www.onenote.com/api/v1.0/pages creating a new OneNote page in your authenticated notebook.
You authenticate with your Microsoft ID using the SDK, get the token from the SDK object to be used in the authentication header then POST.
What has surprised me is that they have tutorials and samples across all platforms:
- Android - Create an Android capture app - OneNoteServiceSamplesAndroid
- iOS - … an iOS capture app - OneNoteServiceSamplesiOS
- Windows Phone - …a Windows Phone capture app - OneNoteServiceSamplesWinPhone
- Windows Store - …a Windows Modern UI capture app - OneNoteServiceSamplesWinStore
- REST - Use the apigee.com API console - Open the interactive console
And, heck, the samples are all on GitHub too: https://github.com/OneNoteDev.
It looks like the focus for this initial launch is POST/Create for capture apps, photos, text, clippers, etc, but all the verbs are coming, clearly at the top of their backlog.
I like this direction, and to me, it's representative of a larger shift to recognize that the world doesn't always run Windows. I've said it before, and I'll said it again - The Web will always win.
Sponsor: Big thanks to Red Gate for sponsoring the blog feed this week. Check out the Free Starter Edition of their release management tool! Deploy your SQL Server databases, .NET apps and services in a single, repeatable process with Red Gate’s Deployment Manager. Get started now with the free Starter Edition.