Office 365 is constantly evolving and Microsoft is consolidating product specific API sets to one Office 365 API. One of the major products in Office 365 is SharePoint Online which has the Client Side Object Model (CSOM) for remote access into SharePoint. With two API sets targeting the same platform guidance is required. This session covers a short overview, but quickly takes a deep dive into the Office 365 API for SharePoint Site services. Topics covered are authentication, discovery, CSOM and REST. Demos supporting the topics show examples of file and list operations. By combining both API sets you get the best of both worlds and opens up new possibilities. Joining this session enables you as a developer or architect to choose the best solution approach to your customer requirements.
Machine Learning Software Engineering Patterns and Their Engineering
Deep Dive into Office 365 APIs for SharePoint Site services
1. DEEP DIVE INTO OFFICE 365 APIS FOR
SHAREPOINT SITE SERVICES
Bram de Jager
Technology Consultant | Macaw Workplace Solutions
Microsoft Certified Solutions Master: SharePoint
@bramdejager | bramdejager.wordpress.com
2. AGENDA
• Overview
• Get Started with Office 365 APIs
• File Operations with SharePointClient
• List Operations with REST
• Wrap-up
4. API’S EVERYWHERE!
• SharePoint APIs
o .NET SSOM
o .NET CSOM
o JavaScript JSOM
o REST/OData endpoints
• Office 365 API
o Connect to your users' mail, calendars, contacts, and files into your app
• Microsoft Graph (previously known as Office 365 Unified API)
o Single endpoint for connecting to all of the Office 365 services
7. WHY DO I NEED THE OFFICE 365APIS?
• Access Office 365 data outside of the Office 365 context
o But also integrate with the Office 365 and App Launcher
• Single set of APIs for (almost) all Office 365 services
• Uniform authentication, with support for
o Federation support (AD FS)
o Multi-Factor Authentication (MFA)
8. GET STARTED WITH OFFICE 365APIS
Deep Dive into Office 365 APIs for SharePoint Site services
9. DISCOVERY SERVICE
• Returns a collection of endpoints specific to current user
• Intended as the starting point for application
o 1. Sign-In
o 2. Get authorized
o 3. Discover endpoints for resource
o 4. Get Token
o 5. Access resource
• API Libraries simplify necessary code
• Capabilities: https://api.office.com/discovery/v1.0/me/allServices
10. AUTHENTICATION FLOW
Native Application
Azure AD Authorization
Endpoint
Azure AD Token
Endpoint
Office 365 API
Request authorization code
Return authorization code
Sign-in via browser (pop-up)
Redeem authorization code and acquire access token for Office 365 resource
Return access token and refresh token
Call Office 365 API using the access token
Return Http Response
11. ADAL
• Azure AD Authentication Library (ADAL) supports:
o Token Acquisition
o Token Cache storing access tokens and refresh tokens
o Automatic Token Refresh
o Asynchronous Methods
16. DEMO
• Get started with Office 365 App development
o Register Office 365 App in Visual Studio
o Grant access (user consent)
o Implement ADAL for .NET
17. FILE OPERATIONS WITH SHAREPOINTCLIENT
Deep Dive into Office 365 APIs for SharePoint Site services
18. SHAREPOINT SITES SERVICES
• Provides access to SharePoint Online REST API
• SharePointClient class simplifies programming, but limited functionality
• Direct REST API calls more complex, but exposes more functionality
19. SHAREPOINTCLIENT CLASS
• Discovery Service discovers resource
• SharePointClient.Files abstracts Files API
https://api.office.com/discovery/v1.0/me/
https://api.office.com/discovery/
https://company.sharepoint.com/
20. GET FILES COLLECTION
• Get folders and files collection and read file metadata
• Get files in specific folder
• Type property is either “File” or “Folder”
21. BUTTHERE ISACATCH!
• The API searches for two document libraries, named
o (1) Shared Documents
o (2) Documents
• If libraries do not exist, then…
o {"error":{"code":"-2146232832,
Microsoft.SharePoint.SPException","message":"The file |0 does not exist."}}
23. DEMO
• Implement Get Files collection
• Scenario for the supported document libraries used by the Office 365 API for
Sites
o Site contains 3 document libraries, named: Shared Documents, Documents,
Other Documents
o Remove Shared Documents library
o Remove Documents library
24. ADD NEW FILE
• Use AddAsync() method
• Provide a file name and the file stream
30. OTHER REST OPERATIONS
• List Items
o Adding a list item
o Updating a list item
o Deleting a list item
• Other REST APIs
o Taxonomy
o Search (Office Graph)
o BCS
o Workflow
o …
32. KEY TAKEAWAY
• One API for accessing all Office 365 data
o API makes it easier, limited functionality
o Reuse the Access Token for REST calls
• Single repeatable pattern for
o Mail
o Contact
o Calendar
o Files
o OneDrive
o …
33. KEY TAKEAWAY
• Another approach to providing solutions
o Build a solution which connects to all Office 365 service
o App Launcher integration
o Use all capabilities provided by ASP.NET web application
o Integrate these Office 365 services into
o SharePoint Add-ins
o Office Add-ins
o Native apps: Windows Universal Apps, iOS, Android
34. RESOURCES
• Office Dev Center, http://dev.office.com
• Get started with Office 365 APIs, http://dev.office.com/getting-started/office365apis
• Office 365 API reference, https://msdn.microsoft.com/en-
us/office/office365/api/api-catalog
• Files REST API reference, https://msdn.microsoft.com/office/office365/APi/files-
rest-operations
• Authorization Code Grant Flow, https://msdn.microsoft.com/en-
us/library/azure/dn645542.aspx
• Kirk Evans Fiddler add-in (oAuth inspector),
http://blogs.msdn.com/b/kaevans/archive/2015/03/30/updated-fiddler-oauth-
inspector.aspx
35. SharePoint Client Browser
• Audience: Developer and IT Pro
• Insights into your Office 365 Tenant
and/or Site Collection
• Exposes the SharePoint CSOM
• Supports SharePoint Online and
SharePoint Server
• Just released new version
• Over 29.000 downloads already!
• http://spcb.codeplex.com
Office 365 REST APIs let you plug in your users' mail, calendars, contacts, and files into your app.
Office 365 REST API endpoint:
Mail
Contacts
Calendars
Outlook notifications (preview)
Outlook user photo (preview)
Discovery service
Files
OneDrive (preview)
Video (preview)
Office 365 Management APIs
Service Communications API (preview)
Management Activity API Reference (preview)
Source: http://dev.office.com/getting-started/office365apis
Single authentication and API endpoint for Office 365 and Microsoft Services, thus a single AccessToken for all services!
Single endpoint, no discovery service required
Require only 1 AccessToken
Office 365 unified API endpoint
Users
Groups
Files
Mail
Calendar
Contacts
and Office Graph
Source: http://dev.office.com/unifiedAPIs
Single auth flow for O365
Azure AD Graph, Exchange, SharePoint
Device apps and web sites
Admin and end-user consent
Secure protocol
OAuth 2.0
No capturing user credentials
Fine-grained access scopes
Supports MFA and federated user sign-in
Long-term access through refresh tokens
Authentication to Office 365 APIs using resource id
Authorization Code Grant Flow
The client application starts the flow by redirecting the user agent to the Azure AD authorization endpoint. The user authenticates and consents, if consent is required.
The Azure AD authorization endpoint redirects the user agent back to the client application with an authorization code. The user agent returns authorization code to the client application’s redirect URI.
The client application requests an access token from the Azure AD token issuance endpoint. It presents the authorization code to prove that the user has consented.
The Azure AD token issuance endpoint returns an access token and a refresh token. The refresh token can be used to request additional access tokens.
The client application uses the access token to authenticate to the Web API.
After authenticating the client application, the web API returns the requested data.
https://msdn.microsoft.com/en-us/library/azure/dn645542.aspx
Grant access per person
Grant access per organization
How To Delete An App You Consented to in Azure AD
https://samlman.wordpress.com/2015/02/27/how-to-delete-an-app-you-consented-to-in-azure-ad/
Integrate Office 365 APIs into .NET Visual Studio projects
https://msdn.microsoft.com/en-us/office/office365/howto/authenticate-and-use-services
Paging is based on post-query using LINQ (left out)
Office 365 API Sites
Site with library named “Documents” or “Shared Documents” is only for OneDrive! Not for Files API
Examples
Macaw Colleague Sync
Get all Macaw colleagues from Azure AD
Retrieve user profile information from SharePoint via REST API by using the AccessToken
Add every colleague to your personal Contacts
Time registration
Retrieve time information based on your personal Calendar
Add entries to time registration tool based on calendar information
Save a monthly report to your personal OneDrive Files
Examples
Macaw Colleague Sync
Time registration