Tag Archives: availability

Deep dive # 2–Office 365 Management API


Continuation of earlier post, https://lecafedeva.wordpress.com/2019/06/03/deep-dive-1-office-365-management-api/

Now let’s work with Office 365 Management Activity API

The Office 365 Management Activity API aggregates actions and events into tenant-specific content blobs, which are classified by the type and source of the content they contain. Currently, these content types are supported:

  • Audit.AzureActiveDirectory

  • Audit.Exchange

  • Audit.SharePoint

  • Audit.General (includes all other workloads not included in the previous content types)

  • DLP.All (DLP events only for all workloads)

How to get started?

To begin retrieving content blobs for a tenant, you first a create subscription to the desired content types. If you are retrieving content blobs for multiple tenants, you create multiple subscriptions to each of the desired content types, one for each tenant.

After you create a subscription, you can poll regularly to discover new content blobs that are available for download, or you can register a webhook endpoint with the subscription and we will send notifications to this endpoint as new content blobs are available.

Please remember, that when a subscription is created, it can take up to 12 hours for the first content blobs to become available for that subscription. The content blobs are created by collecting and aggregating actions and events across multiple servers and datacenters. As a result of this distributed process, the actions and events contained in the content blobs will not necessarily appear in the order in which they occurred. One content blob can contain actions and events that occurred prior to the actions and events contained in an earlier content blob. We are working to decrease the latency between the occurrence of actions and events and their availability within a content blob, but we can’t guarantee that they appear sequentially.

Microsoft Graph API developer – Using GetSchedule API to get free/busy availability information


Now you can use the GetSchedule API (when I publish this article, its available in /beta endpoint) to get the free/busy availability information for a collection of users, distributions lists, or resources, for a specified time period.

You can use it simply by calling,

POST /me/calendar/getSchedule
POST /users/{id|userPrincipalName}/calendar/getSchedule


Let me play with this API call and try to get the availability information for two users for the specified date, time, and time zone.

Request body:

{       
      “schedules”: [“alex@djayasee.onmicrosoft.com”, “alexw@djayasee.onMicrosoft.com”],
      “startTime”: {
          “dateTime”: “2018-09-26T04:00:00”,
          “timeZone”: “Pacific Standard Time”
      },
      “endTime”: {
          “dateTime”: “2018-09-27T14:00:00”,
          “timeZone”: “Pacific Standard Time”
      },
      “availabilityViewInterval”: “15”

}

Response:

Once the above  request is successfully process, you will get 200 OK response code and get the availability info (just like the below).

{
      “@odata.context”: “https://graph.microsoft.com/beta/$metadata#Collection(microsoft.graph.scheduleInformation)”,
      “value”: [
          {
              “scheduleId”: “alex@djayasee.onmicrosoft.com”,
              “availabilityView”: “0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002222222222222222222200000000”,
              “scheduleItems”: [
                  {
                      “isPrivate”: false,
                      “status”: “busy”,
                      “subject”: “Test Meeting”,
                      “location”: “Test Meeting”,
                      “start”: {
                          “dateTime”: “2018-09-27T07:00:00.0000000”,
                          “timeZone”: “Pacific Standard Time”
                      },
                      “end”: {
                          “dateTime”: “2018-09-27T12:00:00.0000000”,
                          “timeZone”: “Pacific Standard Time”
                      }
                  }
              ],
              “workingHours”: {
                  “daysOfWeek”: [
                      “monday”,
                      “tuesday”,
                      “wednesday”,
                      “thursday”,
                      “friday”
                  ],
                  “startTime”: “09:00:00.0000000”,
                  “endTime”: “17:30:00.0000000”,
                  “timeZone”: {
                      “@odata.type”: “#microsoft.graph.customTimeZone”,
                      “bias”: 480,
                      “name”: “Customized Time Zone”,
                      “standardOffset”: {
                          “time”: “02:00:00.0000000”,
                          “dayOccurrence”: 1,
                          “dayOfWeek”: “sunday”,
                          “month”: 11,
                          “year”: 0
                      },
                      “daylightOffset”: {
                          “daylightBias”: -60,
                          “time”: “02:00:00.0000000”,
                          “dayOccurrence”: 2,
                          “dayOfWeek”: “sunday”,
                          “month”: 3,
                          “year”: 0
                      }
                  }
              }
          },
          {
              “scheduleId”: “alexw@djayasee.OnMicrosoft.com”,
              “availabilityView”: “0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002222222222222222222200000000”,
              “scheduleItems”: [
                  {
                      “isPrivate”: false,
                      “status”: “busy”,
                      “subject”: “Test Meeting”,
                      “location”: “Test Meeting”,
                      “start”: {
                          “dateTime”: “2018-09-27T07:00:00.0000000”,
                          “timeZone”: “Pacific Standard Time”
                      },
                      “end”: {
                          “dateTime”: “2018-09-27T12:00:00.0000000”,
                          “timeZone”: “Pacific Standard Time”
                      }
                  }
              ],
              “workingHours”: {
                  “daysOfWeek”: [
                      “monday”,
                      “tuesday”,
                      “wednesday”,
                      “thursday”,
                      “friday”
                  ],
                  “startTime”: “09:00:00.0000000”,
                  “endTime”: “17:30:00.0000000”,
                  “timeZone”: {
                      “@odata.type”: “#microsoft.graph.customTimeZone”,
                      “bias”: 480,
                      “name”: “Customized Time Zone”,
                      “standardOffset”: {
                          “time”: “02:00:00.0000000”,
                          “dayOccurrence”: 1,
                          “dayOfWeek”: “sunday”,
                          “month”: 11,
                          “year”: 0
                      },
                      “daylightOffset”: {
                          “daylightBias”: -60,
                          “time”: “02:00:00.0000000”,
                          “dayOccurrence”: 2,
                          “dayOfWeek”: “sunday”,
                          “month”: 3,
                          “year”: 0
                      }
                  }
              }
          }
      ]

}

Note:
As you aware, APIs under the /beta version in Microsoft Graph are in preview and are subject to change. Use of these APIs in production applications is not supported.

Hope this helps.

Office 365 developer – Outlook version requirements for actionable messages, adaptive cards


In the last post I updated how you can develop actionable messages and make use of it . So the actionable messages enable you to take quick actions right from within the Outlook (its also available in Microsoft teams as well).

The developers can embed actions in their emails or notifications, elevating user engagement with their services and increasing the productivity. Most of the times I notice the developers create these actionable messages or adaptive card and failed to see why its working in Outlook on the web for Office 365, but not with their Office 365 Proplus. So I thought to blog this developer related info which they should be aware of.

Le Café Central de DeVa - Deva blogs…

Let me take this example –  in recent times I was assisting a developer who designed the actionable messages and its working in Outlook on the Web for Office 365 client, but not at Outlook 2016 for mac/iOS/android clients.

As I updated earlier, actionable messages are available to all customer mailboxes on Exchange Online in Office 365 with a supported client. So we documented a table lists the availability of actionable messages and adaptive cards supported for the current outlook clients. I pointed the above developer to the article – so that he checked out the table, the respective client and confirmed whether the actionable messages/adaptive card feature is supported (availability) in the given client or not. It helped him to understand and move forward.

Please note, if you’re using Office 365 Proplus – check out whether you’re into which channel (Monthly/Semi-annual/Semi annual targeted) and validate the build numbers against the above table.

Hope this helps.

Microsoft Graph API developer – Using GetSchedule API to get free/busy availability information


Now you can use the GetSchedule API (when I publish this article, its available in /beta endpoint) to get the free/busy availability information for a collection of users, distributions lists, or resources, for a specified time period.

You can use it simply by calling,

POST /me/calendar/getSchedule
POST /users/{id|userPrincipalName}/calendar/getSchedule

Let me play with this API call and try to get the availability information for two users for the specified date, time, and time zone.

Request body:

{       
     “schedules”: [“alex@djayasee.onmicrosoft.com”, “alexw@djayasee.onMicrosoft.com”],
     “startTime”: {
         “dateTime”: “2018-09-26T04:00:00”,
         “timeZone”: “Pacific Standard Time”
     },
     “endTime”: {
         “dateTime”: “2018-09-27T14:00:00”,
         “timeZone”: “Pacific Standard Time”
     },
     “availabilityViewInterval”: “15”
}

Response:

Once the above  request is successfully process, you will get 200 OK response code and get the availability info (just like the below).

{
     “@odata.context”: “https://graph.microsoft.com/beta/$metadata#Collection(microsoft.graph.scheduleInformation)”,
     “value”: [
         {
             “scheduleId”: “alex@djayasee.onmicrosoft.com”,
             “availabilityView”: “0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002222222222222222222200000000”,
             “scheduleItems”: [
                 {
                     “isPrivate”: false,
                     “status”: “busy”,
                     “subject”: “Test Meeting”,
                     “location”: “Test Meeting”,
                     “start”: {
                         “dateTime”: “2018-09-27T07:00:00.0000000”,
                         “timeZone”: “Pacific Standard Time”
                     },
                     “end”: {
                         “dateTime”: “2018-09-27T12:00:00.0000000”,
                         “timeZone”: “Pacific Standard Time”
                     }
                 }
             ],
             “workingHours”: {
                 “daysOfWeek”: [
                     “monday”,
                     “tuesday”,
                     “wednesday”,
                     “thursday”,
                     “friday”
                 ],
                 “startTime”: “09:00:00.0000000”,
                 “endTime”: “17:30:00.0000000”,
                 “timeZone”: {
                     “@odata.type”: “#microsoft.graph.customTimeZone”,
                     “bias”: 480,
                     “name”: “Customized Time Zone”,
                     “standardOffset”: {
                         “time”: “02:00:00.0000000”,
                         “dayOccurrence”: 1,
                         “dayOfWeek”: “sunday”,
                         “month”: 11,
                         “year”: 0
                     },
                     “daylightOffset”: {
                         “daylightBias”: -60,
                         “time”: “02:00:00.0000000”,
                         “dayOccurrence”: 2,
                         “dayOfWeek”: “sunday”,
                         “month”: 3,
                         “year”: 0
                     }
                 }
             }
         },
         {
             “scheduleId”: “alexw@djayasee.OnMicrosoft.com”,
             “availabilityView”: “0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002222222222222222222200000000”,
             “scheduleItems”: [
                 {
                     “isPrivate”: false,
                     “status”: “busy”,
                     “subject”: “Test Meeting”,
                     “location”: “Test Meeting”,
                     “start”: {
                         “dateTime”: “2018-09-27T07:00:00.0000000”,
                         “timeZone”: “Pacific Standard Time”
                     },
                     “end”: {
                         “dateTime”: “2018-09-27T12:00:00.0000000”,
                         “timeZone”: “Pacific Standard Time”
                     }
                 }
             ],
             “workingHours”: {
                 “daysOfWeek”: [
                     “monday”,
                     “tuesday”,
                     “wednesday”,
                     “thursday”,
                     “friday”
                 ],
                 “startTime”: “09:00:00.0000000”,
                 “endTime”: “17:30:00.0000000”,
                 “timeZone”: {
                     “@odata.type”: “#microsoft.graph.customTimeZone”,
                     “bias”: 480,
                     “name”: “Customized Time Zone”,
                     “standardOffset”: {
                         “time”: “02:00:00.0000000”,
                         “dayOccurrence”: 1,
                         “dayOfWeek”: “sunday”,
                         “month”: 11,
                         “year”: 0
                     },
                     “daylightOffset”: {
                         “daylightBias”: -60,
                         “time”: “02:00:00.0000000”,
                         “dayOccurrence”: 2,
                         “dayOfWeek”: “sunday”,
                         “month”: 3,
                         “year”: 0
                     }
                 }
             }
         }
     ]
}

Note:
As you aware, APIs under the /beta version in Microsoft Graph are in preview and are subject to change. Use of these APIs in production applications is not supported.

Hope this helps.

Office Developer: Which build of Microsoft Office do I need in order to get that cool API or requirement set?


 

 

 

 

This is one of the regular query raised by various developer customers, “Which build of Office do I need in order to get that cool API or requirement set?”. 

Ok, here is the published guidance that addresses that question.

Check out these topics:

Keep visit our Office Dev center, to see more updated API ref topics to cross-link to each requirement set page.

Happy Office developer guidance Smile

Availability Web Service Protocol Specification References


Information for the availability service is provided via our open specifications document: [MS-OXWAVLS].
Information for the security model used in the availability service, please reference the following document: [MS-OXCPERM].

For more info, you can refer:

Availability Web Services Protocol specification: http://msdn.microsoft.com/en-us/library/cc463891(v=exchg.80).aspx or http://download.microsoft.com/download/5/D/D/5DD33FDF-91F5-496D-9884-0A0B0EE698BB/[MS-OXWAVLS].pdf or http://download.microsoft.com/download/5/D/D/5DD33FDF-91F5-496D-9884-0A0B0EE698BB/Exchange_Protocols.zip.

Migration: Exchange Public folders and its future


Public Folders are used in earlier versions of Microsoft Exchange Server to store free/busy data and files. From Microsoft Exchange Server 2007, free/busy data is no longer stored in public folders. It’s recommend that you do not store files in public folders in Exchange 2007. Instead, consider using Microsoft Office SharePoint, or Windows SharePoint Services. Public folders are included and supported in Exchange 2007 and 2010. However, future releases of Microsoft Exchange might not include public folders. You can visit http://blogs.technet.com/b/exchange/archive/2006/02/20/419994.aspx. Also, you can refer MS Exchange team blog have posted the updated public folder guidance for versions of Exchange past Exchange 2007.

So, what are my options?

If you’re building something new, you should look at the requirements and building on the SharePoint Technologies platform:

+ Starting with Exchange 2007, we recommend that applications use the Availability service to provide free/busy data for Exchange mailbox users. Windows SharePoint Services replaces the file sharing functionality that public folders provide. You must redesign applications that use public folders to use Exchange Web Services.
+ Also consider redesigning custom applications as early as possible as future versions of Microsoft Exchange may not contain public folders.
+ In addition to that you can refer the wonderful blogpost by Joel.

How to get the EWS endpoint URL from Outlook 2007/2010?


You can try the following steps to get the EWS endpoint URL from Outlook 2007 or 2010:

  • CTRL+Right click the Outlook icon in the notification area in the lower right-hand area of the screen. You can notice the following window:

image

  • Select Test E-mail Auto configuration.
  • Enter your email address and password.
  • Select the Use AutoDiscover box (you can uncheck the other boxes).
  • Select the Test button.

image

  • In the results window, you can see the Availability Service URL  Smile