Outlook Mail (Office 365) Connector
Outlook Mail (Office 365) Connector Help
Version 1
ZappySys Logo File Version: v1
Supported Engine: 11

Outlook Mail (Office 365) Connector - Source Code


<?xml version="1.0" encoding="utf-8"?>
<ApiConfig Name="Outlook Mail (Office 365)"
           Desc="Outlook Mail Connector can be used to integrate Office 365 Outlook Mail API in your App / BI Tools. You can download attachment, read / search Emails, Users, MailFolders, Send email and more."
           Slug="outlook-mail-connector"
           Id="8b5786b9-5dee-4420-8b12-8a7058d63148"
           Logo="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAJYAAACWCAYAAAA8AXHiAAAACXBIWXMAAAsTAAALEwEAmpwYAAAFyWlUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNy4yLWMwMDAgNzkuMWI2NWE3OSwgMjAyMi8wNi8xMy0xNzo0NjoxNCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RFdnQ9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZUV2ZW50IyIgeG1sbnM6ZGM9Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIiB4bWxuczpwaG90b3Nob3A9Imh0dHA6Ly9ucy5hZG9iZS5jb20vcGhvdG9zaG9wLzEuMC8iIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIDIzLjUgKFdpbmRvd3MpIiB4bXA6Q3JlYXRlRGF0ZT0iMjAyMy0wMy0xM1QxMTowNjoyNS0wNDowMCIgeG1wOk1ldGFkYXRhRGF0ZT0iMjAyMy0wMy0xM1QxMTowNjoyNS0wNDowMCIgeG1wOk1vZGlmeURhdGU9IjIwMjMtMDMtMTNUMTE6MDY6MjUtMDQ6MDAiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6Zjk5ODFmN2YtZGEzZS0xOTQ2LWFlNGQtZmEyNTgyODE2Yjk5IiB4bXBNTTpEb2N1bWVudElEPSJhZG9iZTpkb2NpZDpwaG90b3Nob3A6OTZlOTE5OTctMjlkMS02ZjQxLWFjNDAt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"
           Version="1"
           EngineVersion="11">
  <VersionHistory>
    <Change Date="2023-03-28" Type="New">Initial version</Change>
  </VersionHistory>

  <ServiceUrls>
    <ServiceUrl Name="Microsoft Graph API v1.0" Url="https://graph.microsoft.com/v1.0" />
  </ServiceUrls>

  <Auths>
    <Auth Name="UserCreds" Label="User Credentials" Type="OAuth" Desc="OAuth App must be created in Microsoft Azure AD. These settings typically found here https://docs.microsoft.com/en-us/graph/auth-register-app-v2."
          HelpLink="https://docs.microsoft.com/en-us/graph/auth-register-app-v2"
          ConnStr="Provider=Custom;OAuthVersion=OAuth2;GrantType=Default;Scope=[$Scope$];ScopeSeparator={space};"
          TestEndPoint="get_my_info">
      <Notes>
        <![CDATA[<p>Firstly, login into Azure Portal and there create an OAuth application:
<p />
<ol>
  <li>Go to <a target="_blank" href="https://portal.azure.com/#home"><b>Azure Portal</b></a> and login there.</li>
  <li>Then go to <a target="_blank" href="https://portal.azure.com/#blade/Microsoft_AAD_IAM/ActiveDirectoryMenuBlade/Overview"><b>Azure Active Directory</b></a>.</li>
  <li>On the left side click menu item <b><a target="_blank" href="https://portal.azure.com/#blade/Microsoft_AAD_IAM/ActiveDirectoryMenuBlade/RegisteredApps">App registrations</a></b></li>
  <li>Then proceed with clicking <b>New registration</b>.</li>
  <li>Enter a name for your application.</li>
  <li>Select the account types to support with the <b>Supported account types</b> option.</li>
  <li>In <b>Redirect URI</b>, select <i>Web</i>.</li>
  <li>In the textbox enter <b>https://zappysys.com/oauth</b> as the Redirect URI or another valid redirect URL.</li>
  <li>Use this same Redirect URI in the <b>Redirect URL - Must Match App Redirect URL</b> grid row.</li>  
  <li>Copy <b>Client ID</b> and paste it into the API Connection Manager configuration grid in the <b>Client ID</b> row.</li>
  <li>Click on the <b>Endpoints</b> link and copy the <b>OAuth 2.0 authorization endpoint (v2)</b> URL to the <b>Authorization URL</b> grid row. Usually it looks similar to this:
     <ul>
       <li>https://login.microsoftonline.com/daed1250-xxxx-xxxx-xxxx-ef0a982d3d1e/oauth2/v2.0/authorize</li>
     </ul>
  </li>
  <li>Copy the <b>OAuth 2.0 token endpoint (v2)</b> URL to the <b>Token URL</b> grid row. Usually it looks similar to this:
     <ul>
       <li>https://login.microsoftonline.com/daed1250-xxxx-xxxx-xxxx-ef0a982d3d1e/oauth2/v2.0/token</li>       
     </ul>
  </li>
  <li>Close "Endpoints" popup and create a </i>Client Secret</i> in the <b>Certificates & secrets</b> tab.</li>
  <li>Proceed by clicking <b>New client secret</b> and setting expiration period. Copy the client secret and paste it into configuration grid in <b>Client Secret</b> row.</li>
  <li>Now lets setup permissions for the app. Click on <b>API Permissions</b> and on the page click Plus Sign <b>Add Permission</b></li>
  <li>Click on <b>Microsoft Graph API</b> and then choose <b>Delegated Permissions</b></li>
  <li>on Permission list page search or choose permissions as needed. We need to enable following Permissions from 3 Sections (i.e. OpenId Permissions, Mail Permissions and Users Permissions).</li>
  <li>Make sure you have checked below permissions (If you do not need Write feature then you can skip Write scopes)
<pre>
offline_access
email
openid
profile 
Mail.Read
Mail.Read.Shared
Mail.ReadBasic
Mail.ReadBasic.Shared
Mail.ReadWrite
Mail.ReadWrite.Shared
Mail.Send
Mail.Send.Shared
User.Read
User.ReadBasic.All
  </pre>  
  
  </li>
  <li>Click <b>Generate Token</b> to generate tokens.
    <div style="background-color: #f5f2c4; border-style: solid; border-color: #000000; border-width: 1px; margin-top: 3px; margin-bottom: 6px; padding: 6px;">
		<b>NOTE:</b> If you are planning to use your current data connection/token for automated processes, we recommend that you use a generic account for token generation when the login box appears (e.g. sales_automation@mycompany.com instead of bob_smith@mycompany.com). When you use a personal account which is tied to a specific employee profile and that employee leaves the company, the token may become invalid and any automated processes using that token will fail. Another potentially unwanted effect of using a personal token is incorrect logging; the API calls (e.g. Read, Edit, Delete, Upload) made with that token will record the specific user as performing the calls instead of an automated process.
    </div>  
  </li>
  
  <li>That's it!</li>
</ol>
]]>
      </Notes>
      <Params>
        <Param Name="AuthUrl" Label="Authorization URL" Required="True" Options="For Single-Tenant Use=https://login.microsoftonline.com/{ENTER-TENANT-ID-HERE}/oauth2/v2.0/authorize;For Multi-Tenant Use=https://login.microsoftonline.com/common/oauth2/v2.0/authorize" />
        <Param Name="TokenUrl" Label="Token URL" Required="True" Options="For Single-Tenant Use=https://login.microsoftonline.com/{ENTER-TENANT-ID-HERE}/oauth2/v2.0/token;For Multi-Tenant Use=https://login.microsoftonline.com/common/oauth2/v2.0/token"  />
        <Param Name="ClientId" Label="Client ID" Required="True" />
        <Param Name="ClientSecret" Label="Client Secret" Secret="True"/>
        <Param Name="RefreshTokenFilePath" Label="Refresh Token File Path" Hidden="True" Desc="If you cant fit long refresh token in ConnectionString from your program then use this. Supply three properies in json format (i.e. save this in file { &quot;access_token&quot;: &quot;YOUR_ACCESS_TOKEN&quot;, &quot;refresh_token&quot;: &quot;YOUR_REFRESH_TOKEN&quot;, &quot;expires_in&quot;: 3600 } )"/>
        <Param Name="Scope"
               Required="True"
               Options="offline_access;email;Mail.Read;Mail.Read.Shared;Mail.ReadBasic;Mail.ReadBasic.Shared;openid;profile;User.Read;User.ReadBasic.All;Mail.ReadWrite;Mail.ReadWrite.Shared;Mail.Send;Mail.Send.Shared"
               MultiSelectSeparator=" "
               MultiSelect="True"
               Value="offline_access~email~Mail.Read~Mail.Read.Shared~Mail.ReadBasic~Mail.ReadBasic.Shared~openid~profile~User.Read~User.ReadBasic.All~Mail.ReadWrite~Mail.ReadWrite.Shared~Mail.Send~Mail.Send.Shared~"
               Desc="Permissions you want to use."
               Example="offline_access~email~Mail.Read~Mail.Read.Shared~Mail.ReadBasic~Mail.ReadBasic.Shared~openid~profile~User.Read~User.ReadBasic.All~Mail.ReadWrite~Mail.ReadWrite.Shared~Mail.Send~Mail.Send.Shared~"
               HelpLink=""/>
        <Param Name="ReturnUrl" Label="ReturnUrl - Must Match App Redirect URL" Options="https://zappysys.com/oauth"
               Desc="The ReturnUrl must match the URL on the Authentication page for your Application (in Azure Portal)" />
        <!--below not exposed as root level property in HTTP Connection so use as placeholder-->
        <Param Name="RetryMode" Value="RetryWhenStatusCodeMatch" Options="None;RetryAny;RetryWhenStatusCodeMatch;" Hidden="True" />
        <Param Name="RetryStatusCodeList" Value="429|503" Hidden="True" />
        <Param Name="RetryCountMax" Value="5" Hidden="True" />
        <Param Name="RetryMultiplyWaitTime" Value="True" Hidden="True" />
        <Param Name="ExtraAttributesForAuthRequest"
			         Label="Login Prompt Option"
               Options="None=;Force login prompt=prompt=login;Force permission select=prompt=consent;"
               Desc="Choose this if you want to force login prompt or permission prompt."
               HelpLink="https://learn.microsoft.com/en-us/azure/active-directory/develop/v2-oauth2-auth-code-flow"/>
      </Params>
    </Auth>
    <Auth Name="AppCreds" Label="Application Credentials" Type="OAuth" Desc="OAuth App must be created in Microsoft Azure AD. These settings typically found here https://docs.microsoft.com/en-us/graph/auth-v2-service"
          HelpLink="https://docs.microsoft.com/en-us/graph/auth-v2-service"
          ConnStr="Provider=Custom;OAuthVersion=OAuth2;ScopeSeparator={space};GrantType=ClientCredentials;Scope=[$Scope$];ScopeSeparator={space};"
          TestEndPoint="get_my_info">
      <Notes>
        <![CDATA[]]>
      </Notes>
      <Params>
        <Param Name="TokenUrl" Label="Token URL" Required="True" Options="For Single Tenant=https://login.microsoftonline.com/{ENTER-TENANT-ID-HERE}/oauth2/v2.0/token;For Multi Tenant=https://login.microsoftonline.com/common/oauth2/v2.0/token"  />
        <Param Name="ClientId" Label="Client ID" Required="True" />
        <Param Name="ClientSecret" Label="Client Secret" Secret="True" Required="True"/>
        <Param Name="Scope"
               Required="True"
               Options="offline_access;email;Mail.Read;Mail.Read.Shared;Mail.ReadBasic;Mail.ReadBasic.Shared;openid;profile;User.Read;User.ReadBasic.All;Mail.ReadWrite;Mail.ReadWrite.Shared;Mail.Send;Mail.Send.Shared"
               MultiSelectSeparator=" "
               MultiSelect="True"
               Value="offline_access~email~Mail.Read~Mail.Read.Shared~Mail.ReadBasic~Mail.ReadBasic.Shared~openid~profile~User.Read~User.ReadBasic.All~Mail.ReadWrite~Mail.ReadWrite.Shared~Mail.Send~Mail.Send.Shared~"
               Desc="Permissions you want to use."
               Example="offline_access~email~Mail.Read~Mail.Read.Shared~Mail.ReadBasic~Mail.ReadBasic.Shared~openid~profile~User.Read~User.ReadBasic.All~Mail.ReadWrite~Mail.ReadWrite.Shared~Mail.Send~Mail.Send.Shared~"
               HelpLink=""/>
        <!--below not exposed as root level property in HTTP Connection so use as placeholder-->
        <Param Name="RetryMode" Value="RetryWhenStatusCodeMatch" Options="None;RetryAny;RetryWhenStatusCodeMatch;" Hidden="True" />
        <Param Name="RetryStatusCodeList" Value="429|503" Hidden="True" />
        <Param Name="RetryCountMax" Value="5" Hidden="True" />
        <Param Name="RetryMultiplyWaitTime" Value="True" Hidden="True" />
      </Params>
    </Auth>
  </Auths>


  <Template>

    <Param Name="MessageColumnsParam" Key="$select" Label="Selected Columns" Type="Query"
	  OptionsEndPoint="get_table_columns" OptionsEndPointValueColumn="Name" OptionsEndPointParameters="Filter=message" 
	  OptionSort="ASC"
      MultiSelect="True" MultiSelectSeparator=","
      DataType="DT_WSTR" Length="4000"
      Desc="Select the individual columns to be included in the response, to reduce the response size and increase performance"
      HelpLink="https://zappysys.com/links?url=https://learn.microsoft.com/en-us/graph/query-parameters" />
	  
    <Param Name="UserColumnsParam" Key="$select" Label="Selected Columns" Type="Query"
	  OptionsEndPoint="get_table_columns" OptionsEndPointValueColumn="Name" OptionsEndPointParameters="Filter=user" 
	  OptionSort="ASC"
      MultiSelect="True" MultiSelectSeparator=","
      DataType="DT_WSTR" Length="4000"
      Desc="Select the individual columns to be included in the response, to reduce the response size and increase performance"
      HelpLink="https://zappysys.com/links?url=https://learn.microsoft.com/en-us/graph/query-parameters" />
	  
    <Param Name="MailFolderColumnsParam" Key="$select" Label="Selected Columns" Type="Query"
	  OptionsEndPoint="get_table_columns" OptionsEndPointValueColumn="Name" OptionsEndPointParameters="Filter=mailFolder" 
	  OptionSort="ASC"
      MultiSelect="True" MultiSelectSeparator=","
      DataType="DT_WSTR" Length="4000"
      Desc="Select the individual columns to be included in the response, to reduce the response size and increase performance"
      HelpLink="https://zappysys.com/links?url=https://learn.microsoft.com/en-us/graph/query-parameters" />

    <EndPoint Name="ODataGeneralOptions">
      <Params>
        <Param Name="OrderBy" Key="$orderby" Label="Order By" Type="Query"
          Options="None=;AscendingOrder=SomeColumn asc;DescendingOrder=SomeColumn desc;"
          DataType="DT_WSTR" Length="200"
          Desc="Order the specified column by ascending or descending order"
          HelpLink="https://zappysys.com/links?url=https://learn.microsoft.com/en-us/graph/query-parameters" />
        <Param Name="SearchCriteria" Key="$filter" Label="Search Criteria" Type="Query"
          Options="None=;Equal Search=SomeColumn eq 'SomeValue';Substring Search=substringof(SomeField,'abc');Starts With=startswith(SomeField, 'abc')"
          Desc="Data filter (e.g. somecolumn -eq 'somevalue')"
          HelpLink="https://zappysys.com/links?url=https://learn.microsoft.com/en-us/graph/query-parameters" />
        <Param Name="PageSize" Key="$top" Label="Page Size" Type="Query" Value="100"
          DataType="DT_I4" Desc="The number of records to include in each page of results"
          HelpLink="https://zappysys.com/links?url=https://learn.microsoft.com/en-us/graph/query-parameters" />
      </Params>
    </EndPoint>

    <EndPoint Name="MessageOutputColumns">
      <Params>
        <Param Name="SelectedColumns" Template="MessageColumnsParam" />
        <Param Name="EnableArrayFlattening" Value="True" Type="Property" Desc="Enables deep array flattening for selected filtered hierarchy. When you turn on this property it will flatten each property of each array item and expose as column (e.g. If you have array property called tags and value is ['red','blue','yellow'] and if you turn on array flatterning then may see columns tags.1, tags.2, tags.3... tags.N in the output. You can control how many array items you want to flatten by setting MaxArrayItemsToFlatten property." />
        <Param Name="MaxArrayItemsToFlatten" Value="5" Type="Property" />
      </Params>
      <OutputColumns>
        <Column Name="id" Type="DT_WSTR" Label="Id" Length="1000" />
        <Column Name="receivedDateTime" Type="DT_DBTIMESTAMP" Label="ReceivedDateTime" />
        <Column Name="hasAttachments" Type="DT_BOOL" Label="HasAttachments" />
        <Column Name="subject" Type="DT_WSTR" Label="Subject" Length="800" />
        <Column Name="bodyPreview" Type="DT_WSTR" Label="BodyPreview" Length="4000" />
        <Column Name="sender.emailAddress.name" Type="DT_WSTR" Label="SenderEmailAddressName" Length="800" />
        <Column Name="sender.emailAddress.address" Type="DT_WSTR" Label="SenderEmailAddress" Length="800" />		
        <Column Name="importance" Type="DT_WSTR" Label="Importance" Length="500" />
        <Column Name="sentDateTime" Type="DT_DBTIMESTAMP" Label="SentDateTime" />		
        <Column Name="createdDateTime" Type="DT_DBTIMESTAMP" Label="CreatedDateTime" />
        <Column Name="lastModifiedDateTime" Type="DT_DBTIMESTAMP" Label="LastModifiedDateTime" />
        <Column Name="changeKey" Type="DT_WSTR" Label="ChangeKey" Length="1000" />
		
        <Column Name="toRecipients" Type="DT_WSTR" Label="ToRecipients" Length="1190" />
        <Column Name="ccRecipients" Type="DT_WSTR" Label="CcRecipients" Length="1190" />
        <Column Name="bccRecipients" Type="DT_WSTR" Label="BccRecipients" Length="1190" />
		
		
		
        <Column Name="toRecipients.1.emailAddress.address" Type="DT_WSTR" Label="ToRecipient1" Length="200" />
        <Column Name="toRecipients.2.emailAddress.address" Type="DT_WSTR" Label="ToRecipient2" Length="200" />
        <Column Name="toRecipients.3.emailAddress.address" Type="DT_WSTR" Label="ToRecipient3" Length="200" />
        <Column Name="toRecipients.4.emailAddress.address" Type="DT_WSTR" Label="ToRecipient4" Length="200" />
        <Column Name="toRecipients.5.emailAddress.address" Type="DT_WSTR" Label="ToRecipient5" Length="200" />
        <Column Name="ccRecipients.1.emailAddress.address" Type="DT_WSTR" Label="CcRecipient1" Length="200" />
        <Column Name="ccRecipients.2.emailAddress.address" Type="DT_WSTR" Label="CcRecipient2" Length="200" />
        <Column Name="ccRecipients.3.emailAddress.address" Type="DT_WSTR" Label="CcRecipient3" Length="200" />
        <Column Name="ccRecipients.4.emailAddress.address" Type="DT_WSTR" Label="CcRecipient4" Length="200" />
        <Column Name="ccRecipients.5.emailAddress.address" Type="DT_WSTR" Label="CcRecipient5" Length="200" />
        <Column Name="bccRecipients.1.emailAddress.address" Type="DT_WSTR" Label="BccRecipient1" Length="200" />
        <Column Name="bccRecipients.2.emailAddress.address" Type="DT_WSTR" Label="BccRecipient2" Length="200" />
        <Column Name="bccRecipients.3.emailAddress.address" Type="DT_WSTR" Label="BccRecipient3" Length="200" />
        <Column Name="bccRecipients.4.emailAddress.address" Type="DT_WSTR" Label="BccRecipient4" Length="200" />
        <Column Name="bccRecipients.5.emailAddress.address" Type="DT_WSTR" Label="BccRecipient5" Length="200" />
        <Column Name="categories" Type="DT_WSTR" Label="Categories" Length="1000" />
        <Column Name="parentFolderId" Type="DT_WSTR" Label="ParentFolderId" Length="1200" />
        <Column Name="conversationId" Type="DT_WSTR" Label="ConversationId" Length="1200" />
        <Column Name="conversationIndex" Type="DT_WSTR" Label="ConversationIndex" Length="1200" />
        <Column Name="isDeliveryReceiptRequested" Type="DT_BOOL" Label="IsDeliveryReceiptRequested" />
        <Column Name="isReadReceiptRequested" Type="DT_BOOL" Label="IsReadReceiptRequested" />
        <Column Name="isRead" Type="DT_BOOL" Label="IsRead" />
        <Column Name="isDraft" Type="DT_BOOL" Label="IsDraft" />
        <Column Name="webLink" Type="DT_WSTR" Label="WebLink" Length="4000" />
        <Column Name="inferenceClassification" Type="DT_WSTR" Label="InferenceClassification" Length="800" />
        <Column Name="internetMessageHeaders" Type="DT_NTEXT" Label="InternetMessageHeaders" />
        <Column Name="body.contentType" Type="DT_WSTR" Label="BodyContentType" Length="500" />
        <Column Name="body.content" Type="DT_NTEXT" Label="BodyContent" />
        <Column Name="from.emailAddress.name" Type="DT_WSTR" Label="FromEmailAddressName" Length="800" />
        <Column Name="from.emailAddress.address" Type="DT_WSTR" Label="FromEmailAddress" Length="800" />
        <Column Name="replyTo" Type="DT_WSTR" Label="ReplyTo" Length="1190" />
        <Column Name="uniqueBody.contentType" Type="DT_WSTR" Label="UniqueBodyContentType" Length="500" />
        <Column Name="uniqueBody.content" Type="DT_WSTR" Label="UniqueBodyContent" Length="4000" />
        <Column Name="flag.flagStatus" Type="DT_WSTR" Label="FlagFlagStatus" Length="800" />
        <Column Name="@odata.etag" Type="DT_WSTR" Label="ODataETag" Length="1000" />
		<Column Name="internetMessageId" Type="DT_WSTR" Label="InternetMessageId" Length="1800" />		
      </OutputColumns>
    </EndPoint>

    <EndPoint Name="AttachmentOutputColumns">
      <OutputColumns>
        <Column Name="id" Type="DT_WSTR" Label="Id" Length="1000" />
        <Column Name="name" Type="DT_WSTR" Label="Name" Length="200" />
        <Column Name="contentType" Type="DT_WSTR" Label="ContentType" Length="200" />
        <Column Name="isInline" Type="DT_BOOL" Label="IsInline" />
        <Column Name="lastModifiedDateTime" Type="DT_DBTIMESTAMP" Label="LastModifiedDateTime" />
        <Column Name="size" Type="DT_I4" Label="Size" />
        <Column Name="contentId" Type="DT_WSTR" Label="ContentId" Length="2000" />
        <Column Name="contentBytes" Type="DT_NTEXT" Label="ContentBytes" />
        <Column Name="@odata.type" Type="DT_WSTR" Label="ODataType" Length="200" />
        <Column Name="@odata.mediaContentType" Type="DT_WSTR" Label="ODataMediaContentType" Length="200" />
      </OutputColumns>
    </EndPoint>

    <EndPoint Name="UserOutputColumns">
      <Params>
        <Param Name="SelectedColumns" Template="UserColumnsParam" />
      </Params>
      <OutputColumns>
        <Column Name="businessPhones" Type="DT_WSTR" Label="BusinessPhones" Length="4000" />
        <Column Name="displayName" Type="DT_WSTR" Label="DisplayName" Length="500" />
        <Column Name="givenName" Type="DT_WSTR" Label="GivenName" Length="80" />
        <Column Name="jobTitle" Type="DT_WSTR" Label="JobTitle" Length="200" />
        <Column Name="mail" Type="DT_WSTR" Label="Mail" Length="200" />
        <Column Name="mobilePhone" Type="DT_WSTR" Label="MobilePhone" Length="500" />
        <Column Name="officeLocation" Type="DT_WSTR" Label="OfficeLocation" Length="500" />
        <Column Name="preferredLanguage" Type="DT_WSTR" Label="PreferredLanguage" Length="100" />
        <Column Name="surname" Type="DT_WSTR" Label="SurName" Length="80" />
        <Column Name="userPrincipalName" Type="DT_WSTR" Label="UserPrincipalName" Length="200" />
        <Column Name="id" Type="DT_WSTR" Label="Id" Length="4000" />
      </OutputColumns>
    </EndPoint>

    <EndPoint Name="MailFolderOutputColumns">
      <Params>
        <Param Name="SelectedColumns" Template="MailFolderColumnsParam" />
      </Params>
      <OutputColumns>
        <Column Name="id" Type="DT_WSTR" Label="Id" Length="1200" />
        <Column Name="displayName" Type="DT_WSTR" Label="DisplayName" Length="500" />
        <Column Name="parentFolderId" Type="DT_WSTR" Label="ParentFolderId" Length="1200" />
        <Column Name="childFolderCount" Type="DT_I4" Label="ChildFolderCount" />
        <Column Name="unreadItemCount" Type="DT_I4" Label="UnreadItemCount" />
        <Column Name="totalItemCount" Type="DT_I4" Label="TotalItemCount" />
        <Column Name="sizeInBytes" Type="DT_I4" Label="SizeInBytes" />
        <Column Name="isHidden" Type="DT_BOOL" Label="IsHidden" />
      </OutputColumns>
    </EndPoint>
    
    <EndPoint Name="PaginationParams">
      <Params>
        <Param Name="PageSize" Label="PageSize" Type="Query" Value="100" Desc="The number of records to show on each page of results." Hidden="True" />
        <Param Name="DataFormat" Type="Property" Value="OData" />
      </Params>
    </EndPoint>

  </Template>


  <EndPoints>


		
	<!-- GET Tables-->	
    <EndPoint Name="get_tables"
              Label="Get Tables"
              Url="/$metadata"
			  Filter="$.edmx:Edmx.edmx:DataServices.Schema[*].EntityType[*]"
              Method="GET"
			  Desc="Get table list and its properties for Graph API"
			  ResponseFormat="Xml" 
			  CachedTtl="600"
			  >
		<OutputColumns>
			<Column Name="@Name" Type="DT_WSTR" Label="Name" Length="500"  /> 
			<Column Name="@BaseType" Type="DT_WSTR" Label="BaseType" Length="500"  />			
		</OutputColumns>
    </EndPoint>
	
    <EndPoint Name="get_table_columns"
              Label="Get Table Columns"
              Url="/$metadata"
              Method="GET"
			  Desc="Get table list and its properties for Graph API"
			  Filter="$.edmx:Edmx.edmx:DataServices.Schema[*].EntityType[*].Property[*]"
			  IncludeParentColumns="True"
			  ResponseFormat="Xml" 
			  CachedTtl="600"
			  >			  
		<Params>
			<Param Name="Filter" Label="Table Name" Value="" DataEndPoint="get_tables" 
			  ValueTemplate="$.edmx:Edmx.edmx:DataServices.Schema[*].EntityType[?(@@Name=='{$value$}')].Property[*]"
			  OptionsEndPoint="get_tables"
              OptionsEndPointValueColumn="name"
              OptionsEndPointLabelColumn="name"
			  OptionSort="ASC"
			/>
		</Params>	  
		<OutputColumns>
			<Column Name="P_edmx:Edmx.edmx:DataServices.Schema_EntityType_@Name" Label="EntityName" Type="DT_WSTR" Length="500" />
			<Column Name="P_edmx:Edmx.edmx:DataServices.Schema_EntityType_@BaseType" Label="BaseType" Type="DT_WSTR" Length="500" />
			<Column Name="@Name" Type="DT_WSTR" Label="Name" Length="500"  />
			<Column Name="@Type" Type="DT_WSTR" Label="Type" Length="500"  />
			<Column Name="@Nullable" Type="DT_BOOL" Label="Nullable"  />
		</OutputColumns>
    </EndPoint>	
	
    <!-- GET MY INFO ********************************************************************-->
    <EndPoint Name="get_my_info"
              Label="Get My Information"
              Url="/me"
              Method="GET"
			  Desc="Get general information about the current user.">
      <OutputColumns>
        <Column Name="id" Type="DT_WSTR" Label="Id" Length="500" />
        <Column Name="displayName" Type="DT_WSTR" Label="DisplayName" Length="200" />
        <Column Name="givenName" Type="DT_WSTR" Label="GivenName" Length="200" />
        <Column Name="surname" Type="DT_WSTR" Label="SurName" Length="200" />
        <Column Name="jobTitle" Type="DT_WSTR" Label="JobTitle" Length="200" />
        <Column Name="mail" Type="DT_WSTR" Label="Mail" Length="200" />
        <Column Name="userPrincipalName" Type="DT_WSTR" Label="UserPrincipalName" Length="200" />
        <Column Name="businessPhones" Type="DT_WSTR" Label="BusinessPhones" Length="200" />
        <Column Name="mobilePhone" Type="DT_WSTR" Label="MobilePhone" Length="200" />
        <Column Name="officeLocation" Type="DT_WSTR" Label="OfficeLocation" Length="500" />
        <Column Name="preferredLanguage" Type="DT_WSTR" Label="PreferredLanguage" Length="200" />
        <Column Name="@odata.context" Type="DT_WSTR" Label="@OdataContext" Length="2000" />
      </OutputColumns>
    </EndPoint>


    <!-- GET MESSAGES *******************************************************************-->
    <EndPoint Name="get_messages"
              Label="Get Messages"
              Url="/users/[$UserId$]/messages"
              Method="GET"
              Filter="$.value[*]"
			        Desc="Get the mail messages for the specified user ID or email address."
              Template="ODataGeneralOptions, MessageOutputColumns, PaginationParams"
              Headers="Prefer: outlook.body-content-type=[$EmailBodyFormat$]"
              HelpLink="https://learn.microsoft.com/en-us/graph/api/user-list-messages?view=graph-rest-1.0">
      <Params>
        <Param Name="UserId" Label="User ID or Email" Required="True" Type="Placeholder"
              Desc="The Microsoft Mail user ID GUID or email address for the account to read messages from. (Examples: '4ff54a77-9c09-4274-958f-83bdc0a53900' or 'first.last@domain.com')"
						  OptionsEndPoint="get_users"
						  OptionsEndPointValueColumn="Id"
						  OptionsEndPointLabelColumn="DisplayName" />
        <Param Name="SearchCriteria" Key="$filter" Label="Search Criteria" Type="Query"
              Options="None=;Has Attachments, Sent After, and Subject containing 'party'=hasAttachments eq true and sentDateTime gt 2023-03-01 and contains(subject, 'party');Received before=receivedDateTime lt 2023-02-01;Sent after=sentDateTime gt 2023-03-01;Has attachment(s)=hasAttachments eq true;Subject contains 'case'=contains(subject, 'case');Subject starts with 'Your'=startsWith(subject, 'Your');Subject does not start with 'Your'=not(startsWith(subject, 'Your'));Only normal importance=importance eq 'normal';Only low importance=importance eq 'low';Only high importance=importance eq 'high';Only if delivery receipt requested=isDeliveryReceiptRequested eq true;Only if delivery receipt not requested=isDeliveryReceiptRequested eq false;Only if read receipt requested=isReadReceiptRequested eq true;Only if read receipt not requested=isReadReceiptRequested eq false;Only if message is read=isRead eq true;Only if message is unread=isRead eq false;Only if message is a draft=isDraft eq true;Only if message is not a draft=isDraft eq false;Body content contains=contains(body/content, 'money');From Sender 'John Doe'=sender/emailAddress/name eq 'John Doe'"
              Desc="Data filter (e.g. somecolumn -eq 'somevalue')"
              HelpLink="https://zappysys.com/links?url=https://learn.microsoft.com/en-us/graph/query-parameters" />        
        <Param Name="EmailBodyFormat" Label="Email Body Format" Type="Placeholder" Value="html" Required="True"
              Options="html;text" />
      </Params>
    </EndPoint>


    <!-- SEND MAIL **********************************************************************-->
    <EndPoint Name="send_mail"
              Label="Send Mail"
              Url="/me/sendMail"
              Method="POST"
              ContentType="application/json"
              JsonRowFormat="Multicontent"
              Desc="Sends an email message."
              HelpLink="https://learn.microsoft.com/en-us/graph/api/user-sendmail?view=graph-rest-1.0">
      <LayoutMap>
        <![CDATA[<?xml version="1.0" encoding="utf-8"?>
				<settings ver="3" singledataset="True">
					<dataset id="root" main="True" readfrominput="True"></dataset>
					<map name="message">
						<map src="Subject" name="subject" />
            <map name="body">
              <map src="BodyContentType" name="contentType" />
              <map src="BodyContent" name="content" />
            </map>
						<map src="ToRecipients" name="toRecipients" fragment="True" />
						<map src="CcRecipients" name="ccRecipients" fragment="True" />
						<map src="BccRecipients" name="bccRecipients" fragment="True" />
						<map src="InternetMessageHeaders" name="internetMessageHeaders" fragment="True" />
						<map src="Attachments" name="attachments" fragment="True" />
            <map src="Importance" name="importance" />
            <map src="IsDeliveryReceiptRequested" name="isDeliveryReceiptRequested" />
            <map src="IsReadReceiptRequested" name="isReadReceiptRequested" />
					</map>
          <map src="SaveToSentItems" name="saveToSentItems" />
				</settings>]]>
      </LayoutMap>
      <Body>
        <![CDATA[{$rows$}]]>
      </Body>
      <Params>
        <Param Name="DoNotOutputEmptyNestedProperty" Type="Property" Value="True" />
        <Param Name="DoNotOutputEmptyArrayProperty" Type="Property" Value="True" />
        <Param Name="RawOutputDataRowTemplate" Type="Property" Value="{}" ValueTemplate="{Response:'Message Sent'}" />
        <Param Name="EnableRawOutputModeSingleRow" Type="Property" Value="True" />
      </Params>
      <InputColumns>
        <Column Name="Subject" Type="DT_WSTR" Length="250" />
        <Column Name="BodyContentType" Type="DT_WSTR" Length="8" Options="html;text" Example="html or text" />
        <Column Name="BodyContent" Type="DT_NTEXT" />
        <Column Name="ToRecipients" DataType="DT_WSTR" Length="4000" Raw="True" Example="[{ &quot;emailAddress&quot;: { &quot;address&quot;: &quot;john.doe@domain.com&quot; }}, { &quot;emailAddress&quot;: { &quot;address&quot;: &quot;jane.doe@domain.com&quot; }}]"/>
        <Column Name="CcRecipients" DataType="DT_WSTR" Length="4000" Raw="True" Example="[{ &quot;emailAddress&quot;: { &quot;address&quot;: &quot;john.doe@domain.com&quot; }}, { &quot;emailAddress&quot;: { &quot;address&quot;: &quot;jane.doe@domain.com&quot; }}]"/>
        <Column Name="BccRecipients" DataType="DT_WSTR" Length="4000" Raw="True" Example="[{ &quot;emailAddress&quot;: { &quot;address&quot;: &quot;john.doe@domain.com&quot; }}, { &quot;emailAddress&quot;: { &quot;address&quot;: &quot;jane.doe@domain.com&quot; }}]"/>
        <Column Name="InternetMessageHeaders" Type="DT_WSTR" Length="4000" Raw="True" Example="[{ &quot;name&quot;: &quot;x-custom-header-group-name&quot;, &quot;value&quot;: &quot;Nevada&quot; }, { &quot;name&quot;: &quot;x-custom-header-group-id&quot;, &quot;value&quot;: &quot;NV001&quot; }]"/>
        <Column Name="Attachments" Type="DT_NTEXT" Raw="True" Example="[{ &quot;@odata.type&quot;: &quot;#microsoft.graph.fileAttachment&quot;, &quot;name&quot;: &quot;attachment.txt&quot;, &quot;contentType&quot;: &quot;text/plain&quot;, &quot;contentBytes&quot;: &quot;SGVsbG8gV29ybGQh&quot; }]"/>
        <Column Name="Importance" Type="DT_WSTR" Length="10" />        
        <Column Name="IsDeliveryReceiptRequested" Type="DT_BOOL" />
        <Column Name="IsReadReceiptRequested" Type="DT_BOOL" />
        <Column Name="SaveToSentItems" Type="DT_BOOL" />
      </InputColumns>
      <OutputColumns>
        <Column Name="Id" DataType="DT_WSTR" />
        <Column Name="Response" DataType="DT_WSTR" Length="255" />
      </OutputColumns>
    </EndPoint>


    <!-- GET MY MAIL FOLDERS ************************************************************-->
    <EndPoint Name="get_my_mailfolders"
              Label="Get Mail Folders"
              Url="/me/mailFolders"
              Method="GET"
              Filter="$.value[*]"
			        Desc="Get the list of mail folders for the current user."
              Template="ODataGeneralOptions, MailFolderOutputColumns, PaginationParams"
              HelpLink="https://learn.microsoft.com/en-us/graph/api/user-list-mailfolders?view=graph-rest-1.0">
    </EndPoint>

    <!-- JASON DAVIS: I tried to get specific mail folders by using the following format:
         https://graph.microsoft.com/v1.0/users/[$UserId$]/mailfolders/[$MailFolderId$]
         However, the endpoints for getting a specific mail folder for a specific user
         does not seem to be supported, I can only get specific messages when using the
         /me/mailfolders endpoint. We may have to revisit this to see how to accomplish
         this in a better way. -->
    <!-- GET MY MAIL FOLDER BY ID *******************************************************-->
    <EndPoint Name="get_my_mailfolder"
              Label="Get Mail Folder by Id"
              Url="/me/mailFolders/[$MailFolderId$]"
              Method="GET"
			        Desc="Get the mail folder specified by the mail folder Id."
              Template="ODataGeneralOptions, MailFolderOutputColumns"
              HelpLink="https://learn.microsoft.com/en-us/graph/api/mailfolder-get?view=graph-rest-1.0">
      <Params>
        <Param Name="MailFolderId" ReadAs="Id" Label="Mail Folder Id" IsKey="True" Required="True" Type="Placeholder" Desc="The Microsoft Mail mail folder ID for the mail folder." />
      </Params>
    </EndPoint>


    <!-- GET USERS **********************************************************************-->
    <EndPoint Name="get_users"
              Label="Get Users"
              Url="/users"
              Method="GET"
              Filter="$.value[*]"
			        Desc="Get the list of users."
              Template="ODataGeneralOptions, UserOutputColumns, PaginationParams"
              HelpLink="https://learn.microsoft.com/en-us/graph/api/user-list?view=graph-rest-1.0">
    </EndPoint>


    <!-- GET USER BY ID *****************************************************************-->
    <EndPoint Name="get_user"
              Label="Get User by Id"
              Url="/users/[$UserId$]"
              Method="GET"
			        Desc="Get a specific user."
              Template="ODataGeneralOptions, UserOutputColumns"
              HelpLink="https://learn.microsoft.com/en-us/graph/api/user-get?view=graph-rest-1.0">
      <Params>
        <Param Name="UserId" Label="User ID or Email" IsKey="True" Required="True" Type="Placeholder" Desc="The Microsoft Mail user ID GUID or email address to get. (Examples: '4ff54a77-9c09-4274-958f-83bdc0a53900' or 'first.last@domain.com')" />
      </Params>
    </EndPoint>


    <!-- GET MAIL FOLDERS ***************************************************************-->
    <EndPoint Name="get_mailfolders"
              Label="Get Mail Folders"
              Url="/users/[$UserId$]/mailFolders"
              Method="GET"
              Filter="$.value[*]"
			        Desc="Get the list of mail folders for the specified user Id."
              Template="ODataGeneralOptions, MailFolderOutputColumns, PaginationParams"
              HelpLink="https://learn.microsoft.com/en-us/graph/api/user-list-mailfolders?view=graph-rest-1.0">
      <Params>
        <Param Name="UserId" Label="User ID or Email" Required="True" Type="Placeholder" Desc="The Microsoft Mail user ID GUID or email address to get mail folders for. (Examples: '4ff54a77-9c09-4274-958f-83bdc0a53900' or 'first.last@domain.com')" />
      </Params>
    </EndPoint>


    <!-- GET MY MESSAGES ****************************************************************-->
    <EndPoint Name="get_my_messages"
              Label="Get My Messages"
              Url="/me/messages"
              Method="GET"
              Filter="$.value[*]"
			        Desc="Get the mail messages for the current user."
              Template="ODataGeneralOptions, MessageOutputColumns, PaginationParams"
              Headers="Prefer: outlook.body-content-type=[$EmailBodyFormat$]"
              HelpLink="https://learn.microsoft.com/en-us/graph/api/user-list-messages?view=graph-rest-1.0">
      <Params>
        <Param Name="SearchCriteria" Key="$filter" Label="Search Criteria" Type="Query"
              Options="None=;Has Attachments, Sent After, and Subject containing 'party'=hasAttachments eq true and sentDateTime gt 2023-03-01 and contains(subject, 'party');Received before=receivedDateTime lt 2023-02-01;Sent after=sentDateTime gt 2023-03-01;Has attachment(s)=hasAttachments eq true;Subject contains 'case'=contains(subject, 'case');Subject starts with 'Your'=startsWith(subject, 'Your');Subject does not start with 'Your'=not(startsWith(subject, 'Your'));Only normal importance=importance eq 'normal';Only low importance=importance eq 'low';Only high importance=importance eq 'high';Only if delivery receipt requested=isDeliveryReceiptRequested eq true;Only if delivery receipt not requested=isDeliveryReceiptRequested eq false;Only if read receipt requested=isReadReceiptRequested eq true;Only if read receipt not requested=isReadReceiptRequested eq false;Only if message is read=isRead eq true;Only if message is unread=isRead eq false;Only if message is a draft=isDraft eq true;Only if message is not a draft=isDraft eq false;Body content contains=contains(body/content, 'money');From Sender 'John Doe'=sender/emailAddress/name eq 'John Doe'"
              Desc="Data filter (e.g. somecolumn -eq 'somevalue')"
              HelpLink="https://zappysys.com/links?url=https://learn.microsoft.com/en-us/graph/query-parameters" />
        <Param Name="EmailBodyFormat" Label="Email Body Format" Type="Placeholder" Value="html" Required="True"
               Options="html;text" />
      </Params>
    </EndPoint>

    
    <!-- GET MY MESSAGE BY ID ***********************************************************-->
    <EndPoint Name="get_my_message"
              Label="Get My Message by Id"
              Url="/me/messages/[$MessageId$]"
              Method="GET"
			        Desc="Get the mail message by message Id for the specified user ID or email address."
              Template="ODataGeneralOptions, MessageOutputColumns"
              Headers="Prefer: outlook.body-content-type=[$EmailBodyFormat$]"
              HelpLink="https://learn.microsoft.com/en-us/graph/api/message-get?view=graph-rest-1.0">
      <Params>
        <Param Name="MessageId" Label="Message Id" ReadAs="Id" IsKey="True" Required="True" Type="Placeholder" Desc="The Microsoft Mail message ID GUID for the message to read. (Example: 'c3220464-7209-453c-8840-3cf4de0afaa6')" />
        <Param Name="EmailBodyFormat" Label="Email Body Format" Type="Placeholder" Value="html" Required="True"
               Options="html;text" />
      </Params>
    </EndPoint>

    <!-- GET MESSAGE ATTACHMENT LIST ****************************************************-->
    <EndPoint Name="get_message_attachments"
              Label="Get Message Attachments"
              Url="/me/messages/[$MessageId$]/attachments"
              Method="GET"
              Filter="$.value[*]"
			        Desc="Get the list of attachments linked to the specified message Id."
              Template="ODataGeneralOptions, AttachmentOutputColumns, PaginationParams"
              HelpLink="https://learn.microsoft.com/en-us/graph/api/message-list-attachments?view=graph-rest-1.0">
      <Params>
        <Param Name="MessageId" ReadAs="Id" Label="Message ID" IsKey="True" Required="True" Type="Placeholder" Desc="The message Id for which to get attachments from." />
      </Params>
    </EndPoint>


    <!-- GET A SPECIFIC MESSAGE ATTACHMENT **********************************************-->
    <EndPoint Name="get_message_attachment"
              Label="Get Message Attachment"
			        Desc="Get a specific attachment linked to the specified message Id."
              Url="/me/messages/[$MessageId$]/attachments/[$AttachmentId$]"
              Method="GET"
              Template="ODataGeneralOptions, AttachmentOutputColumns"
              HelpLink="https://learn.microsoft.com/en-us/graph/api/attachment-get?view=graph-rest-1.0">
      <Params>
        <Param Name="MessageId" Label="Message ID" Required="True" Type="Placeholder" Desc="The message Id for which to get the attachment from." />
        <Param Name="AttachmentId" IsKey="True" Label="Attachment ID" Required="True" Type="Placeholder" Desc="The attachment Id for the attachment to get." />
      </Params>
    </EndPoint>


    <!-- DOWNLOAD A SPECIFIC MESSAGE ATTACHMENT *****************************************-->
    <EndPoint Name="download_message_attachment"
              Label="Download Message Attachment"
			        Desc="Download a specific attachment linked to the specified message Id."
              Url="/me/messages/[$MessageId$]/attachments/[$AttachmentId$]/$value"
              Method="GET"
              HelpLink="https://learn.microsoft.com/en-us/graph/api/attachment-get?view=graph-rest-1.0">
      <Params>
        <Param Name="MessageId" Label="Message ID" Required="True" Type="Placeholder" Desc="The message Id for which to get the attachment from." />
        <Param Name="AttachmentId" IsKey="True" Label="Attachment ID" Required="True" Type="Placeholder" Desc="The attachment Id for the attachment to get." />
        <Param Name="RequestTimeoutMs" Type="Property" Desc="Timeout in milliseconds after which download stops" Value="7200000" Required="True" Hidden="True" />
        <Param Name="FileOverwriteMode" Type="Property" Value="AlwaysOverwrite" Required="True" />
        <Param Name="TargetFilePath" Key="ResponseDataFile" Desc="Specify a disk file path to save file as" Type="Property" Required="True" Value="" Editor="FileSave" />
        <Param Name="SaveContentAsBinary" Type="Property" Value="True" Hidden="True" />
        <Param Name="RawOutputDataRowTemplate" Type="Property" Value="{Status:'Downloaded'}" />
        <Param Name="EnableRawOutputModeSingleRow" Type="Property" Value="True" />
      </Params>
      <OutputColumns>
        <Column Name="data" Type="DT_NTEXT" Label="Data" />
      </OutputColumns>
    </EndPoint>

  </EndPoints>


  <Tables>
    <Table Name="MyMessages"
           SelectEndPoint="get_my_messages"
           LookupEndPoint="get_my_message"
           InsertEndPoint="send_mail"
           />
    <Table Name="MyMailFolders"
           SelectEndPoint="get_my_mailfolders"
           LookupEndPoint="get_my_mailfolder"
           />
    <Table Name="Users"
           SelectEndPoint="get_users"
           LookupEndPoint="get_user"
           />		   
  </Tables>

  <Examples>
    
    <Example Default="True" Group="ODBC" Label="Get messages for the current user">
        <Code>
            <![CDATA[SELECT * FROM MyMessages]]>
        </Code>
    </Example>

    <Example Group="ODBC" Label="Get a specific message from the current user's account by the message ID">
    <Code>
      <![CDATA[SELECT * FROM MyMessages
WHERE Id='AAXkADIwNzNhODMyLTZiMTQtNDhiMC02OWQzLTc5YTY5M2IyMjk0NABGAyAAAACbj2hVuNphT74wylrfU4ixBwAbUV6IxRnpQrqzrb2WfacdAAAAAAEMAAAbUV6IxRnpQrqzrb2WfacdAAAysBnxAAA=']]>
    </Code>
  </Example>
    
    <Example Group="ODBC" Label="Get messages for a specified user">
    <Code>
      <![CDATA[SELECT * FROM get_messages
WITH (UserID='firstname.lastname@domainname.com')]]>
    </Code>
  </Example>

    <Example Group="ODBC" Label="Get first 5 messages for a specified user">
      <Code>
        <![CDATA[SELECT * FROM get_messages
WITH (UserID='firstname.lastname@domainname.com', PageSize='5')]]>
      </Code>
    </Example>

    <Example Group="ODBC" Label="Get messages with a subject line that starts with 'Announcements for'">
      <Code>
        <![CDATA[SELECT * FROM get_messages
WITH (UserID='firstname.lastname@domainname.com', SearchCriteria='startsWith(Subject,''Announcements for'')')]]>
      </Code>
    </Example>

    <Example Group="ODBC" Label="Get messages that have at least one attachment associated with them">
      <Code>
        <![CDATA[SELECT * FROM get_messages
WITH (UserID='firstname.lastname@domainname.com', SearchCriteria='hasAttachments eq true')]]>
      </Code>
    </Example>

    <Example Group="ODBC" Label="Get messages that are unread">
      <Code>
        <![CDATA[SELECT * FROM get_messages
WITH (UserID='firstname.lastname@domainname.com', SearchCriteria='IsRead eq false')]]>
      </Code>
    </Example>

    <Example Group="ODBC" Label="Get messages for the current user ordered by the time they were sent in ascending order">
      <Code>
        <![CDATA[SELECT * FROM MyMessages WITH (OrderBy='sentDateTime')]]>
      </Code>
    </Example>

    <Example Group="ODBC" Label="Get messages for the current user ordered by the time they were sent in descending order">
      <Code>
        <![CDATA[SELECT * FROM MyMessages WITH (OrderBy='sentDateTime desc')]]>
      </Code>
    </Example>

    <Example Group="ODBC" Label="Get messages for the current user ordered by the time they were received in ascending order">
      <Code>
        <![CDATA[SELECT * FROM MyMessages WITH (OrderBy='receivedDateTime')]]>
      </Code>
    </Example>

    <Example Group="ODBC" Label="Get messages for the current user ordered by the time they were received in descending order">
      <Code>
        <![CDATA[SELECT * FROM MyMessages WITH (OrderBy='receivedDateTime desc')]]>
      </Code>
    </Example>

    <Example Group="ODBC" Label="Get messages for the current user ordered by the name of the sender in ascending order">
      <Code>
        <![CDATA[SELECT * FROM MyMessages WITH (OrderBy='sender/emailAddress/name')]]>
      </Code>
    </Example>

    <Example Group="ODBC" Label="Get messages for the current user ordered by the name of the sender in descending order">
      <Code>
        <![CDATA[SELECT * FROM MyMessages WITH (OrderBy='sender/emailAddress/name desc')]]>
      </Code>
    </Example>

    <Example Group="ODBC" Label="Get all mail folders associated with the current user">
      <Code>
        <![CDATA[SELECT * FROM MyMailFolders]]>
      </Code>
    </Example>

    <Example Group="ODBC" Label="Get a specific mail folder associated with the current user by its mail folder ID">
      <Code>
        <![CDATA[SELECT * FROM MyMailFolders
WHERE (Id='AAMkADIwNzNhODMyLTZiMTQtNDhiMCz4OWQzLTc5YTY5M2IyMjk0NAYuAAAAAACbj2hVuNphT74wyYrfU4ixAQAbUV6IxRnpQrWzrb2WfacdAAAAAAEKAcA=')]]>
      </Code>
    </Example>

    <Example Group="ODBC" Label="Get all attachments linked to the specified message ID">
      <Code>
        <![CDATA[SELECT * FROM get_message_attachments
WITH (MessageId='AAXkADIwNzNhODMyLTZiMTQtNDhiMC02OWQzLTc5YTY5M2IyMjk0NABGAyAAAACbj2hVuNphT74wylrfU4ixBwAbUV6IxRnpQrqzrb2WfacdAAAAAAEMAAAbUV6IxRnpQrqzrb2WfacdAAAysBnxAAA=')]]>
      </Code>
    </Example>

    <Example Group="ODBC" Label="Get the specified attachment by message ID and attachment ID">
      <Code>
        <![CDATA[SELECT * FROM get_message_attachment
WITH (MessageId='AAXkADIwNzNhODMyLTZiMTQtNDhiMC02OWQzLTc5YTY5M2IyMjk0NABGAyAAAACbj2hVuNphT74wylrfU4ixBwAbUV6IxRnpQrqzrb2WfacdAAAAAAEMAAAbUV6IxRnpQrqzrb2WfacdAAAysBnxAAA=',
AttachmentId='AAMkADIwNzNhODMyLTZiMTQtNDhiM704OWQzLTc5YTY5M2IyMjk0NABGAAqAAACbj2hVuNphT74wylrfU4ixBwAbUV6IxRnpQrqzrb2WfacdAABBAAEMAAAbUV6IxRnpQrqzrb2WfacdAAAysB9xAAABEgAQAK6dg4NuEa5Fmn_5Tp_D_XM=')]]>
      </Code>
    </Example>

    <Example Group="ODBC" Label="Download the specified attachment by message ID and attachment ID and save it to a file">
      <Code>
        <![CDATA[SELECT * FROM download_message_attachment
WITH (MessageId='AAMkADIwNz2hODMyLTZiMTQtNDhiMC04OWQzLTc5YTY5M2IyMjk0NABGZAAAAxCbj2hVuNphT74wylrfU4ixBwAbUV6IxRnpQ6qzrb2WfacdAAAAAAEMAAAbUb6IxRnpQrqzrb2WfacdAAAysBnxAAA=',
AttachmentId='AAMkADIwNzNhODMyLTZiMTQtNDhiMC04cWQzLTc5YTY5M2IyMjk0NABGAAAAAACbj2hVuNphTZ4wylrfU4ixBwAbUV6IxRnpQrqzrb2WfacdAAAAAAEMAA8bUV6IxRnpQrqzrb2WfacdAAAysBnxAAABEgAQAK6dg4NuEa5Fmn_5Tp_D_XM=',
TargetFilePath='C:\temp\photo.png'
)]]>
      </Code>
    </Example>

    <Example Group="ODBC" Label="Send a simple email message including message headers, an HTML body, and recipients">
      <Code>
        <![CDATA[INSERT INTO MyMessages
(Subject, BodyContentType, BodyContent, ToRecipients, CcRecipients, BccRecipients, InternetMessageHeaders,
 Attachments, Importance, IsDeliveryReceiptRequested, IsReadReceiptRequested, SaveToSentItems)
VALUES
('Employee Reviews Scheduled', 'HTML', '<b>Hi All,</b> employee reviews have been scheduled. <span style="text-decoration: underline;">Please reflect this in your notes.</span>',
 '[{ "emailAddress": { "address": "john.doe@domain.com" }}, { "emailAddress": { "address": "jane.doe@domain.com" }}]',
 '[{ "emailAddress": { "address": "mary.dawson@domain.com" }}]',
 '[{ "emailAddress": { "address": "ryan.connor@domain.com" }}]',
 '[{ "name": "x-custom-header-group-name", "value": "Managers" }, { "name": "x-custom-header-group-id", "value":"MGR001" }]',
 '[]', 'normal', 'false', 'false', 'true')]]>
      </Code>
    </Example>

  </Examples>
  
  
</ApiConfig>