what is the best way to access calendar of microsoft exchange server 2016 from 3rd party client application? - exchangewebservices

We are trying to build a node js based client application to access calendar of microsoft on-premises exchange server 2016. We studied about outlook calendar api and Exchange Web Services(EWS). As I know, outlook calendar api is not allowed to access on-premises exchange server.
I want to know
Is there any way to use outlook calendar api to access calendar or
have to use EWS?
If we have to use EWS
Is there any good node js module for EWS ?
Does EWS provide all functionalities of calendar (such as outlook
calendar api provides all capability of calendar)?

you can not use outlook calendar api (Office 365 specific) to access on premises Exchange Servers, these are Office 365 only.
You can actually use ews with nodejs, take a look at ews-javascript-api module. This is complete port of c# counterpart.
EWS does provide all of the features you can do in Outlook, in fact Outlook for MAC is based on EWS only.
if you can be specific to what exactly you are trying to do, I can provide sample code. You can look at official EWS managed API documentation for code examples. most codes are valid except that you have to use promise style, see github readme and issues for more code samples.

Related

Exchange app permission is removed from Azure Portal

As per the MS forum https://techcommunity.microsoft.com/t5/exchange-team-blog/outlook-rest-api-beta-and-outlook-rest-api-v2-0-deprecation/ba-p/1898162, Exchange app permission "full_access_as_app" has been removed from the Azure portal. We are using this permission to access\fetch MSTeams data via Exchange Web Service API. We are planning to switch to Graph API from EWS but on Graph API, the chat list API not being supported, we could not switch to it.
That permission being removed - will it impact our existing app? I mean, our Azure Portal App uses this permission and our customers have already granted the consents so will that change impact our customer? Is there any timeline when that Exchange permission will be deprecated or will stop working? Is there any other alternative to this permission as a workaround?
The main reason for asking this question is: just recently MS has deprecated Basic Authentication to EWS so we switched to Modern Authentication (Oauth 2.0) to connect EWS where we had to use that Exchange app permission "full_access_as_app".
Now, that permission is not available for the newly created Azure App. Is this a move towards moving away from EWS and switching to Graph API?
The permissions are still available for new apps (even in the Azure portal if you go though API my organization uses and select "Office365 Exchange Online"). Also in the documentation link in that article https://learn.microsoft.com/en-us/exchange/client-developer/exchange-web-services/how-to-authenticate-an-ews-application-by-using-oauth they give a manual way of doing this through the manifest.
Now, that permission is not available for the newly created Azure App. Is this a move towards moving away from EWS and switching to Graph API?
Microsoft have been encouraging this move for quite a while (years) but no announcement have been made about the depreciation of EWS and given that for a lot of things (Migrations etc) there is no alternative in the Graph yet it won't be in the near future. And if it does eventually happen you should get at least a year or more notice. That said if you can use the Graph API you should be looking to move to it.

One Note API for office365 Home integration

I have a web application with which I want to integrate One Note.
My License is office 365 home.
Can I Integrate OneNote API with my PHP application with office 365 home subscription? or do we have to get some higher level subscription?
You should be able to. Try signing in with your account in the graph explorer and making a few API calls to get your OneNote content - you can quickly confirm that way.
https://developer.microsoft.com/en-us/graph/graph-explorer

How to tell when to use EWS vs rest API in Outlook Add-in

Is it possible to tell either in the XML file or through OfficeJs if the add-in can use the REST API or if it needs to use the older EWS API?
We have an Outlook add-in that needs to support OWA/O365 and Outlook 2016 with a stand alone exchange server. We are wondering if it is possible through the manifest XML file or through OfficeJs to detect the configuration of users account so we can properly access their content with the correct API. The only alternative I can see is to provide two separate add-ins for this, but I assume MS has a solution to this issue.
There isn't a specific API for detecting the server version. You could determine if REST is supported for a given mailbox by checking the value of Office.context.mailbox.restUrl. If this is an on-prem installation it won't return a value.
UPDATE:
If restUrl is returning a result (i.e. https://exch1.mailhost.com/api) then REST should available and could begin using the Outlook REST APIs.

Office 365 / Exchange API for windows phone 8/8.1 development project

I am working on a Windows Phone development project (wp8/wp8.1) and need to grab the user's Exchange/Office 365 calendar information. My quick research found the EWS API and Office 365 API preview cannot be used in Windows Phone projects.
Does anyone know any approach/API that I can use to make the oAuth authentication and data retrieving code easier?
Thank you.
Depending on what you're trying to do, you can either use the calendar object directly which can read info from the phone calendars : http://msdn.microsoft.com/en-us/library/windowsphone/develop/hh286421(v=vs.105).aspx this works, but you don't have any access to attachments for example and there's few others limitations.
Or if you target 8.1 : http://www.cloudidentity.com/blog/2014/04/16/calling-office365-api-from-a-windows-phone-8-1-app/
Or you can use the Exchange Web Services in SOAP or POX like you would do if developing for another platform. I can't post the link, but the reference is on the msdn.
Good luck with exchange development, it's quite a nightmare :)

Lotus Notes integration with a Java Portal Platform

I am using a Java based Portal Platform. I need to show within my portal information stored in Lotus Notes. Considering security issues, what are the recommended ways to do this?
Are there any open source JSR 168 portlets out there that integrate with Lotus Notes?
From my portal platform, I can call web services to get this information. Is this recommended? If so where can I find information about web service APIĀ“s available for Lotus Notes?
Are there any java components that I can install on my portal platform that will make available a java API to access Lotus Notes information?
You have two main options.
First you can talk to Domino (Notes is the client, Domino is the server) directly using the CORBA java interface over IIOP. This will give you full access to the Domino object model and allow you to write the code to do whatever it is you need to do in your java platform.
Secondly you could go over web services. This will be much easier to set up, but you will have to deploy code for what ever it is you want to do on the Domino server. In ND7 and up Domino will build all the web service elements for you from a WSDL or method stub.
From a security point of view, the user connecting to the service will need to be authenticated with Domino. This could be a system account or the actual user if you can proxy the login through.
Another angle I've seen is to just proxy HTTP calls through the portlet to Domino.
Assuming you have SSO setup between portal and domino the simplest solution is to use the Notes View Portlet included with portal. If you need to show the data in a more customized format then I would suggest to use portlet factory. If neither of the previous work for you then you should be able to develop a custom portet using RAD and the notes java api.