<?xml version="1.0" encoding="utf-8"?>
<rss xmlns:atom="https://www.w3.org/2005/Atom" xmlns:sy="https://purl.org/rss/1.0/modules/syndication/" xmlns:dc="https://purl.org/dc/elements/1.1/" xmlns:content="https://purl.org/rss/1.0/modules/content/" xmlns:wfw="https://wellformedweb.org/CommentAPI/" xmlns:slash="https://purl.org/rss/1.0/modules/slash/"
  version="2.0">
  <channel>
    <title>Outlook and Exchange dev blog</title>
    <atom:link
      href="https://docs.microsoft.com/archive/blogs/exchangedev/feed.xml"
      rel="self"
      type="application/rss+xml" />
    <link>https://docs.microsoft.com/archive/blogs/exchangedev/feed.xml</link>
    <description>The official Microsoft blog for Outlook, Exchange developers for both On-Premises and Office 365</description>
    <lastBuildDate>Thu, 09 Aug 2018 18:22:45 GMT</lastBuildDate>
    <language>en-US</language>
    <sy:updatePeriod>hourly</sy:updatePeriod>
    <sy:updateFrequency>1</sy:updateFrequency>
    <item>
      <title>Error improvement for invalid X-AnchorMailbox in REST API calls</title>
      <link>https://docs.microsoft.com/archive/blogs/exchangedev/error-improvement-for-invalid-x-anchormailbox-in-rest-api-calls</link>
      <pubDate>Fri, 19 Jan 2018 14:58:52 GMT</pubDate>
      <dc:creator><![CDATA[Jason Johnston [MSFT]]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/exchangedev/?p=1765</guid>
      <description><![CDATA[Update 1/29: Based on feedback, we've adjusted the HTTP status code to 400 instead of 421. All other...]]></description>
      <content:encoded><![CDATA[<strong>Update 1/29: </strong>Based on feedback, we've adjusted the HTTP status code to <code>400</code> instead of <code>421</code>. All other details remain the same.

We wanted to give you a heads-up on a recent change to the error returned by the Outlook REST API when the value of the <code>X-AnchorMailbox</code> is incorrect. If your app has error-handling for this scenario based on the current behavior of the service, this may be a breaking change.

Starting immediately, the service will start returning a <code>400 Bad Request</code> status instead of a <code>503 Service Unavailable</code>. The intent of this change is to return a more appropriate HTTP status and to make it easier for developers to detect why the request failed and fix the problem.
<h2 id="old-behavior">Old behavior</h2>
Prior to this change, sending a REST API request with an incorrect <code>X-AnchorMailbox</code> header would result in the following response.
<pre><code>HTTP/1.1 503 Service Unavailable

{
  "error": {
    "code": "MailboxInfoStale",
    "message": "Mailbox info is stale."
  }
}
</code></pre>
<h2 id="new-behavior">New behavior</h2>
With this change, if your app receives a <code>400</code> HTTP status from a REST call, you should check the response body for an <code>error</code> object, then check the <code>code</code> property. If it is <code>ErrorIncorrectRoutingHint</code>, the value you sent in the <code>X-AnchorMailbox</code> is incorrect.
<pre><code>HTTP/1.1 400 Bad Request

{
  "error": {
    "code": "ErrorIncorrectRoutingHint",
    "message": "The x-anchor mailbox 'jason@contoso.com' does not match the target of the request."
  }
}
</code></pre>
<h2 id="handling-the-error">Handling the error</h2>
If your app gets this error, it is recommended that you get the user's mailbox GUID and use that for the <code>X-AnchorMailbox</code> value, instead of the user's SMTP address. You can get the user's mailbox GUID by making the following REST request (with no <code>X-AnchorMailbox</code> header):
<pre><code>GET https://outlook.office.com/api/v2.0/me
</code></pre>
This will return the following response:
<pre><code class="lang-json">{
  "Id": "3c7f0e3a-623b-85ae-4032-07d41531beff@7aeb6117-c342-4861-bec7-f8803ae85e41",
  "EmailAddress": "jason@contoso.onmicrosoft.com",
  "DisplayName": "Jason Johnston",
  "Alias": "jason",
  "MailboxGuid": "fece2b65-3577-4972-bf3d-5594fc9c9f9e"
}
</code></pre>
You would then use the value of <code>MailboxGuid</code> in the <code>X-AnchorMailbox</code> for subsequent REST calls.
<pre><code>GET https://outlook.office.com/api/v2.0/me/messages

X-AnchorMailbox: fece2b65-3577-4972-bf3d-5594fc9c9f9e
</code></pre>]]></content:encoded>
    </item>
    <item>
      <title>Announcing add-in support for Gmail accounts in Mac Outlook</title>
      <link>https://docs.microsoft.com/archive/blogs/exchangedev/announcing-add-in-support-for-gmail-accounts-in-mac-outlook</link>
      <pubDate>Thu, 14 Dec 2017 09:11:56 GMT</pubDate>
      <dc:creator><![CDATA[Jason Johnston [MSFT]]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/exchangedev/?p=1747</guid>
      <description><![CDATA[In March, we announced support for Gmail accounts in Outlook 2016 for Mac. Today we're happy to...]]></description>
      <content:encoded><![CDATA[In March, we announced <a href="https://blogs.office.com/en-us/2017/03/01/outlook-2016-for-mac-adds-support-for-google-calendar-and-contacts/">support for Gmail accounts in Outlook 2016 for Mac</a>. Today we're happy to announce preview add-in support for Gmail accounts in Outlook 2016 for Mac.
<h2 id="limitations">Limitations</h2>
When add-ins are loaded in a Gmail mailbox, there are a few limitations to take into account.
<ul>
 	<li>You cannot use Exchange Web Services (EWS) to access items in the Gmail mailbox. This means that you cannot use <code>makeEwsRequestAsync</code> or use an EWS callback token from <code>getCallbackTokenAsync</code> to make EWS calls directly. Instead, you can get the same type of access to the items in the mailbox by <a href="https://docs.microsoft.com/outlook/add-ins/use-rest-api">using the Outlook REST APIs</a>.</li>
 	<li>You cannot get a single-sign-on token using <code>getAccessTokenAsync</code>. Instead, you can use the <a href="https://docs.microsoft.com/outlook/add-ins/authenticate-a-user-with-an-identity-token">Exchange identity token</a>.</li>
</ul>
<h2 id="new-api-features">New API features</h2>
In order to allow your add-in to determine what type of mailbox it is loaded in, we've added a new property to <a href="https://dev.office.com/reference/add-ins/outlook/preview/Office.context.mailbox.userProfile?product=outlook&amp;version=preview">Office.context.mailbox.userProfile</a> called <code>accountType</code>. This property is a string and can return one of the following values:
<table>
<thead>
<tr>
<th>Value</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><code>enterprise</code></td>
<td>The mailbox is on an on-premises Exchange server.</td>
</tr>
<tr>
<td><code>gmail</code></td>
<td>The mailbox is associated with a Gmail account.</td>
</tr>
<tr>
<td><code>office365</code></td>
<td>The mailbox is associated with an Office 365 work or school account.</td>
</tr>
<tr>
<td><code>outlookCom</code></td>
<td>The mailbox is associated with a personal Outlook.com account.</td>
</tr>
</tbody>
</table>

<p /><p><strong>Note:</strong> This property is currently only implemented in Outlook 2016 for Mac.</p>
<h2 id="get-access-to-the-preview">Get access to the preview</h2>
Preview add-in support for Gmail mailboxes is available for users that are part of the <a href="https://products.office.com/en-in/office-insider?tab=Mac">Office Insider Fast program</a>. The minimum build number is 16.9.1212.
<h2 id="call-to-action">Call to action</h2>
Other than accounting for the above limitations, there are no specific changes that need to be made in order for your add-in to work in Gmail mailboxes. However, if your add-in is listed in the Office Store, you'll need to resubmit it for validation before it will show up in the store for Gmail users.

Try your add-in with a Gmail mailbox today, and give us feedback on <a href="https://officespdev.uservoice.com/">UserVoice</a>.]]></content:encoded>
    </item>
    <item>
      <title>New Outlook APIs in the Microsoft Graph: rooms, rules, categories, headers, and time zones</title>
      <link>https://docs.microsoft.com/archive/blogs/exchangedev/new-outlook-apis-in-the-microsoft-graph-rooms-rules-categories-headers-and-time-zones</link>
      <pubDate>Mon, 09 Oct 2017 08:41:34 GMT</pubDate>
      <dc:creator><![CDATA[Jason Johnston [MSFT]]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/exchangedev/?p=1735</guid>
      <description><![CDATA[In June, we announced new APIs in the beta endpoint of the Outlook REST API. Today we're excited to...]]></description>
      <content:encoded><![CDATA[In June, we <a href="https://blogs.msdn.microsoft.com/exchangedev/2017/06/30/announcing-new-rest-apis-in-beta-for-rooms-time-zones-and-languages/">announced new APIs</a> in the beta endpoint of the Outlook REST API. Today we're excited to announce that those APIs have been added to the Microsoft Graph, along with some other highly-requested APIs. All of these new APIs are added to the beta version of the Microsoft Graph API.

Try these new APIs out today, either in your code or in the <a href="https://developer.microsoft.com/en-us/graph/graph-explorer">Graph Explorer</a>. Leave feedback on the new APIs on <a href="https://officespdev.uservoice.com/">UserVoice</a>.
<h2 id="rules">Rules</h2>
The Microsoft Graph API has added mailbox rule support via the Rules API. By using this API, apps can now <a href="https://developer.microsoft.com/en-us/graph/docs/api-reference/beta/api/mailfolder_list_messagerules">list a user's rules</a> and <a href="https://developer.microsoft.com/en-us/graph/docs/api-reference/beta/api/mailfolder_post_messagerules">create new rules</a>.
<h3 id="get-rules">Get inbox rules</h3>
<strong>Request</strong>
[js]
GET https://graph.microsoft.com/beta/me/mailFolders/inbox/messagerules
[/js]
<strong>Response</strong>
[js]
{
  &quot;value&quot;: [
    {
      &quot;id&quot;: &quot;AQAAAPUfKuc=&quot;,
      &quot;displayName&quot;: &quot;Chris Gray&quot;,
      &quot;sequence&quot;: 1,
      &quot;isEnabled&quot;: true,
      &quot;hasError&quot;: false,
      &quot;isReadOnly&quot;: false,
      &quot;conditions&quot;: {
        &quot;fromAddresses&quot;: [
          {
            &quot;emailAddress&quot;: {
              &quot;name&quot;: &quot;Chris Gray&quot;,
              &quot;address&quot;: &quot;chrisg@contoso.onmicrosoft.com&quot;
            }
          }
        ]
      },
      &quot;actions&quot;: {
        &quot;moveToFolder&quot;: &quot;AAMkAGZj....&quot;,
        &quot;stopProcessingRules&quot;: true
      }
    }
  ]
}
[/js]
<h3 id="create-rules">Create inbox rule</h3>
<strong>Request</strong>
[js]
POST https://graph.microsoft.com/beta/me/mailFolders/inbox/messagerules

{    
  &quot;displayName&quot;: &quot;From partner&quot;,    
  &quot;sequence&quot;: 2,    
  &quot;isEnabled&quot;: true,      
  &quot;conditions&quot;: {
    &quot;senderContains&quot;: [
      &quot;adele&quot;     
    ]
   },
   &quot;actions&quot;: {
    &quot;forwardTo&quot;: [
      {
       &quot;emailAddress&quot;: {
        &quot;name&quot;: &quot;Alex Wilbur&quot;,
        &quot;address&quot;: &quot;AlexW@contoso.onmicrosoft.com&quot;
        }
       }
    ],
    &quot;stopProcessingRules&quot;: true
   }  
}
[/js]
<strong>Response</strong>
[js]
{
  &quot;id&quot;: &quot;AQAAAPUfKuk=&quot;,
  &quot;displayName&quot;: &quot;From partner&quot;,
  &quot;sequence&quot;: 2,
  &quot;isEnabled&quot;: true,
  &quot;hasError&quot;: false,
  &quot;isReadOnly&quot;: false,
  &quot;conditions&quot;: {
    &quot;senderContains&quot;: [
      &quot;ADELE&quot;
    ]
  },
  &quot;actions&quot;: {
    &quot;stopProcessingRules&quot;: true,
    &quot;forwardTo&quot;: [
      {
        &quot;emailAddress&quot;: {
          &quot;name&quot;: &quot;Alex Wilbur&quot;,
          &quot;address&quot;: &quot;AlexW@contoso.onmicrosoft.com&quot;
        }
      }
    ]
  }
}
[/js]
<h2 id="categories">Categories</h2>
The Microsoft Graph API has added access to the master categories list in a user's mailbox via the Categories API. By using this API, apps can now <a href="https://developer.microsoft.com/en-us/graph/docs/api-reference/beta/api/outlookuser_list_mastercategories">get the user's master category list</a> and <a href="https://developer.microsoft.com/en-us/graph/docs/api-reference/beta/api/outlookuser_post_mastercategories">add new categories</a>.
<h3 id="get-categories">Get master category list</h3>
<strong>Request</strong>
[js]
GET https://graph.microsoft.com/beta/me/outlook/masterCategories
[/js]
<strong>Response</strong>
[js]
{
  &quot;value&quot;: [
    {
      &quot;id&quot;: &quot;24ed9127-fe16-412d-9870-5efea8a2e8fc&quot;,
      &quot;displayName&quot;: &quot;Red category&quot;,
      &quot;color&quot;: &quot;preset0&quot;
    },
    {
      &quot;id&quot;: &quot;7fd099e2-7526-4edf-98e8-35ce90277496&quot;,
      &quot;displayName&quot;: &quot;Orange category&quot;,
      &quot;color&quot;: &quot;preset1&quot;
    },
    ...
  ]
}
[/js]
<h3 id="get-categories">Create category</h3>
<strong>Request</strong>
[js]
POST https://graph.microsoft.com/beta/me/outlook/masterCategories

{
  &quot;displayName&quot;: &quot;Project expenses&quot;,
  &quot;color&quot;: &quot;preset9&quot;
}
[/js]
<strong>Response</strong>
[js]
{
  &quot;id&quot;: &quot;2393a824-ec66-46fb-88c3-5b455474d57c&quot;,
  &quot;displayName&quot;: &quot;Project expenses&quot;,
  &quot;color&quot;: &quot;preset9&quot;
}
[/js]
<h2 id="message-headers">Message headers</h2>
The Microsoft Graph API has added the RFC5322 message headers to the <a href="https://developer.microsoft.com/en-us/graph/docs/api-reference/beta/resources/message">message resource</a>. The headers are available in the <code>internetMessageHeaders</code> property, which is a collection of <a href="https://developer.microsoft.com/en-us/graph/docs/api-reference/beta/resources/internetmessageheader">internetMessageHeader resources</a>. The <code>internetMessageHeaders</code> property is not in the default property set for messages, so you must request it explicitly using the <code>$select</code> query parameter.
<h3 id="get-message-headers">Get message headers</h3>
<strong>Request</strong>
[js]
GET https://graph.microsoft.com/beta/me/messages/{message-id}?$select=subject,internetMessageHeaders
[/js]
<strong>Response</strong>
[js]
{
  &quot;id&quot;: &quot;AAMkAGZj...&quot;,
  &quot;subject&quot;: &quot;Vacation request&quot;,
  &quot;internetMessageHeaders&quot;: [
    {
      &quot;name&quot;: &quot;MIME-Version&quot;,
      &quot;value&quot;: &quot;1.0&quot;
    },
    {
      &quot;name&quot;: &quot;Date&quot;,
      &quot;value&quot;: &quot;Wed, 4 Oct 2017 10:32:27 -0400&quot;
    },
    ...
  ]
}
[/js]

<h2 id="meeting-rooms">Meeting rooms</h2>
The previously announced Rooms API from the Outlook endpoint is now available on the Microsoft Graph. We've added the ability to find both <a href="https://developer.microsoft.com/en-us/graph/docs/api-reference/beta/api/user_findrooms">rooms</a> and <a href="https://developer.microsoft.com/en-us/graph/docs/api-reference/beta/api/user_findroomlists">room lists</a>.
<h3 id="get-room-lists">Get room lists</h3>
<strong>Request</strong>
[js]
GET https://graph.microsoft.com/beta/me/findroomlists
[/js]
<strong>Response</strong>
[js]
{
  &quot;value&quot;: [
    {
      &quot;name&quot;: &quot;Building 1 Rooms&quot;,
      &quot;address&quot;: &quot;Building1Rooms@contoso.onmicrosoft.com&quot;
    },
    {
      &quot;name&quot;: &quot;Building 2 Rooms&quot;,
      &quot;address&quot;: &quot;Building2Rooms@contoso.onmicrosoft.com&quot;
    }
  ]
}
[/js]
<h3 id="get-rooms">Get rooms</h3>
<strong>Request (all rooms)</strong>
[js]
GET https://graph.microsoft.com/beta/me/findrooms
[/js]
<strong>Request (rooms in a room list)</strong>
[js]
GET https://graph.microsoft.com/beta/me/findrooms(roomlist='Building1Rooms@contoso.onmicrosoft.com')
[/js]
<strong>Response</strong>
[js]
{
  &quot;value&quot;: [
    {
      &quot;name&quot;: &quot;Conf Room Adams&quot;,
      &quot;address&quot;: &quot;Adams@contoso.onmicrosoft.com&quot;
    },
    {
      &quot;name&quot;: &quot;Conf Room Crystal&quot;,
      &quot;address&quot;: &quot;Crystal@contoso.onmicrosoft.com&quot;
    },
    {
      &quot;name&quot;: &quot;Conf Room Stevens&quot;,
      &quot;address&quot;: &quot;Stevens@contoso.onmicrosoft.com&quot;
    }
  ]
}
[/js]
<h2 id="time-zones">Time zones</h2>
The previously announced Time Zones API from the Outlook endpoint is now available on the Microsoft Graph. Apps can <a href="https://developer.microsoft.com/en-us/graph/docs/api-reference/beta/api/outlookuser_supportedtimezones">request a list of all supported time zones from the server</a>, in either Windows or IANA format.

<strong>Request</strong>
[js]
GET https://graph.microsoft.com/beta/me/outlook/supportedTimeZones
[/js]
<strong>Response</strong>
[js]
{
  &quot;value&quot;: [
    {
      &quot;alias&quot;: &quot;Dateline Standard Time&quot;,
      &quot;displayName&quot;: &quot;(UTC-12:00) International Date Line West&quot;
    },
    {
      &quot;alias&quot;: &quot;Samoa Standard Time&quot;,
      &quot;displayName&quot;: &quot;(UTC+13:00) Samoa&quot;
    },
    {
      &quot;alias&quot;: &quot;UTC-11&quot;,
      &quot;displayName&quot;: &quot;(UTC-11:00) Coordinated Universal Time-11&quot;
    },
    {
      &quot;alias&quot;: &quot;Aleutian Standard Time&quot;,
      &quot;displayName&quot;: &quot;(UTC-10:00) Aleutian Islands&quot;
    },
    ...
  ]
}
[/js]
<h2 id="languages">Languages</h2>
The previously announced Languages API from the Outlook endpoint is now available on the Microsoft Graph. With this API, apps can <a href="https://developer.microsoft.com/en-us/graph/docs/api-reference/beta/api/outlookuser_supportedlanguages">request a list of supported languages</a> from the server.

<strong>Request</strong>
[js]
GET https://graph.microsoft.com/beta/me/outlook/supportedLanguages
[/js]
<strong>Response</strong>
[js]{
  &quot;value&quot;: [
    {
      &quot;locale&quot;: &quot;af-ZA&quot;,
      &quot;displayName&quot;: &quot;Afrikaans (Suid-Afrika)&quot;
    },
    {
      &quot;locale&quot;: &quot;am-ET&quot;,
      &quot;displayName&quot;: &quot;አማርኛ (ኢትዮጵያ)&quot;
    },
    {
      &quot;locale&quot;: &quot;ar-AE&quot;,
      &quot;displayName&quot;: &quot;العربية (الإمارات العربية المتحدة)&quot;
    },
    {
      &quot;locale&quot;: &quot;ar-BH&quot;,
      &quot;displayName&quot;: &quot;العربية (البحرين)&quot;
    },
    ...
  ]
}
[/js]]]></content:encoded>
    </item>
    <item>
      <title>Announcing new REST APIs in beta for rooms, time zones, and languages</title>
      <link>https://docs.microsoft.com/archive/blogs/exchangedev/announcing-new-rest-apis-in-beta-for-rooms-time-zones-and-languages</link>
      <pubDate>Fri, 30 Jun 2017 06:33:39 GMT</pubDate>
      <dc:creator><![CDATA[Jason Johnston [MSFT]]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/exchangedev/?p=1716</guid>
      <description><![CDATA[Today we&#039;re pleased to announce some new APIs that are available on the beta endpoint for the...]]></description>
      <content:encoded><![CDATA[<p>Today we&#039;re pleased to announce some new APIs that are available on the beta endpoint for the Outlook REST API. These are currently only available via the Outlook endpoint (<code>https://outlook.office.com/api/beta</code>) and not the Microsoft Graph API endpoint.</p>
<p>Try these new APIs out today, either in your code, or on the <a href="https://oauthplay.azurewebsites.net/">Outlook OAuth Sandbox</a>. Leave feedback on these new APIs on <a href="https://officespdev.uservoice.com/">UserVoice</a>.</p>
<h2 id="meeting-rooms">Meeting rooms</h2>
<p>One of the top-requested features for the Outlook REST API was the ability to list meeting rooms in an organziation. We&#039;ve added the ability to find both <a href="https://msdn.microsoft.com/en-us/office/office365/api/calendar-rest-operations#GetRooms">rooms</a> and <a href="https://msdn.microsoft.com/en-us/office/office365/api/calendar-rest-operations#GetRoomLists">room lists</a>.</p>
<h3 id="get-room-lists">Get room lists</h3>
<p><strong>Request</strong></p>
<pre><code class="lang-http">GET https://outlook.office.com/api/beta/me/findroomlists
</code></pre>
<p><strong>Response</strong></p>
<pre><code class="lang-json">{
  &quot;value&quot;: [
    {
      &quot;Name&quot;: &quot;Building 1 Rooms&quot;,
      &quot;Address&quot;: &quot;Building1Rooms@contoso.onmicrosoft.com&quot;
    },
    {
      &quot;Name&quot;: &quot;Building 2 Rooms&quot;,
      &quot;Address&quot;: &quot;Building2Rooms@contoso.onmicrosoft.com&quot;
    }
  ]
}
</code></pre>
<h3 id="get-rooms">Get rooms</h3>
<p><strong>Request (all rooms)</strong></p>
<pre><code class="lang-http">GET https://outlook.office.com/api/beta/me/findrooms
</code></pre>
<p><strong>Request (rooms in a room list)</strong></p>
<pre><code class="lang-http">GET https://outlook.office.com/api/beta/me/findrooms(roomlist=&#039;Building1Rooms@contoso.onmicrosoft.com&#039;)
</code></pre>
<p><strong>Response</strong></p>
<pre><code class="lang-json">{
  &quot;value&quot;: [
    {
      &quot;Name&quot;: &quot;Conf Room Adams&quot;,
      &quot;Address&quot;: &quot;Adams@contoso.onmicrosoft.com&quot;
    },
    {
      &quot;Name&quot;: &quot;Conf Room Crystal&quot;,
      &quot;Address&quot;: &quot;Crystal@contoso.onmicrosoft.com&quot;
    },
    {
      &quot;Name&quot;: &quot;Conf Room Stevens&quot;,
      &quot;Address&quot;: &quot;Stevens@contoso.onmicrosoft.com&quot;
    }
  ]
}
</code></pre>
<h2 id="time-zones">Time zones</h2>
<p>The API has support for specifying a time zone via the <code>Prefer</code> header to get back date times in the requested time zone. However, figuring out which time zones are supported has been a little tricky. Now, apps can <a href="https://msdn.microsoft.com/en-us/office/office365/api/mail-rest-operations#get-time-zone-choices-preview">request a list of all supported time zones from the server</a>, in either Windows or IANA format.</p>
<p><strong>Request</strong></p>
<pre><code class="lang-http">GET https://outlook.office.com/api/beta/me/SupportedTimeZones(TimeZoneStandard=&#039;Windows&#039;)
</code></pre>
<p><strong>Response</strong></p>
<pre><code class="lang-json">{
  &quot;value&quot;: [
    {
      &quot;Alias&quot;: &quot;Dateline Standard Time&quot;,
      &quot;DisplayName&quot;: &quot;(UTC-12:00) International Date Line West&quot;
    },
    {
      &quot;Alias&quot;: &quot;Samoa Standard Time&quot;,
      &quot;DisplayName&quot;: &quot;(UTC+13:00) Samoa&quot;
    },
    {
      &quot;Alias&quot;: &quot;UTC-11&quot;,
      &quot;DisplayName&quot;: &quot;(UTC-11:00) Coordinated Universal Time-11&quot;
    },
    {
      &quot;Alias&quot;: &quot;Aleutian Standard Time&quot;,
      &quot;DisplayName&quot;: &quot;(UTC-10:00) Aleutian Islands&quot;
    },
    ...
  ]
}
</code></pre>
<h2 id="languages">Languages</h2>
<p>You can also <a href="https://msdn.microsoft.com/en-us/office/office365/api/mail-rest-operations#get-language-choices-preview">request a list of supported languages</a> from the server.</p>
<p><strong>Request</strong></p>
<pre><code class="lang-http">GET https://outlook.office.com/api/beta/me/SupportedLanguages
</code></pre>
<p><strong>Response</strong></p>
<pre><code class="lang-json">{
  &quot;value&quot;: [
    {
      &quot;Locale&quot;: &quot;af-ZA&quot;,
      &quot;DisplayName&quot;: &quot;Afrikaans (Suid-Afrika)&quot;
    },
    {
      &quot;Locale&quot;: &quot;am-ET&quot;,
      &quot;DisplayName&quot;: &quot;አማርኛ (ኢትዮጵያ)&quot;
    },
    {
      &quot;Locale&quot;: &quot;ar-AE&quot;,
      &quot;DisplayName&quot;: &quot;العربية (الإمارات العربية المتحدة)&quot;
    },
    {
      &quot;Locale&quot;: &quot;ar-BH&quot;,
      &quot;DisplayName&quot;: &quot;العربية (البحرين)&quot;
    },
    ...
  ]
}
</code></pre>
]]></content:encoded>
    </item>
    <item>
      <title>Check out the new Outlook Dev Portal!</title>
      <link>https://docs.microsoft.com/archive/blogs/exchangedev/check-out-the-new-outlook-dev-portal</link>
      <pubDate>Thu, 08 Jun 2017 11:09:22 GMT</pubDate>
      <dc:creator><![CDATA[Shreedevi Padmasini [MSFT]]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/exchangedev/?p=1695</guid>
      <description><![CDATA[Hi there! We are excited to bring to you the new and improved Outlook dev portal. It's got a new...]]></description>
      <content:encoded><![CDATA[Hi there! We are excited to bring to you the new and improved <a href="https://developer.microsoft.com/outlook">Outlook dev portal</a>. It's got a new look and feel, an upgraded documentation experience, and all of the REST API topics have been rewritten to use the Microsoft Graph API.

<a href="https://msdnshared.blob.core.windows.net/media/2017/06/outlook-dev-portal.jpg"><img src="https://msdnshared.blob.core.windows.net/media/2017/06/outlook-dev-portal.jpg" alt="A screenshot of the new Outlook developer portal" width="1518" height="926" class="alignleft size-full wp-image-1705" /></a>

<h2>Learn about the Outlook platform</h2>

Get to know in detail the three pillars of the Outlook ecosystem, and the integration points. You can get information on how to quickly set up your app, dig into references, and look at code samples for the platform.

<h2>Collaborative documentation</h2>

Engage with the product team directly by contributing to the documentation for the Outlook platform. Now developers can contribute to our documentation by submitting a pull request <a href="https://github.com/officedev/outlook-dev-docs">on GitHub</a>. This enables the community to have up to date documentation and to suggest changes to our team. You can also leave comments directly on the <a href="https://docs.microsoft.com/en-us/outlook/">documentation site</a>.

For any feedback you have on the portal, let us know in the comments below.
]]></content:encoded>
    </item>
    <item>
      <title>Upcoming change to Event schema in the Outlook REST API beta endpoint</title>
      <link>https://docs.microsoft.com/archive/blogs/exchangedev/upcoming-change-to-event-schema-in-the-outlook-rest-api-beta-endpoint</link>
      <pubDate>Thu, 01 Jun 2017 07:12:32 GMT</pubDate>
      <dc:creator><![CDATA[Jason Johnston [MSFT]]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/exchangedev/?p=1685</guid>
      <description><![CDATA[We wanted to give you a heads-up on upcoming changes to how locations are exposed for events in the...]]></description>
      <content:encoded><![CDATA[We wanted to give you a heads-up on upcoming changes to how locations are exposed for events in the Outlook REST API. Outlook recently introduced the option to use multiple locations to schedule meetings and appointments. The feature is designed for meetings scheduled for persons and teams spanning different regions, for example, some people attending in a conference room in Seattle, another person joining from a coffee shop in Paris, and others from the New York office, with all the locations connected via Skype for Business.

To support multiple locations in the <code>Event</code> schema, we are adding:
<ul>
	<li>A <code>Locations</code> property as part of the <code>Event</code> resource</li>
	<li>A <code>LocationType</code> property to the <code>Location</code> complex type, with an enumeration of possible locations types</li>
</ul>

This change is currently available on the <code>https://outlook.office.com/api/beta</code> endpoint.

<blockquote><strong>Note:</strong> These are schema additions and the existing <code>Location</code> property that represents a single location for an event has not been removed, to allow for an easier transition. If your REST client is already using <code>Location</code>, your client doesn't break. However, be aware that in the future, the <code>Location</code> property will be removed, and apps will need to be updated.</blockquote>

Here are the updated portions of the schema, with the changes highlighted.

<pre><code>&lt;EntityType Name="Event" BaseType="Microsoft.OutlookServices.Item"&gt;
    ...
    &lt;Property Name="Start" Type="Microsoft.OutlookServices.DateTimeTimeZone" /&gt;
    &lt;Property Name="OriginalStart" Type="Edm.DateTimeOffset" /&gt;
    &lt;Property Name="End" Type="Microsoft.OutlookServices.DateTimeTimeZone" /&gt;
    &lt;Property Name="Location" Type="Microsoft.OutlookServices.Location" /&gt;
    <span style="background-color: yellow">&lt;Property Name="Locations" Type="Collection(Microsoft.OutlookServices.Location)" /&gt;</span>
    &lt;Property Name="Start" Type="Microsoft.OutlookServices.DateTimeTimeZone" /&gt;
    &lt;Property Name="OriginalStart" Type="Edm.DateTimeOffset" /&gt;
    &lt;Property Name="End" Type="Microsoft.OutlookServices.DateTimeTimeZone" /&gt;
    ...
&lt;/EntityType&gt;

&lt;ComplexType Name="Location"&gt;
    &lt;Property Name="DisplayName" Type="Edm.String" /&gt;
    &lt;Property Name="LocationEmailAddress" Type="Edm.String" /&gt;
    &lt;Property Name="Address" Type="Microsoft.OutlookServices.PhysicalAddress" /&gt;
    &lt;Property Name="Coordinates" Type="Microsoft.OutlookServices.GeoCoordinates" /&gt;
    &lt;Property Name="LocationUri" Type="Edm.String" /&gt;
    <span style="background-color: yellow">&lt;Property Name="LocationType" Type="Microsoft.OutlookServices.LocationType" /&gt;</span>
&lt;/ComplexType&gt;

<span style="background-color: yellow">&lt;EnumType Name="LocationType"&gt;
    &lt;Member Name="Default" Value="0" /&gt;
    &lt;Member Name="ConferenceRoom" Value="1" /&gt;
    &lt;Member Name="HomeAddress" Value="2" /&gt;
    &lt;Member Name="BusinessAddress" Value="3" /&gt;
    &lt;Member Name="GeoCoordinates" Value="4" /&gt;
    &lt;Member Name="StreetAddress" Value="5" /&gt;
    &lt;Member Name="Hotel" Value="6" /&gt;
    &lt;Member Name="Restaurant" Value="7" /&gt;
    &lt;Member Name="LocalBusiness" Value="8" /&gt;
    &lt;Member Name="PostalAddress" Value="9" /&gt;
&lt;/EnumType&gt;</span>
</code></pre>

<h2>Using multiple locations and location types in the Outlook Rest API</h2>

<h3>Get events</h3>

You can use the GET /me/events API to get a collection of calendar events:

<pre><code>GET https://outlook.office.com/api/beta/me/events?$select=Subject,Organizer,Start,End,Locations,Location</code></pre>

With this schema addition, the <code>GET /me/events</code> command will return, for each <code>Event</code>, the collection of <code>Locations</code>.

Example of a response:

<pre><code>{
  "@odata.context": "https://outlook.office.com/api/beta/$metadata#Me/Events(Subject,Organizer,Start,End,Locations,Location)",
  "value": [
    {
      "@odata.id": "https://outlook.office.com/api/beta/Users('ddfcd489-628b-40d7-b48b-57002df800e5@1717622f-1d94-4d0c-9d74-709fad664b77')/Events('AAMkAGI28tEyDAAA=')",
      "@odata.etag": "W/\"nfZyf7VcrEKLNoU37KWlkQAA/LpDWw==\"",
      "Id": "AAMkAGI28tEyDAAA=",
      "Subject": "Scrum",
      "Start": {
        "DateTime": "2017-11-28T08:00:00",
        "TimeZone": "Pacific Standard Time"
      },
      "End": {
        "DateTime": "2017-11-28T09:00:00",
        "TimeZone": "Pacific Standard Time"
      },
      "Organizer": {
        "EmailAddress": {
          "Name": "Adele Vance",
          "Address": "adelev@contoso.onmicrosoft.com"
        }
      },
      "Location": {
        "DisplayName": "Conf Room 3; Fourth Coffee; Home Office",
        "LocationType": "Default"
      },
      "Locations": [
        {
          "DisplayName": "Conf Room 3",
          "LocationType": "ConferenceRoom"
        },
        {
          "DisplayName": "Fourth Coffee",
          "Address": {
            "Street": "4567 Main St",
            "City": "Redmond",
            "State": "WA",
            "CountryOrRegion": "US",
            "PostalCode": "32008"
          },
          "Coordinates": {
            "Latitude": 47.672,
            "Longitude": -102.103
          },
          "LocationType": "LocalBusiness"
        },
        {
          "DisplayName": "Home Office",
          "LocationType": "Default"
        }
      ]
    }
  ]
}
</code></pre>

<h3>Create an event with multiple locations</h3>

The following example creates a new event on the user's default calendar with multiple locations.

<pre><code>POST https://outlook.office.com/api/beta/me/events
Content-Type: application/json

{
  "Subject": "Discuss the Event in Multiple Locations REST API",
  "Start": {
    "DateTime": "2017-06-06T08:00:00",
    "TimeZone": "Pacific Standard Time"
  },
  "End": {
    "DateTime": "2017-06-06T09:00:00",
    "TimeZone": "Pacific Standard Time"
  },
  "Attendees": [
    {
      "EmailAddress": {
        "Address": "janets@contoso.onmicrosoft.com",
        "Name": "Janet Schorr"
      },
      "Type": "Required"
    }
  ],
  "Locations": [
    {
      "DisplayName": "Conf Room 3",
      "LocationType": "ConferenceRoom"
    },
    {
      "DisplayName": "Fourth Coffee",
      "Address": {
        "Street": "4567 Main St",
        "City": "Redmond",
        "State": "WA",
        "CountryOrRegion": "US",
        "PostalCode": "32008"
      },
      "Coordinates": {
        "Latitude": 47.672,
        "Longitude": -102.103
      },
      "LocationType": "LocalBusiness"
    }
  ]
}
</code></pre>

<h3>Update an event with multiple locations</h3>

To update locations of an event, apps include the Locations property in the PATCH payload. The existing value of the Locations property is overwritten, so in order to add a location to an existing event, apps should get the current value of the Locations property, then add the new location, and PATCH the resulting value.

For example, the following example would add the <strong>Conf Room 2 (New York)</strong> location to the existing locations of the event created in the previous example.

<pre><code>PATCH https://outlook.office.com/api/beta/me/events/{event-id}
Content-Type: application/json

{
  "Locations": [
    {
      "DisplayName": "Conf Room 3",
      "LocationType": "ConferenceRoom"
    },
    {
      "DisplayName": "Fourth Coffee",
      "Address": {
        "Street": "4567 Main St",
        "City": "Redmond",
        "State": "WA",
        "CountryOrRegion": "US",
        "PostalCode": "32008"
      },
      "Coordinates": {
        "Latitude": 47.672,
        "Longitude": -102.103
      },
      "LocationType": "LocalBusiness"
    },
    {
      "DisplayName": "Conf Room 2 (New York)",
      "LocationType": "ConferenceRoom"
    }
  ]
}
</code></pre>

<h3>Behavior with Location property</h3>

Apps should update to use the <code>Locations</code> property. However, if an app continues to use the <code>Location</code> property, the property will behave in the following ways:

<h4>Read</h4>

When reading the <code>Location</code> property, the value will include a <code>Location</code> entity with just the <code>DisplayName</code> and <code>LocationType</code> properties. The <code>DisplayName</code> property will be a semi-colon delimited list of the display names of each location in the <code>Locations</code> property, and the <code>LocationType</code> will be <code>Default</code>.

<h4>Write</h4>

If an app updates the <code>Location</code> property via POST or PATCH, the <code>Locations</code> property will be updated to have the same <code>Location</code> entity as the one and only location in the collection. So, if an event already has multiple locations, and an app updates the <code>Location</code> property, all existing locations will be removed from the <code>Locations</code> property and replaced with the single location set in the <code>Location</code> property.]]></content:encoded>
    </item>
    <item>
      <title>Throttling coming to Outlook API and Microsoft Graph</title>
      <link>https://docs.microsoft.com/archive/blogs/exchangedev/throttling-coming-to-outlook-api-and-microsoft-graph</link>
      <pubDate>Fri, 07 Apr 2017 15:04:02 GMT</pubDate>
      <dc:creator><![CDATA[Jason Johnston [MSFT]]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/exchangedev/?p=1655</guid>
      <description><![CDATA[Update 12/4/17: Updated the post with the current limits.

On April 21, we will be enabling...]]></description>
      <content:encoded><![CDATA[<blockquote><strong>Update 12/4/17:</strong> Updated the post with the current limits.</blockquote>

On April 21, we will be enabling throttling on the Outlook REST APIs (accessed via <code>https://outlook.office.com/api</code> or <code>https://outlook.office365.com/api</code>), and on the Outlook-related endpoints of the Microsoft Graph (accessed via <code>https://graph.microsoft.com</code>). We wanted to give developers some advanced warning to make sure you were prepared!
<!--more-->
<h2>What's the limit?</h2>
The limit is 10000 requests per 10-minute period, per user (or group), per app ID. This means that your app can make at most 10000 requests to a single user's mailbox in a 10-minute period. If your app is requesting data from multiple users simultaneously, requests to one user do not impact the limit for another user.
<h2>What APIs are subject to this limit?</h2>
<h3>Outlook APIs</h3>
All APIs accessed via <code>https://outlook.office.com/api</code> or <code>https://outlook.office365.com/api</code>, including:
<ul>
 	<li><a href="https://msdn.microsoft.com/en-us/office/office365/api/mail-rest-operations">Mail API</a></li>
 	<li><a href="https://msdn.microsoft.com/en-us/office/office365/api/calendar-rest-operations">Calendar API</a></li>
 	<li><a href="https://msdn.microsoft.com/en-us/office/office365/api/contacts-rest-operations">Contacts API</a></li>
 	<li><a href="https://msdn.microsoft.com/en-us/office/office365/api/task-rest-operations">Tasks API</a></li>
 	<li><a href="https://msdn.microsoft.com/en-us/office/office365/api/people-rest-operations">People API</a></li>
 	<li><a href="https://msdn.microsoft.com/en-us/office/office365/api/photo-rest-operations">Photo API</a></li>
</ul>
<h3>Microsoft Graph</h3>
Only the Outlook-related APIs in the Microsoft Graph are subject to this limit. Microsoft Graph requests to non-Outlook resources (such as OneDrive files) would not count against this limit. The following resources (and their child resources) are subject to the limit:
<ul>
 	<li><a href="https://developer.microsoft.com/en-us/graph/docs/api-reference/v1.0/resources/user">User resources</a></li>
 	<li><a href="https://developer.microsoft.com/en-us/graph/docs/api-reference/v1.0/resources/profilephoto">Photo resources</a></li>
 	<li><a href="https://developer.microsoft.com/en-us/graph/docs/api-reference/v1.0/resources/message">Mail resources</a></li>
 	<li><a href="https://developer.microsoft.com/en-us/graph/docs/api-reference/v1.0/resources/event">Calendar resources (users and groups)</a></li>
 	<li><a href="https://developer.microsoft.com/en-us/graph/docs/api-reference/v1.0/resources/contact">Contact resources</a></li>
 	<li><a href="https://developer.microsoft.com/en-us/graph/docs/api-reference/v1.0/resources/attachment">Attachment resources</a></li>
 	<li><a href="https://developer.microsoft.com/en-us/graph/docs/api-reference/v1.0/resources/conversation">Group conversations</a></li>
 	<li><a href="https://developer.microsoft.com/en-us/graph/docs/api-reference/beta/resources/social_overview">People and social resources</a></li>
</ul>
<h2>Can I track my usage?</h2>
Each response from the API will contain specific headers that can help you track your current state in regards to the rate limit.


<blockquote><strong>Note:</strong> Only the Outlook REST API endpoints return these rate limit tracking headers. The Microsoft Graph endpoint does not return these headers.</blockquote>


<table>
<thead>
<tr>
<th>Header name</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><code>Rate-Limit-Limit</code></td>
<td>The maximum number of requests that the app is permitted to make per minute for the current user or group</td>
</tr>
<tr>
<td><code>Rate-Limit-Remaining</code></td>
<td>The number of requests remaining in the current rate limit window</td>
</tr>
<tr>
<td><code>Rate-Limit-Reset</code></td>
<td>The time at which the current rate limit window resets in UTC time</td>
</tr>
</tbody>
</table>
<h2>What happens if my app exceeds the limit?</h2>
You'll get a <code>429</code> response back from the server. The response will include a <code>Retry-After</code> header, which will specify the number of seconds your app must wait until it can make more requests for the particular user or group. It will also include a <code>Rate-Limit-Reason</code> header with a human-readable string that articulates the reason for the throttled request. 
<h2>How do I avoid being throttled?</h2>
If your app is currently making more than the allowed number of requests, there may be some ways that you can reduce the number of requests without reducing the amount of data your app is accessing. Some general tips to reduce requests are:
<ul>
 	<li><strong>Increasing page size:</strong> Using the <code>$top</code> parameter to increase the number of items returned per page when requesting a set of items. The default page size if the <code>$top</code> parameter is omitted is 10, which isn't very efficient if you're requesting a large number of items. You can increase this limit up to 1000.</li>
 	<li><strong>Reduce number of GET for single items:</strong> As much as possible, get the data your app needs from lists (such as <code>GET /me/messages</code>) rather than requesting each individual entity (such as <code>GET /me/messages/{message-id}</code>). Using the <code>$select</code> parameter to request the fields your app needs can help you control what data is returned back in lists.</li>
</ul>
<h2>Call to action</h2>
Based on the usage rates we've seen to date, we believe that most apps out there will not exceed the limit. However, we encourage you to review your app and determine if you are likely to exceed the limits. If so, you should look at ways to reduce the number of requests or make sure you have error handling in place to handle <code>429</code> responses and retry in an appropriate amount of time.

We will be publishing more detailed documentation on these limits in the near future.]]></content:encoded>
    </item>
    <item>
      <title>Add ins are now available for all Outlook on Mac users</title>
      <link>https://docs.microsoft.com/archive/blogs/exchangedev/add-ins-now-available-for-all-outlook-on-mac-users</link>
      <pubDate>Mon, 20 Mar 2017 10:00:49 GMT</pubDate>
      <dc:creator><![CDATA[Bharathan_MSFT]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/exchangedev/?p=1626</guid>
      <description><![CDATA[Add-ins bring your favorite apps right inside Outlook, so you can accomplish tasks quickly without...]]></description>
      <content:encoded><![CDATA[Add-ins bring your favorite apps right inside Outlook, so you can accomplish tasks quickly without needing to switch back and forth between email and other apps. Add-ins are a great way to increase usage of your apps by making them accessible directly within Outlook. Last year, we <a target="_blank" href="https://blogs.office.com/2016/09/27/new-outlook-partner-integrations-help-you-extend-your-email-capabilities/">announced</a> the rollout of add-ins to Outlook 2016 for Mac in Office Insider. We are now making add-ins available to all Outlook 2016 for Mac customers who have Exchange 2013 Service Pack 1 or higher, or Office 365 or Outlook.com mailboxes. See the full post <a href="https://blogs.office.com/2017/03/20/outlook-2016-for-mac-adds-touch-bar-support-and-now-comes-with-your-favorite-apps/">here</a>.]]></content:encoded>
    </item>
    <item>
      <title>Add-ins are now available for Outlook on iOS</title>
      <link>https://docs.microsoft.com/archive/blogs/exchangedev/add-ins-are-now-available-for-outlook-on-ios</link>
      <pubDate>Wed, 08 Feb 2017 10:44:28 GMT</pubDate>
      <dc:creator><![CDATA[Jason Johnston [MSFT]]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/exchangedev/?p=1595</guid>
      <description><![CDATA[We're now excited to bring add-ins to Outlook mobile, starting with Outlook on IOS, with support for...]]></description>
      <content:encoded><![CDATA[We're now excited to bring add-ins to Outlook mobile, starting with Outlook on IOS, with support for Android coming soon. See the full post on the <a href="https://dev.office.com/blogs/add-ins-are-now-available-for-outlook-on-ios">Office Dev Center blog</a>.]]></content:encoded>
    </item>
    <item>
      <title>Pinnable Taskpane in Outlook 2016</title>
      <link>https://docs.microsoft.com/archive/blogs/exchangedev/pinnable-taskpane-in-outlook-2016</link>
      <pubDate>Thu, 26 Jan 2017 12:02:56 GMT</pubDate>
      <dc:creator><![CDATA[Wamwitha Love]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/exchangedev/?p=1465</guid>
      <description><![CDATA[Have your add-in users been asking you for the ability to leave the add-in taskpane open in their...]]></description>
      <content:encoded><![CDATA[Have your add-in users been asking you for the ability to leave the add-in taskpane open in their mailbox as they switch between messages? At Ignite this year, we announced the addition of a new feature for Outlook add-ins, the Pinnable Taskpane. Today we are excited to announce this feature is now officially available in the subscription version (C2R) of Outlook 2016 for Windows users! The feature is identifiable by a pin icon as shown in the screenshot below and will only be available for taskpanes which have explicitly added support. We've provided some getting started instructions in this post.

<a href="https://msdnshared.blob.core.windows.net/media/2017/01/PinnableTaskpane-e1485455165986.png"><img src="https://msdnshared.blob.core.windows.net/media/2017/01/PinnableTaskpane-e1485455165986.png" alt="A screenshot of a pinnable taskpane in Outlook." class="size-full wp-image-1555" /></a>

<em>A screenshot of a pinnable taskpane in Outlook. Note the pin icon in the upper right corner of the taskpane.</em>

Please note the pinnable taskpane functionality defaults to off.  We chose to do this because we wanted the users to remain in control of their Outlook experience.  To ensure users leverage the "pinning" functionality we encourage you to show some teaching UI to tell users they can pin the add-in, if they want. Take a look at our <a href="https://dev.office.com/docs/add-ins/design/ux-design-patterns">design guidelines</a> around First-Run experiences and toast notifications.

There are two main changes that need to be made to add-ins to support the Pinnable Taskpane: updating the manifest and registering for the <code>ItemChanged</code> event.

<h2>Updating the manifest</h2>
Last year we added a VersionOverrides version 1.0 section to the manifest with the release of add-in commands. As we continued to add new functionality we introduced VersionOverrides version 1.1 which is what you'll need to add support for the Pinnable Taskpane. Adding the <code>SupportsPinning</code> tag to a <code>ShowTaskPane</code> action of a control indicates that the task pane support pinning. Below is an example of an extension point that supports pinning. Notice the <code>SupportsPinning</code> tag.

<pre><code>&lt;Control xsi:type="Button" id="Contoso.Button0"&gt;
  &lt;Label resid="residTaskpaneButton"&gt;&lt;/Label&gt;
  &lt;Tooltip&gt;
    &lt;Title resid="residTipTitle"&gt;&lt;/Label&gt;
    &lt;Description resid="residTipDescription"&gt;&lt;/Label&gt;
  &lt;/Tooltip&gt;

  &lt;Icon&gt;
    &lt;bt:Image size="16" resid="functionIcon" /&gt;     
    &lt;bt:Image size="32" resid="functionIcon" /&gt;
    &lt;bt:Image size="80" resid="functionIcon" /&gt;
  &lt;/Icon&gt;

  &lt;Action xsi:type="ShowTaskPane"&gt;
    &lt;SourceLocation resid="residTaskpaneUrl"/&gt;
    &lt;SupportsPinning&gt;true&lt;/SupportsPinning&gt;
  &lt;/Action&gt;
&lt;/Control&gt;
</code></pre>

<h2>Registering for the ItemChanged Event</h2>
Now that the taskpane's support has been declared in the manifest, the add-in must register to get an event when a new item is shown in the user's mailbox. This can be done by leveraging the new <a href="https://dev.office.com/reference/add-ins/outlook/1.5/Office.context.mailbox?product=outlook&amp;version=v1.5#addhandlerasynceventtype-handler-options-callback">Office.context.mailbox.addHandlerAsync</a> API in <code>Office.initialize</code>. This API takes the following parameters: <code>eventType, handler[,options], callback</code>. Be sure to register for the <code>ItemChanged</code> event. Below is an example of how this might look:

<pre><code>Office.context.mailbox.addHandlerAsync(
  Office.EventType.ItemChanged,
  function(eventArgs) {
    // This is the event handler. Do something here.
  },
  function(asyncResult) {
    // This is callback for addHandlerAsync. This will be called ONCE when the event is registered.
  }
);
</code></pre>

Interested in learning more about the Pinnable Taskpane? Take a look at the documentation <a href="https://dev.office.com/docs/add-ins/outlook/manifests/pinnable-taskpane">here</a>.]]></content:encoded>
    </item>
  </channel>
</rss>