Slides for session presented at Office365 Saturday Europe 2014, 15.11.2014.
This session introduces you to the Microsoft Office 365 Development platform. It introduces the main two approaches to developing using the App Model to make your customizations appear in the products and the Office 365 APIs to consume them from within your own applications. Understand the strategy and direction of the Office 365 development platform. Learn the key ways to develop on top of the Office 365 platform. See some key scenarios that highlight the benefit of building business solutions on top of the Office 365 platform.
This session is delivered on TechEd Europe 2014, in a bit longer format.
7. Office 2013 development scenarios
Business processes Sales and marketing,
finance, and HR
Team collaboration Content and project
management
Workflow Document approval
and expenses
App for Sharepoint
Document template
App for Office App for Office
App for Office App for Office
Translation, definitions,
dictionary, help, research
Business data lookup (CRM),
contextual forms (surveys)
Rich web content YouTube video and
photo gallery
Data visualization,
analysis and mashups
Maps, custom charts,
and lookups
Reference tools
Content authoring
and publishing
Contextual content
and services
Workflow and
collaboration
Doc builders and
print services
Project tracking,
coauthoring
App for Office
Content authoring Resumes and
contracts
Dashboards Data analysis and
data mashups
Forms and
reports
Legal forms and
financial reports
Document template
App for Office App for Office
App for Office App for Office
8. Apps for Office - dev fundamentals
App components:
App manifest
Web site
Office JavaScript API (Office.js)
Referenced on Microsoft CDN or
deployed locally
API updates are versioned
It’s web development!
Use all JS/CSS frameworks you
want!
Same origin policy applies
Secure dev practices needed
(SSL, input validation etc.)
11. App shapes for Office
Task pane
App adjacent to the document
Content
App in the body of the document
Mail
Inline pane on an email or appointment item
12.
13. App shapes for Office
Task pane
App adjacent to the document
Content
App in the body of the document
Mail
Inline pane on an email or appointment item
14.
15. App shapes for Office
Task pane
App adjacent to the document
Content
App in the body of the document
Mail
Inline pane on an email or appointment item
19. SharePoint apps - recap
Code is isolated
from SharePoint,
using remote
APIs
Client-side:
JavaScript in user’s
browser
Server-side:
CSOM code in
Azure/IIS/other
21. Packaging and publishing apps
Packaging apps
.app file extension—a package typically includes the following files:
AppManifest.xml
AppIcon.png
Solution file
Data tier application package
Publishing apps
Office Store
App catalogs
23. App shapes for SharePoint
Full page
Implement complete app experiences to satisfy
business scenarios
Parts
Create app parts that can interact with the
SharePoint experience
UI command extensions
Add new commands to the ribbon and item menus
24.
25. App shapes for SharePoint
Full page
Implement complete app experiences to satisfy business scenarios
Parts
Create app parts that can interact with the SharePoint experience
UI command extensions
Add new commands to the ribbon and item menus
26.
27. App shapes for SharePoint
Full page
Implement complete app experiences to satisfy business scenarios
Parts
Create app parts that can interact with the SharePoint experience
UI command extensions
Add new commands to the ribbon and item menus
31. Available REST Endpoints
Exchange &
Outlook.com
Calendar
Contacts
Mail
OneDrive
OneDrive for
Business
Active
Directory
Users
Groups
SharePoint
Client API
Search
Sites, Lists
and Libs
Taxonomy
BCSWorkflow
…
Sites
32. Common Consent Framework for Office
365
• Single Authentication flow for O365
• Azure AD Graph, Exchange, SharePoint
• Device apps and web apps
• 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
33. Discovering endpoints and API’s
36
Office 365 discovery services
Automatically determine URL of O365 services
Supports device app and website flows
Secured using Azure AD authentication
Serves information stored about services in AAD
Rich service metadata
Lists all Entities, Collections, Actions, Complex Types, Enums and
their Properties.
https://outlook.office365.com/api/v1.0/$metadata
34. • .NET SDK to build many types of apps using Visual Studio
.NET Windows Store Apps
Windows Forms Application
WPF Application
ASP.NET MVC Web Application
ASP.NET Web Forms Application
Xamarin Android and iOS Applications
Multi-device Hybrid Apps (Cordova)
• Android SDK & iOS SDK’s
Rich Tooling
40. Permissions
Read, Read+Write
Entities, Collections, Actions
Samples
https://graph.windows.net/contoso.com/users?api-version=1.5
https://graph.windows.net/contoso.com/groups?api-version=1.5
Users + Groups
Entity Collection Actions
User Users CRUD
Groups Groups CRUD
41. Rich Query Syntax using OData
Scenario URL
Get 5 messages from Inbox https://outlook.office365.com/api/v1.0/Me/Folders/Inbox/Messages?$top=5
Get the next 10 messages https://outlook.office365.com/api/v1.0/Me/Folders/Inbox/Messages?$top=10&$skip=5
Get top 10 messages sorted by
DateTimeCreated
https://outlook.office365.com/api/v1.0/Me/Folders/Inbox/Messages?$top=10&$orderby=DateTi
meCreated
Get selective properties on
messages
https://outlook.office365.com/api/v1.0/Me/Folders/Inbox/Messages?$top=5&$select=From,Dat
eTimeCreated,Subject
Get events starting after a
particular DateTime
https://outlook.office365.com/api/v1.0/Me/Events?$top=5&$select=Subject,Start,End&$filter=St
art ge 2014-09-22T20:00:00Z
Get Inbox messages with subject
and attachment info
https://outlook.office365.com/api/v1.0/Me/Folders/Inbox/Messages?$format=application/json;o
data.metadata=none&$select=Subject&$expand=Attachments
Get # of messages with
attachment(s)
https://outlook.office365.com/api/v1.0/Me/Folders/Inbox/Messages/$count?$filter=HasAttachm
ents eq true
Get count and selective propson
messages with attachment(s)
https://outlook.office365.com/v1.0/Me/Folders/Inbox/Messages?$format=application/json;odat
a.metadata=none&$select=Subject&$filter=HasAttachments%20eq%20true&$count=true
Get contact with a given name https://outlook.office365.com/v1.0/Me/Contacts/?$filter=Givenname eq ‘John’
44. Recap
Embed your customization in Office and SharePoint user
experience using Apps
Manipulate data in Office 365 from your standalone
apps using REST APIs
45. Resources
• Microsoft Virtual Academy
http://www.microsoftvirtualacademy.com/product-training/office-
development
• TechEd Europe 2014 sessions
http://www.dragan-panjkov.com/getting-started-with-office-365-
development-teched-europe-2014-session-resources
• ITUnity Article (Getting Started)
http://www.itunity.com/article/programming-office-365-apis-general-
availability-release-678
• GitHub Office Dev Repository
https://github.com/OfficeDev
• Office Dev portal
dev.office.com
Come and hear from Office 365 team on what they are doing this year to make Office 365 a great place for building solutions and products. Learn about what's new for developers in the Office 365 service and Office apps as well as all the tools and resources to help you move your customers custom code to the cloud.
1. Learn the key features that have shipped in the last 6 months on Office Development Platform
Office 2013 will continue to support the extensibility models of previous version of the Office suite. Some of these options included using things like COM Add-Ins, Macros, extensions built using Visual Studio Tools for Office (VSTO) or extending the ribbon. As with any new version, developers are strongly recommended to test these customizations in the latest version of Office 2013.
The new Office 2013 extensibility model that is recommended for developers to leverage when customizing Office 2013 is to build apps. An app is founded on standard Web technologies such as HTML & JavaScript. Because they are founded on web technologies, they can generally be used in both the Office 2013 desktop and web clients. This architecture also means that they are friendly to multiple devices since they are simply executing Web technologies.
The new model in Office 2013 of building apps includes three different types of apps for Office:
Task Pane
Content
Mail
There are three different high-level scenarios that this new model supports. Each builds on the previous scenario:
App for Office: This is the smallest unit of customization. Developers can build one of three types of Apps (Task Pane, Content or Contextual). These can be embedded within an Office application or within an Office document.
Document Template: A document template could consist of multiple apps installed in the template document, or require an app to be installed in the hosting application.
App for SharePoint: SharePoint apps can contain one or more document templates which in turn contain apps for Office.
The slide contains numerous examples of each extensibility scenario.
Office 2013 introduces a new extensibility option for developers to create custom business solutions. Developers can build an app for Office, new to Office 2013, to enhance the experience when users are working within Office 2013 clients. Unlike previous extensibility models in Office, apps for Office are founded on Web technologies and therefore, depending on the type of app, can be used in both the Office 2013 desktop clients as well as the online clients.
The basic components of an app for Office are an XML manifest file and a webpage. The manifest defines various settings and points to the webpage that implements the app UI and custom logic.
The HTML page can be published to any web server. The manifest file must point to the location of the webpage and be published to any of the following locations: the public Office Store, an internal SharePoint App Catalog, or a shared network location.
The manifest specifies settings and capabilities of the app, such as the following:
The URL of the webpage that implements the app UI and programming logic.
The app display name, description, ID, version, and default locale.
Whether the app can be shown as a task pane, in line with document content, or activated contextually in an email message, meeting request, or appointment.
The permission level and data access requirements for the app.
Using Visual Studio wizard to create simple app for Office just to show the tooling (basically New App For Office -> Next -> Next -> Finish)
Task Pane: A Task Pane app involves creating a task pane that runs in the left or right margin of the application. This type of extensibility option is a great solution when creating reference or lookup solutions within an application.
Content: A Content app involves adding content to a document. For instance, an Excel workbook could contain a list of stores with their addresses for a sales report. A content app within the workbook could show a map from Bing with pushpins for each of the sales locations.
Mail: A Mail app involves adding additional content based on the context of an item in Outlook. For instance an app could show a map from Bing Maps if it detects a physical address within an email.
Falafel Software EventBoard
When we are talking about architectural options for Apps for SharePoint, we can distinct several different approaches:
SharePoint Hosted Apps live inside SharePoint. They are deployed as sub-web of SharePoint site. From developer standpoint, SharePoint Hosted apps can use only JavaScript – no server-side code is allowed
Provider Hosted Apps can deploy App-web to SharePoint, but entire implementation has to be deployed to external servers. Those external servers can be Azure, IIS or even Apache.
This slide shows the primary ways your app will interact with Office 365 and SharePoint.
There are two sets of APIs available to developers.
One option is a pure RESTful endpoint that is modeled & implemented following the OData protocol. This enables you to use any technology, any language hosted on any infrastructure to interact with SharePoint.
Another option is to use the client side object mode, also known as CSOM. The CSOM is proxy that calls the same endpoint but at times offers additional functionality not provided in the REST API. This proxy comes in three favors: a .NET CLR library, a Silverlight library and a third library used in client-side JavaScript solutions (also referred to as the JSOM).
Using Visual Studio wizard to create simple app for SharePoint just to show the tooling (basically New App For SharePoint -> Next -> Next -> Finish -> F5)
The new SharePoint App Model gives developers three different ways to surface their app customizations within SharePoint sites.
The first option, a full page, is required for all apps. Think of this as the immersive experience where you can create an app that takes over the entire screen.
Even if your app is designed to only use the App Part or UI command extension options (both explained in a moment), you must still have a full page implementation. However this can simply be an “about me” or FAQ style page for your app customizations.
Another option for surfacing your customizations are app parts. To the end user, these look and act very much like web parts. However the content is rendered by your app that resides either in SharePoint or some remote location.
The final type of customization is a UI command extension. This can be implemented as a custom menu item in lists and libraries or as a new button or tab on in the ribbon.
Using DocuSign to sign a document stored on SharePoint online
Why do these API’s matter?
1. API’s offer you a potential to reach 100’s of millions of users with 100’s of petabytes of rich data.
Both the number of users and data is growing at a remarkable rate.
If you take Mail; today we support the API’s for Exchange online users, but very soon due to convergence, Outlook.com (previously Hotmail or the consumer side of the mail) are going to be on the same platform; and on-prem and hybrid users are in our roadmap.
These are engaged users who spend a lot of time creating, curating and consuming this data. For example, business critical Email, files, contacts along with how they organize their day using the calendar. These api’s throw open the door for you to crate apps that can access and manipulate this rich data across various platforms.
2. One of Microsoft’s key focus is “Cloud first-mobile-first” scenarios. These API’s are Web friendly and enable cross platform development especially for mobile and web-app developers. They are built for today’s modern platform with support for .Net, Android and iOS SDK’s out of the gate.
I should also mention that this is a growing list of API’s. We are working to integrate commercial and consumer endpoints and new Features and workloads like, Lync, Tasks, Yammer are in our roadmap.
3. One of key differentiators these API’s offer are the scoped permissions. It encourages adoption of your app by asking a user consent, only for areas that your app requires, not the old approach of 'keys to the whole kingdom'. For example, one user might be wary of allowing Mail Send privileges to an app, but perfectly fine with an app creating emails and stowing them away in draft folders for her to review and send herself.
4. One of the challenges with the soap API’s is that there is “No native support for SOAP in iOS/Android, relegating developers to either creating own rest proxy or relying on a no-serious off the shelf alternative.”
SOAP API’s tend to be difficult to learn (how many of you have used EWS before?) I know I did it a few years ago and found that it required quite a learning curve to do some basic operations.
But today app developers want to churn out an app over a weekend and don’t have the resources to spend on learning how to send/read an email for many days.
SOAP is also verbose and difficult to ramp up on where REST is easy to discover, learn and where JSON is minimal.
ODATA provides a standard framework to restify our services while providing great ways to query, filter, order, page your requests.
One of the key advantages of using these RESTful API’s is that though they are being offered from various workloads, such as Azure AD, Exchange and Sharepoint, they follow the same authentication flow. This allows you to have a unified view of these API’s and not worry about having a separate authentication and programming model for each of them.
You can create Device apps (or native apps) like Windows store or Android phone app, or a web app.
During preview we have had many customers integrate with our REST API’s.
For example Zapier, which offers an If this then that kind of service, integrated into Office 365 through their website and they did it in just days.
Apps can either register themselves to be Admin or end user consent. What it basically means is that you can decide when you register your app if every user in a tenant/org will have to give consent to your app. Or an Admin can give consent on behalf of all the users.
Rest API’s use Oauth 2.0, this is a pretty standard web protocol today. All major services today use this. For example, facebook uses it extensively to support third party access to facebook api’s.
The advantages are pretty well known: no need to capture creds, fine grained access control, like contacts.read, files.wite.
We also offer a discovery service for getting the endpoints.
For some of the api’s the endpoints are generally static, like for mail,calendar,contacts it is outlook.office365.com or for aad its graph.windows.net. But for files, it is based on tenant name which you can easily find using discovery.
As we have built our service on the odata protocol, it provides a rich service metadata which enables self discovery of the api. It lists all the entities, collections and actions that the service offers. You can also point tools to this metadata and generate client proxies, serializers, deserializers for various platforms including Mobile.
This is a sample of the metadata from our service.
Read permission does not mean you mark the email as read
Write permission is required to make any change to an email.
Send – users are wary to give this permission to others for sending mail hence the other permission
SendMail – after getting feedback on messagedisposition, we have introduced this during GA.
One of the key changes from preview is the introduction of versioning.
This is one the most popular api, calendar is complicated due to recurrence, the api’s make it dead simple to use.
Calendar workflows are automatically taken care of.
No permission bleeding –
if you delete a calendar event, you will not see it in deleted items.
Also no accept action on a mail event.
The goal is to let the service do the heavy lifting.
These are contacts in your mailbox, for users in your org, you should use users/groups ap
These are onedrive for business files.
Q: Get latest api version string from Dan.
Q: Check with Dan if he wants to call out anything specific in the talk.
Come and hear from Office 365 team on what they are doing this year to make Office 365 a great place for building solutions and products. Learn about what's new for developers in the Office 365 service and Office apps as well as all the tools and resources to help you move your customers custom code to the cloud.
1. Learn the key features that have shipped in the last 6 months on Office Development Platform