The CData Sync App provides a straightforward way to continuously pipeline your Microsoft Exchange data to any database, data lake, or data warehouse, making it easily available for Analytics, Reporting, AI, and Machine Learning.
The Microsoft Exchange connector can be used from the CData Sync application to pull data from Microsoft Exchange and move it to any of the supported destinations.
Create a connection to Microsoft Exchange by navigating to the Connections page in the Sync App application and selecting the corresponding icon in the Add Connections panel. If the Microsoft Exchange icon is not available, click the Add More icon to download and install the Microsoft Exchange connector from the CData site.
Required properties are listed under the Settings tab. The Advanced tab lists connection properties that are not typically required.
There are two services available for connecting to Exchange. These are EWS (Exchange Web Services) and the Microsoft Graph. Exchange Web Services is available for both Exchange OnPremise and Online, but is no longer receiving updates. Microsoft recommends switching to using the Microsoft Graph for Exchange Online users. Both are available with our tool.
To switch between the two, use the Schema connection property to set either EWS or MSGraph. If you wish to use EWS with Exchange Online, set Schema to EWS and the Platform to Exchange_Online.
When connecting to Exchange Online, authentication will be done via OAuth. If you are connecting to Exchange Online platform through EWS, set the AuthScheme property to either AzureAD, AzureServicePrincipal or AzureMSI. Otherwise if you will be using Microsoft Graph to connect to Exchange Online, resources will be pulled from a different service so the Schema should be set to MSGraph.
Azure AD is a connection type that leverages OAuth to authenticate. OAuth requires the authenticating user to interact with Microsoft Exchange using an internet browser. The Sync App facilitates this in several ways as described below. Set your AuthScheme to AzureAD. The rest of the AzureAD flows assume that you have done so.
For authentication, the only difference between the two methods is that you must set two additional connection properties when using custom OAuth applications.
After setting the following connection properties, you are ready to connect:
When you connect the Sync App opens the OAuth endpoint in your default browser. Log in and grant permissions to the application.
When connecting via a Web application, you need to register a custom OAuth app with Microsoft Exchange. See Creating a Custom AzureAD App. You can then use the Sync App to get and manage the OAuth token values. Get an OAuth Access Token
Set one of the following connection properties groups depending on the authentication type to obtain the OAuthAccessToken:
You can then call stored procedures to complete the OAuth exchange:
Call the GetOAuthAuthorizationURL stored procedure. Set the AuthMode input to WEB and set the CallbackURL input to the Redirect URI you specified in your app settings. If necessary, set the Permissions parameter to request custom permissions.
The stored procedure returns the URL to the OAuth endpoint.
To connect to data, set the OAuthAccessToken connection property to the access token returned by the stored procedure. When the access token expires after ExpiresIn seconds, call GetOAuthAccessToken again to obtain a new access token.
To configure the driver to use OAuth with a user account on a headless machine, you need to authenticate on another device that has an internet browser.
Option 1: Obtain and Exchange a Verifier Code
To obtain a verifier code, you must authenticate at the OAuth authorization URL.
Follow the steps below to authenticate from the machine with an internet browser and obtain the OAuthVerifier connection property.
On the headless machine, set the following connection properties to obtain the OAuth authentication values:
After the OAuth settings file is generated, you need to re-set the following properties to connect:
Option 2: Transfer OAuth Settings
Prior to connecting on a headless machine, you need to create and install a connection with the driver on a device that supports an internet browser. Set the connection properties as described in "Desktop Applications" above.
After completing the instructions in "Desktop Applications", the resulting authentication values are encrypted and written to the path specified by OAuthSettingsLocation. The default filename is OAuthSettings.txt.
Once you have successfully tested the connection, copy the OAuth settings file to your headless machine.
On the headless machine, set the following connection properties to connect to data:
Admin consent refers to when the Admin for an Azure Active Directory tenant grants permissions to an application which requires an admin to consent to the use case. The embedded app within the CData Sync App, contains no permissions that require admin consent. Therefore, this information applies only to custom applications.
Admin Consent Permissions
When creating a new OAuth app in the Azure Portal, you must specify which permissions the app will require. Some permissions may be marked stating "Admin Consent Required". For example, all Groups permissions require Admin Consent. If your app requires admin consent, there are a couple of ways this can be done.
The easiest way to grant admin consent is to just have an admin log into portal.azure.com and navigate to the app you have created in App Registrations. Under API Permissions, there will be a button for Grant Consent. You can consent here for your app to have permissions on the tenant it was created under.
If your organization has multiple tenants or the app needs to be granted permissions for other tenants outside your organization, the GetAdminConsentURL may be used to generate the Admin Authorization url. Unlike the GetOAuthAuthorizationURL, there will be no important information returned from this endpoint. If the grants access, it will simply return a boolean indicating that permissions were granted.
Once an admin grants consent, authentication may be performed as normal.
Client OAuth Flow
All permissions related to the client oauth flow require admin consent. This means the app embedded with the CData Sync App cannot be used in the client oauth flow. You must create your own OAuth app in order to use client credentials. See Creating a Custom AzureAD App for more details.
In your App Registration in portal.azure.com, navigate to API Permissions and select the Microsoft Graph permissions. There are two distinct sets of permissions - Delegated and Application permissions. The permissions used during client credential authentication are under Application Permissions. Select the applicable permissions you require for your integration.
You are ready to connect after setting one of the below connection properties groups depending on the authentication type.
Authentication with client credentials takes place automatically like any other connection, except there is no window opened prompting the user. Because there is no user context, there is no need for a browser popup. Connections will take place and be handled internally.
Azure Service Principal is a connection type that goes through OAuth. Set your AuthScheme to AzureServicePrincipal. The authentication as an Azure Service Principal is handled via the OAuth Client Credentials flow, and it does not involve direct user authentication. Instead, credentials are created for just the app itself. All tasks taken by the app are done without a default user context, but based on the assigned roles. The application access to the resources is controlled through the assigned roles' permissions.
Note: You must create a custom application prior to assigning a role. See Creating a Custom AzureAD App for more information.
When authenticating using an Azure Service Principal, you must register an application with an Azure AD tenant. Follow the steps below to create a new service principal that can be used with the role-based access control.
In both methods
Before choosing client secret or certicate authentication, follow these steps then continue to the relevant section below:
Continue with the following:
Authenticating using a Certificate
Continue with the following:
If you are running Microsoft Exchange on an Azure VM, you can leverage Managed Service Identity (MSI) credentials to connect:
The MSI credentials are automatically obtained for authentication.
This section shows how to use the Sync App to authenticate using Kerberos.
To authenticate to Microsoft Exchange using Kerberos, set the following properties:
You can use one of the following options to retrieve the required Kerberos ticket.
This option enables you to use the MIT Kerberos Ticket Manager or kinit command to get tickets. Note that you do not need to set the User or Password connection properties with this option.
As an alternative to setting the KRB5CCNAME environment variable, you can directly set the file path using the KerberosTicketCache property. When set, the Sync App uses the specified cache file to obtain the Kerberos ticket to connect to Microsoft Exchange.
If the KRB5CCNAME environment variable has not been set, you can retrieve a Kerberos ticket using a Keytab File. To do so, set the User property to the desired username and set the KerberosKeytabFile property to a file path pointing to the keytab file associated with the user.
If both the KRB5CCNAME environment variable and the KerberosKeytabFile property have not been set, you can retrieve a ticket using a user and password combination. To do this, set the User and Password properties to the user/password combination that you use to authenticate with Microsoft Exchange.
More complex Kerberos environments may require cross-realm authentication where multiple realms and KDC servers are used (e.g., where one realm/KDC is used for user authentication and another realm/KDC is used for obtaining the service ticket).
In such an environment, set the KerberosRealm and KerberosKDC properties to the values required for user authentication. Also set the KerberosServiceRealm and KerberosServiceKDC properties to the values required to obtain the service ticket.
The CData Sync App can be used to perform administrative tasks with MSGraph Schema. This can be done by specifying the UserId column to execute CUD operations.
Many tables expose a special UserId column. This is designed to be used by an administrator to modify records on another user's account. If
you are not an administrator or do not desire this behavior, do not specify the UserId when performing an INSERT / UPDATE / DELETE operation.
For instance, executing the following will insert a contact for another user:
INSERT INTO Contacts (displayName, CompanyName, UserId) VALUES ('Bill', 'Bob Co', '12345')
The above request will have the overall effect of attempting to add a contact under the resource at /users/12345/contacts. When UserId is not specified, the resources affected will instead be modified under /users/me/contacts. In general if you are not an administrator, you can only affect or view records under /users/me, so it is not recommended to set UserId when you are not an admin.
Note: Specifying UserId in conjunction with an 'OR' operator of any given query is not supported. As an alternative you can use 'UNION' to retrieve the same result set.
Note: The following describes the behavior when Schema is set to EWS. It has no impact on MSGraph.
SELECT ItemId, Surname, EmailAddress1 FROM Contacts WHERE Surname='Smith'
If you wish to request the contents of a message or more information about a contact or calendar event, you will need to set IncludeContent to TRUE, specify the ItemIds of the items, or limit your results to a single item. For example:
SELECT ItemId, Surname, EmailAddress1 FROM Contacts WHERE ItemId='AZQ111222...'OR
SELECT ItemId, Surname, EmailAddress1 FROM Contacts WHERE ItemdId IN ('AZQ111222...', 'AZQ111223...', 'AZQ111224...', 'AZQ111225...')OR
SELECT ItemId, Surname, EmailAddress1 FROM Contacts WHERE Surname='Smith' LIMIT 1
Finding the FolderId of a subfolder of the Inbox:
SELECT DisplayName, FolderId FROM InboxFinding the FolderId of a Custom Folder that contains Contacts:
SELECT DisplayName, FolderId FROM Contacts WHERE ParentFolderName='publicfoldersroot'
If your public folder is nested, you may need to do a separate SELECT query on the parent custom folder:
SELECT DisplayName, FolderId FROM Contacts WHERE ParentFolderId='AAEuAAAAAAAa...'
Inserting into a subfolder of the Inbox:
INSERT INTO Inbox (Subject, FromEmailAddress, ToRecipients_EmailAddress, ParentFolderId) VALUES ('New email message', '[email protected]', '[email protected]', 'AAEuAAAAAAAa...')Inserting into a Public Folder that contains Contacts:
INSERT INTO Contacts (GivenName, Surname, EmailAddress1, ParentFolderId) VALUES ('Jill', 'Smith', '[email protected]', 'AAEuAAAAAAAa...')
Updating a Message item in a custom folder:
UPDATE Inbox SET Subject = 'Updated email message' WHERE ItemID = 'AZQ111222...')Deleting a Contact item from a Public Folder:
DELETE FROM Contacts WHERE ItemID = 'AZQ111222...')
This authentication method is typically used by administrators to configure access by a service account.
To impersonate all requests, set the following connection properties at connection time.
To impersonate a user for an individual query, use the pseudo columns of the same name.
This section details a selection of advanced features of the Microsoft Exchange Sync App.
The Sync App allows you to define virtual tables, called user defined views, whose contents are decided by a pre-configured query. These views are useful when you cannot directly control queries being issued to the drivers. See User Defined Views for an overview of creating and configuring custom views.
Use SSL Configuration to adjust how Sync App handles TLS/SSL certificate negotiations. You can choose from various certificate formats; see the SSLServerCert property under "Connection String Options" for more information.
Configure the Sync App for compliance with Firewall and Proxy, including Windows proxies and HTTP proxies. You can also set up tunnel connections.
The Sync App offloads as much of the SELECT statement processing as possible to Microsoft Exchange and then processes the rest of the query in memory (client-side).
See Query Processing for more information.
See Logging for an overview of configuration settings that can be used to refine CData logging. For basic logging, you only need to set two connection properties, but there are numerous features that support more refined logging, where you can select subsets of information to be logged using the LogModules connection property.
By default, the Sync App attempts to negotiate SSL/TLS by checking the server's certificate against the system's trusted certificate store.
To specify another certificate, see the SSLServerCert property for the available formats to do so.
To connect through the Windows system proxy, you do not need to set any additional connection properties. To connect to other proxies, set ProxyAutoDetect to false.
In addition, to authenticate to an HTTP proxy, set ProxyAuthScheme, ProxyUser, and ProxyPassword, in addition to ProxyServer and ProxyPort.
Set the following properties:
The CData Sync App models the Microsoft Exchange 2 and Microsoft Exchange APIs as relational tables, views, and stored procedures. These are defined in schema files, which are simple, text-based configuration files.
The available entities, as well as any API limitations and requirements for querying these entities, are documented in EWS Data Model and MSGraph Data Model. You can use the SupportEnhancedSQL feature, set by default, to circumvent most of these limitations.
The Data Models illustrate an example of what your Microsoft Exchange environment might look like. The actual data model will be obtained dynamically based on your Microsoft Exchange account.
EWS Data Model describes the schemas available to connect to Microsoft Exchange OnPremise and Microsoft Exchange Online using EWS. You can use tables to work with live Microsoft Exchange data. You can use stored procedures provided by CData Sync App to automate working with Microsoft Exchange data.
MSGraph Data Model describes the schemas available to connect to Microsoft Exchange Online accounts via the Microsoft Graph. You can use tables to work with live Microsoft Exchange data. You can use stored procedures provided by CData Sync App to automate working with Microsoft Exchange data.
The CData Sync App models Microsoft Exchange entities as relational Tables and Stored Procedures. These are defined in schema files, which are simple, text-based configuration files.
API limitations and requirements are documented in this section; you can use the SupportEnhancedSQL feature, set by default, to circumvent most of these limitations.
Stored Procedures are function-like interfaces to Microsoft Exchange. They can be used to search, update, and modify information in Microsoft Exchange.
The Sync App models the data in Microsoft Exchange into a list of tables that can be queried using standard SQL statements.
Generally, querying Microsoft Exchange tables is the same as querying a table in a relational database. Sometimes there are special cases, for example, including a certain column in the WHERE clause might be required to get data for certain columns in the table. This is typically needed for situations where a separate request must be made for each row to get certain columns. These types of situations are clearly documented at the top of the table page linked below.
Name | Description |
Calendar | Create, update, delete, and query Calendar items. |
Calendar_OptionalAttendees | The optional attendees for a particular event. An ItemId must be specified when querying this view. |
Calendar_RequiredAttendees | The required attendees for a particular event. An ItemId must be specified when querying this view. |
Contacts | Create, update, delete, and query Contacts items. |
DeletedItems | Create, update, delete, and query Deleted Items. |
Drafts | Create, update, delete, and query Drafts items. |
Folders | Create, update, delete, and query subfolders for a given folder. |
Inbox | Create, update, delete, and query Inbox items. |
JunkEmail | Create, update, delete, and query Junk Email items. |
Outbox | Create, update, delete, and query Outbox items. |
SentItems | Create, update, delete, and query Sent Items. |
Tasks | Create, update, delete, and query Tasks items. |
Create, update, delete, and query Calendar items.
The Sync App will need the ItemChangeKey to update or delete an item. However, if you are unsure of the ItemChangeKey, the Sync App is able to retrieve it from the Exchange server automatically. Note that this may increase the time it takes to perform a query.
When performing a SELECT operation on the Calendar table, the Sync App will not include individual recurring events by default (only the master item
will be included). Your query will need to include a WHERE clause similar to the following:
SELECT Subject,IsRecurring,Recurrence_StartDate,Recurrence_EndDate,Recurrence_Interval,Recurrence_Type,Recurrence_NumberOfOccurrences,FirstOccurrence_Start FROM Calendar WHERE ItemId = 'myid'If you wish to view the individual recurrences of a recurring event, you'll need to add filters START and END with greaterthan and lessthan operators respectively. The interval between START and END should not be more than 2 years. The API will return atmost 1000 entries for recurring events. Please give the interval between START and END filters accordingly. Your query will need to include a WHERE clause similar to the following:
SELECT * FROM Calendar WHERE start>='2021-05-11 00:50:59.0' and end<='2023-02-28 11:20:30.0'
Name | Type | ReadOnly | Description |
ItemId [KEY] | String | True |
Contains the unique identifier of an item in the Exchange store. This property is read-only. |
MimeContent | String | True |
Contains the native Multipurpose Internet Mail Extensions (MIME) stream of an object that is represented in Base64 binary format. |
ItemChangeKey | String | True |
Contains the unique change key of an item in the Exchange store. This property is read-only. |
ParentFolderId | String | False |
Represents the unique identifier of the parent folder that contains the item or folder. This property is read-only. |
ParentFolderChangeKey | String | True |
Represents the unique change key of the parent folder that contains the item or folder. This property is read-only. |
ItemClass | String | False |
Represents the message class of an item. |
Subject | String | False |
Represents the subject for Exchange store items and response objects. The subject is limited to 255 characters. |
Sensitivity | String | True |
Indicates the sensitivity level of an item. |
Body | String | False |
Body of the Calendar Item. |
DateTimeReceived | Datetime | True |
Represents the date and time that an item in a mailbox was received. |
Size | Integer | True |
Represents the size in bytes of an item. This property is read-only. |
Categories | String | False |
Represents a collection of strings that identify to which categories an item in the mailbox belongs. |
Importance | String | False |
Describes the importance of an item. |
InReplyTo | String | True |
Represents the identifier of the item to which this item is a reply. |
IsSubmitted | Boolean | True |
Indicates whether an item has been submitted to the Outbox default folder. |
IsDraft | Boolean | True |
Represents whether an item has not yet been sent. |
IsFromMe | Boolean | True |
Indicates whether a user sent an item to himself or herself. |
IsResend | Boolean | True |
Indicates whether the item had previously been sent. |
IsUnmodified | Boolean | True |
Indicates whether the item has been modified. |
InternetMessageHeaders | String | True |
Represents the collection of all Internet message headers that are contained within an item in a mailbox. |
DateTimeSent | Datetime | True |
Represents the date and time that an item in a mailbox was sent. |
DateTimeCreated | Datetime | True |
Represents the date and time that a given item in the mailbox was created. |
ReminderDueBy | Datetime | False |
Represents the date and time when the event occurs. |
ReminderIsSet | Boolean | False |
Indicates whether a reminder has been set for an item in the Exchange store. |
ReminderMinutesBeforeStart | Integer | False |
Represents the number of minutes before an event occurs when a reminder is displayed. |
DisplayCc | String | True |
Represents the display string that is used for the contents of the To box. This is the concatenated string of all To recipient display names. |
DisplayTo | String | True |
Represents a property that is set to true if an item has at least one visible attachment. This property is read-only. |
HasAttachments | Boolean | True |
Indicates whether an item has attachments. |
Culture | String | False |
Represents the Culture of an item. |
Start | Datetime | False |
Represents the start of a duration. |
End | Datetime | False |
Represents the end of a duration. |
OriginalStart | Datetime | False |
Represents the original start time of a calendar item. |
IsAllDayEvent | Boolean | False |
Indicates whether a calendar item or meeting request represents an all-day event. |
LegacyFreeBusyStatus | String | False |
Represents the free/busy status of the calendar item. |
Location | String | False |
Represents the location of a meeting, appointment, or persona. |
When | String | False |
Provides information about when a calendar or meeting item occurs. |
IsMeeting | Boolean | False |
Indicates whether the calendar item is a meeting or an appointment. |
IsCancelled | Boolean | False |
Indicates whether an appointment or meeting has been cancelled. |
IsRecurring | Boolean | True |
Indicates whether a calendar item, meeting request, or task is part of a recurring item. This element is read-only. |
MeetingRequestWasSent | Boolean | True |
Indicates whether a meeting request has been sent to requested attendees. |
IsResponseRequested | Boolean | True |
Indicates whether a response to an item is requested. |
CalendarItemType | String | True |
Represents the type of a calendar item. |
MyResponseType | String | False |
Contains the status of or response to a calendar item. |
OrganizerName | String | False |
Defines the name of the mailbox user. |
OrganizerEmailAddress | String | False |
Defines the Simple Mail Transfer Protocol (SMTP) address of the Organizer mailbox user. |
OrganizerRoutingType | String | False |
Defines the routing that is used for the Organizer mailbox. The default is SMTP. |
ConflictingMeetingCount | Integer | True |
Represents the number of meetings that conflict with the calendar item. |
AdjacentMeetingCount | Integer | True |
Represents the total number of calendar items that are adjacent to a meeting time. |
Duration | String | True |
Represents the duration of a calendar item. |
TimeZone | String | True |
Provides a text description of a time zone. |
AppointmentReplyTime | Datetime | False |
Represents the date and time that an attendee replied to a meeting request. |
AppointmentSequenceNumber | String | False |
Specifies the sequence number of a version of an appointment. |
AppointmentState | String | True |
Specifies the status of the appointment. |
Recurrence_Type | String | False |
Contains the recurrence type for calendar items and meeting requests. The allowed values are RelativeYearlyRecurrence, AbsoluteYearlyRecurrence, RelativeMonthlyRecurrence, AbsoluteMonthlyRecurrence, WeeklyRecurrence, DailyRecurrence. |
Recurrence_DaysOfWeek | String | False |
Describes days of the week that are used in item recurrence patterns. |
Recurrence_DayOfWeekIndex | String | False |
Describes which week in a month is used in a relative yearly recurrence pattern. The allowed values are First, Second, Third, Fourth, Last. |
Recurrence_Month | String | False |
Describes the month when a yearly recurring item occurs. |
Recurrence_DayOfMonth | Integer | False |
Describes the day in a month on which a recurring item occurs. |
Recurrence_Interval | Integer | False |
Defines the interval between two consecutive recurring items. |
Recurrence_FirstDayOfWeek | String | False |
Specifies the first day of the week. |
Recurrence_Duration | String | False |
Contains the recurrence duration type for calendar items and meeting requests. The allowed values are NoEndRecurrence, EndDateRecurrence, NumberedRecurrence. |
Recurrence_StartDate | Date | False |
Represents the start date of a recurring task or calendar item. |
Recurrence_EndDate | Date | False |
Represents the end date of a recurring task or calendar item. |
Recurrence_NumberOfOccurrences | Integer | False |
Contains the number of occurrences of a recurring item. |
FirstOccurrence_ItemId | String | False |
Contains the unique identifier of the last occurrence of a recurring calendar item. |
FirstOccurrence_Start | Datetime | False |
Represents the start time of the last occurrence of a recurring calendar item. |
FirstOccurrence_End | Datetime | False |
Represents the end time of the last occurrence of a recurring calendar item. |
FirstOccurrence_OriginalStart | Datetime | False |
Represents the original start time of the last occurrence of a recurring calendar item. |
LastOccurrence_ItemId | String | False |
Contains the unique identifier of the last occurrence of a recurring calendar item. |
LastOccurrence_Start | Datetime | False |
Represents the start time of the last occurrence of a recurring calendar item. |
LastOccurrence_End | Datetime | False |
Represents the end time of the last occurrence of a recurring calendar item. |
LastOccurrence_OriginalStart | Datetime | False |
Represents the original start time of the last occurrence of a recurring calendar item. |
ModifiedOccurrences_Aggregate | String | True |
Modified occurrences of the calendar, as aggregate. |
DeletedOccurrences_Aggregate | String | True |
Deleted occurrences as aggregate. |
StartTimeZone_Id | String | True |
Represents the unique identifier of the time zone definition for the start time. |
StartTimeZone_Name | String | True |
Represents the descriptive name of the time zone definition for the start time. |
EndTimeZone_Id | String | True |
Represents the unique identifier of the time zone definition for the end time. |
EndTimeZone_Name | String | True |
Represents the descriptive name of the time zone definition for the end time. |
ConferenceType | Integer | False |
Describes the type of conferencing that is performed with a calendar item (0 = NetMeeting, 1 = NetShow, 2 = Chat. |
AllowNewTimeProposal | Boolean | False |
Indicates whether a new meeting time can be proposed for a meeting by an attendee. |
IsOnlineMeeting | Boolean | False |
Indicates whether the meeting is online. |
MeetingWorkspaceUrl | String | False |
Contains the URL for the meeting workspace that is linked to by the calendar item. |
NetShowUrl | String | False |
Specifies the URL for a Microsoft NetShow online meeting. |
EffectiveRights_CreateAssociated | Boolean | True |
Indicates whether a client can create an associated contents table. |
EffectiveRights_CreateContents | Boolean | True |
Indicates whether a client can create a contents table. |
EffectiveRights_CreateHierarchy | Boolean | True |
Indicates whether a client can create a hierarchy table. |
EffectiveRights_Delete | Boolean | True |
Indicates whether a client can delete a folder or item. |
EffectiveRights_Modify | Boolean | True |
Indicates whether a client can modify a folder or item. |
EffectiveRights_Read | Boolean | True |
Indicates whether a client can read a folder or item. |
EffectiveRights_ViewPrivateItems | Boolean | True |
Indicates whether a private item can be viewed. |
LastModifiedName | String | True |
Contains the display name of the last user to modify an item. |
LastModifiedTime | Datetime | True |
Indicates when an item was last modified. |
IsAssociated | Boolean | False |
Indicates whether the item is associated with a folder. |
WebClientReadFormQueryString | String | True |
Represents a URL to concatenate to the Microsoft Office Outlook Web App endpoint to read an item in Outlook Web App. |
WebClientEditFormQueryString | String | True |
Represents a URL to concatenate to the Outlook Web App endpoint to edit an item in Outlook Web App. |
ConversationId | String | True |
Contains the identifier of an item or conversation. |
ConversationChangeKey | String | True |
Contains the change key of an item or conversation. |
UniqueBody | String | True |
Represents an HTML fragment or plain-text which represents the unique body of this conversation. |
UniqueBodyType | String | True |
Describes how the unique item body is stored in the item (HTML or TEXT). |
Pseudo column fields are used in the WHERE clause of SELECT statements and offer a more granular control over the tuples that are returned from the data source.
Name | Type | Description |
ImpersonationUser | String |
The Identifier of the user to impersonate. |
ImpersonationType | String |
The type of Identifier used for the impersonation user (PrincipalName, SID, PrimarySmtpAddress, SmtpAddress). |
SendMeetingInvitations | String |
The allowed values are SendToNone, SendOnlyToAll, and SendToAllAndSaveCopy. The default is SendToNone. |
SendCancellationsMode | String |
The allowed values are SendToNone, SendOnlyToAll, and SendToAllAndSaveCopy. The default is SendToNone. |
SharedMailboxEmail | String |
The email of a shared mailbox. Use this to retrieve the calendar events in a shared mailbox. |
The optional attendees for a particular event. An ItemId must be specified when querying this view.
The Sync App will need the ItemChangeKey to update or delete an item. However, if you are unsure of the ItemChangeKey, the Sync App is able to retrieve it from the Exchange server automatically. Note that this may increase the time it takes to perform a query.
When performing a SELECT operation on the Calendar table, the Sync App will not include individual recurring events by default (only the master item
will be included). If you wish to view the individual recurrences of a recurring event, you'll need to filter the search by the IsRecurring column
and use Start and End to specify a time period. Your query will need to include a WHERE clause similar to the following:
INSERT INTO Calendar_OptionalAttendees (EmailAddress, ItemId, SendMeetingInvitations) VALUES ('[email protected]', 'itemid', 'SendOnlyToChanged')
Name | Type | ReadOnly | Description |
EmailAddress [KEY] | String | False | |
ItemId | String | False | |
Name | String | False |
Pseudo column fields are used in the WHERE clause of SELECT statements and offer a more granular control over the tuples that are returned from the data source.
Name | Type | Description |
ImpersonationUser | String |
The Identifier of the user to impersonate. |
ImpersonationType | String |
The type of Identifier used for the impersonation user (PrincipalName, SID, PrimarySmtpAddress, SmtpAddress). |
SendMeetingInvitations | String |
The allowed values are SendToNone, SendOnlyToAll, SendOnlyToChanged and SendToAllAndSaveCopy. The default is SendToNone. |
The required attendees for a particular event. An ItemId must be specified when querying this view.
When performing an INSERT operation, you will need to specify EmailAddress and ItemId. Additionally, there is a property called SendMeetingInvitations you can set to decide who is notified when you insert required attendees.
INSERT INTO Calendar_RequiredAttendees (EmailAddress, ItemId, SendMeetingInvitations) VALUES ('[email protected]', 'itemid', 'SendOnlyToChanged')
Name | Type | ReadOnly | Description |
EmailAddress [KEY] | String | False | |
ItemId | String | False | |
Name | String | False |
Pseudo column fields are used in the WHERE clause of SELECT statements and offer a more granular control over the tuples that are returned from the data source.
Name | Type | Description |
ImpersonationUser | String |
The Identifier of the user to impersonate. |
ImpersonationType | String |
The type of Identifier used for the impersonation user (PrincipalName, SID, PrimarySmtpAddress, SmtpAddress). |
SendMeetingInvitations | String |
The allowed values are SendToNone, SendOnlyToAll, SendOnlyToChanged and SendToAllAndSaveCopy. The default is SendToNone. |
Create, update, delete, and query Contacts items.
The Sync App will need the ItemChangeKey to update or delete an item. However, if you are unsure of the ItemChangeKey, the Sync App is able to retrieve it from the Exchange server automatically. Note that this may increase the time it takes to perform a query.
Name | Type | ReadOnly | Description |
MimeContent | String | True |
Contains the native Multipurpose Internet Mail Extensions (MIME) stream of an object that is represented in Base64 binary format. |
ItemId [KEY] | String | True |
Contains the unique identifier of an item in the Exchange store. This property is read-only. |
ItemChangeKey | String | True |
Contains the unique change key of an item in the Exchange store. This property is read-only. |
ParentFolderId | String | False |
Represents the unique identifier of the parent folder that contains the item or folder. This property is read-only. |
ParentFolderChangeKey | String | True |
Represents the unique change key of the parent folder that contains the item or folder. This property is read-only. |
ItemClass | String | False |
Represents the message class of an item. |
Subject | String | False |
Represents the subject for Exchange store items and response objects. The subject is limited to 255 characters. |
Sensitivity | String | True |
Indicates the sensitivity level of an item. |
Body | String | False |
Represents the actual body content of a message. |
DateTimeReceived | Datetime | True |
Represents the date and time that an item in a mailbox was received. |
Size | Integer | True |
Represents the size in bytes of an item. This property is read-only. |
Categories | String | False |
Represents a collection of strings that identify to which categories an item in the mailbox belongs. |
Importance | String | False |
Describes the importance of an item. |
IsSubmitted | Boolean | True |
Indicates whether an item has been submitted to the Outbox default folder. |
InReplyTo | String | True |
Represents the identifier of the item to which this item is a reply. |
IsDraft | Boolean | True |
Represents whether an item has not yet been sent. |
IsFromMe | Boolean | True |
Indicates whether a user sent an item to himself or herself. |
IsResend | Boolean | True |
Indicates whether the item had previously been sent. |
IsUnmodified | Boolean | True |
Indicates whether the item has been modified. |
InternetMessageHeaders | String | True |
Represents the collection of all Internet message headers that are contained within an item in a mailbox. |
DateTimeSent | Datetime | True |
Represents the date and time that an item in a mailbox was sent. |
DateTimeCreated | Datetime | True |
Represents the date and time that a given item in the mailbox was created. |
ReminderDueBy | Datetime | False |
Represents the date and time when the event occurs. |
ReminderIsSet | Boolean | False |
Indicates whether a reminder has been set for an item in the Exchange store. |
ReminderMinutesBeforeStart | Integer | False |
Represents the number of minutes before an event occurs when a reminder is displayed. |
DisplayCc | String | True |
Represents the display string that is used for the contents of the Cc box. This is the concatenated string of all Cc recipient display names. |
DisplayTo | String | True |
Represents the display string that is used for the contents of the To box. This is the concatenated string of all To recipient display names. |
HasAttachments | Boolean | True |
Represents a property that is set to true if an item has at least one visible attachment. This property is read-only. |
Culture | String | False |
Represents the culture for a given item in a mailbox. |
EffectiveRights_CreateAssociated | Boolean | True |
Indicates whether a client can create an associated contents table. |
EffectiveRights_CreateContents | Boolean | True |
Indicates whether a client can create a contents table. |
EffectiveRights_CreateHierarchy | Boolean | True |
Indicates whether a client can create a hierarchy table. |
EffectiveRights_Delete | Boolean | True |
Indicates whether a client can delete a folder or item. |
EffectiveRights_Modify | Boolean | True |
Indicates whether a client can modify a folder or item. |
EffectiveRights_Read | Boolean | True |
Indicates whether a client can read a folder or item. |
EffectiveRights_ViewPrivateItems | Boolean | True |
Indicates whether a private item can be viewed. |
LastModifiedName | String | True |
Contains the display name of the last user to modify an item. |
LastModifiedTime | Datetime | True |
Indicates when an item was last modified. This element is read-only. |
IsAssociated | Boolean | False |
Indicates whether the item is associated with a folder. |
WebClientReadFormQueryString | String | True |
Represents a URL to concatenate to the Microsoft Office Outlook Web App endpoint to read an item in Outlook Web App. |
WebClientEditFormQueryString | String | True |
Represents a URL to concatenate to the Outlook Web App endpoint to edit an item in Outlook Web App. |
ConversationId | String | True |
Identifies a specific conversation in the Exchange store. |
UniqueBody | String | True |
Represents an HTML fragment or plain-text which represents the unique body of this conversation. |
UniqueBodyType | String | True |
Describes how the unique item body is stored in the item (HTML or TEXT). |
FileAs | String | False |
Represents how a contact or distribution list is filed in the Contacts folder. |
FileAsMapping | String | False |
Defines how to construct what is displayed for a contact. |
DisplayName | String | False |
Defines the display name of a folder, contact, distribution list, delegate user, location, or rule. |
GivenName | String | False |
Contains the given name of a contact. |
Initials | String | False |
Represents the initials of a contact. |
MiddleName | String | False |
Represents the middle name of a contact. |
Nickname | String | False |
Represents the nickname of a contact. |
CompleteName_Title | String | True |
Represents the title of a contact. |
CompleteName_FirstName | String | True |
Represents the first name of a contact. |
CompleteName_MiddleName | String | True |
Represents the middle name of a contact. |
CompleteName_LastName | String | True |
Represents the last name of a contact. |
CompleteName_Suffix | String | True |
Represents the suffix of a contact. |
CompleteName_Initials | String | True |
Represents the initials of a contact. |
CompleteName_FullName | String | True |
Represents the full name of a contact. |
CompleteName_Nickname | String | True |
Represents the nickname of a contact. |
CompleteName_YomiFirstName | String | True |
Represents the name used in Japan for the searchable or phonetic spelling of a Japanese first name. |
CompleteName_YomiLastName | String | True |
Represents the name used in Japan for the searchable or phonetic spelling of a Japanese first name. |
CompanyName | String | False |
Represents the company name that is associated with a contact. |
EmailAddress1 | String | False |
Represents a single email address for a contact. |
EmailAddress2 | String | False |
Represents a single email address for a contact. |
EmailAddress3 | String | False |
Represents a single email address for a contact. |
BusinessAddress_Street | String | False |
Represents the Business street address for a contact item. |
BusinessAddress_City | String | False |
Represents the Business city name for a contact item. |
BusinessAddress_State | String | False |
Represents the Business state of residence for a contact item. |
BusinessAddress_Country | String | False |
Represents the Business country or region for a contact item. |
BusinessAddress_PostalCode | String | False |
Represents the Business postal code for a contact item. |
HomeAddress_Street | String | False |
Represents the Home street address for a contact item. |
HomeAddress_City | String | False |
Represents the Home city name for a contact item. |
HomeAddress_State | String | False |
Represents the Home state of residence for a contact item. |
HomeAddress_Country | String | False |
Represents the Home country or region for a contact item. |
HomeAddress_PostalCode | String | False |
Represents the Home postal code for a contact item. |
OtherAddress_Street | String | False |
Represents the Other street address for a contact item. |
OtherAddress_City | String | False |
Represents the Other city name for a contact item. |
OtherAddress_State | String | False |
Represents the Other state of residence for a contact item. |
OtherAddress_Country | String | False |
Represents the Other country or region for a contact item. |
OtherAddress_PostalCode | String | False |
Represents the Other postal code for a contact item. |
AssistantPhone | String | False |
Represents the AssistantPhone number for a contact item. |
BusinessFax | String | False |
Represents the BusinessFax number for a contact item. |
BusinessPhone | String | False |
Represents the BusinessPhone number for a contact item. |
BusinessPhone2 | String | False |
Represents the BusinessPhone2 number for a contact item. |
Callback | String | False |
Represents the Callback number for a contact item. |
CarPhone | String | False |
Represents the CarPhone number for a contact item. |
CompanyMainPhone | String | False |
Represents the CompanyMainPhone number for a contact item. |
HomeFax | String | False |
Represents the HomeFax number for a contact item. |
HomePhone | String | False |
Represents the HomePhone number for a contact item. |
HomePhone2 | String | False |
Represents the HomePhone2 number for a contact item. |
Isdn | String | False |
Represents the Isdn number for a contact item. |
MobilePhone | String | False |
Represents the MobilePhone number for a contact item. |
OtherFax | String | False |
Represents the OtherFax number for a contact item. |
OtherTelephone | String | False |
Represents the OtherTelephone number for a contact item. |
Pager | String | False |
Represents the Pager number for a contact item. |
PrimaryPhone | String | False |
Represents the PrimaryPhone number for a contact item. |
RadioPhone | String | False |
Represents the RadioPhone number for a contact item. |
Telex | String | False |
Represents the Telex number for a contact item. |
TtyTddPhone | String | False |
Represents the TtyTddPhone number for a contact item. |
AssistantName | String | False |
Represents an assistant to a contact. |
Birthday | Datetime | False |
Represents the birth date of a contact. |
BusinessHomePage | String | False |
Represents the Home page (Web address) for the contact. |
Children_1 | String | False |
Contains the name of the child of a contact. |
Children_2 | String | False |
Contains the name of the child of a contact. |
Children_3 | String | False |
Contains the name of the child of a contact. |
Companies_1 | String | False |
Represents the name of a company associated with a contact. |
Companies_2 | String | False |
Represents the name of a company associated with a contact. |
Companies_3 | String | False |
Represents the name of a company associated with a contact. |
ContactSource | String | False |
Describes whether the contact is located in the Exchange store or Active Directory Domain Services. |
Department | String | False |
Represents the department of a contact. |
Generation | String | False |
Represents a generational abbreviation that follows the full name of a contact. |
ImAddress1 | String | False |
Represents an instant messaging (IM) address for a contact. |
ImAddress2 | String | False |
Represents an instant messaging (IM) address for a contact. |
ImAddress3 | String | False |
Represents an instant messaging (IM) address for a contact. |
JobTitle | String | False |
Represents the job title of a contact. |
Manager | String | False |
Represents the manager of a contact. |
Mileage | String | False |
Represents the mileage for a contact item. |
OfficeLocation | String | False |
Represents the office location of a contact. |
PostalAddressIndex | String | False |
Represents the display type for the physical address of a contact. |
Profession | String | False |
Represents the profession of a contact. |
SpouseName | String | False |
Represents the name of the spouse or partner of the contact. |
Surname | String | False |
Represents the surname of a contact. |
WeddingAnniversary | Datetime | False |
Contains the wedding anniversary of a contact. |
HasPicture | Boolean | False |
Indicates whether the contact item has a file attachment that represents the picture of a contact. |
PhoneticFullName | String | False |
Contains the full name of a contact, including the first and last name, spelled phonetically. |
PhoneticFirstName | String | False |
Contains the first name of a contact, spelled phonetically. |
PhoneticLastName | String | False |
Contains the last name of a contact, spelled phonetically. |
Alias | String | False |
Contains the email alias of a contact. |
Notes | String | False |
Contains supplementary contact information. |
Photo | String | False |
Contains a value that encodes the photo of a contact. |
UserSMIMECertificate | String | False |
Contains a value that encodes the SMIME certificate of a contact. |
MSExchangeCertificate | String | False |
Contains a value that encodes the Microsoft Exchange certificate of a contact. |
DirectoryId | String | False |
Contains the directory Id of a contact. |
ManagerMailbox | String | False |
Contains SMTP information that identifies the mailbox of the manager of a contact. |
DirectReports | String | False |
Contains SMTP information that identifies the direct reports of a contact. |
Pseudo column fields are used in the WHERE clause of SELECT statements and offer a more granular control over the tuples that are returned from the data source.
Name | Type | Description |
ImpersonationUser | String |
The Identifier of the user to impersonate. |
ImpersonationType | String |
The type of Identifier used for the impersonation user (PrincipalName, SID, PrimarySmtpAddress, SmtpAddress). |
Create, update, delete, and query Deleted Items.
When performing a SELECT operation on the DeletedItems table, the Sync App will not include the items in the subfolders under DeletedItems, but only the items contained within the DeletedItems folder.
If you wish to retrieve the items under the DeletedItems subfolders, your will need to specify the ParentFolderId-s in the WHERE clause. You can get every DeletedItems subfolder Id by executing a filtered by ParentFolderName query to the Folders table. You can use the example query below, to retrieve the items within the DeletedItems subfolders:
SELECT * FROM DeletedItems WHERE ParentFolderId IN (SELECT FolderId FROM Folders WHERE ParentFolderName = 'DeletedItems' AND TotalCount > 0)
The Sync App will need the ItemChangeKey to update or delete an item. However, if you are unsure of the ItemChangeKey, the Sync App is able to retrieve it from the Exchange server automatically. Note that this may increase the time it takes to perform a query.
Name | Type | ReadOnly | Description |
MimeContent | String | True |
Contains the native Multipurpose Internet Mail Extensions (MIME) stream of an object that is represented in Base64 binary format. |
ItemId [KEY] | String | True |
Contains the unique identifier of an item in the Exchange store. |
ItemChangeKey | String | True |
Contains the unique change key of an item in the Exchange store. |
ParentFolderId | String | False |
Represents the unique identifier of the parent folder that contains the item or folder. |
ParentFolderChangeKey | String | True |
Represents the unique change key of the parent folder that contains the item or folder. |
ItemClass | String | False |
Represents the message class of an item. |
Subject | String | False |
Represents the subject for Exchange store items and response objects. The subject is limited to 255 characters. |
Sensitivity | String | True |
Indicates the sensitivity level of an item. |
Body | String | False |
Represents the actual body content of a message. |
AttachmentIds | String | True |
Contains a comma-separated list of the Ids of the attached files. |
AttachmentNames | String | True |
Contains a comma-separated list of the names of the attached files. |
DateTimeReceived | Datetime | True |
Represents the date and time that an item in a mailbox was received. |
Size | Integer | True |
Represents the size in bytes of an item. This property is read-only. |
Categories | String | False |
Represents a collection of strings that identify to which categories an item in the mailbox belongs. |
Importance | String | False |
Describes the importance of an item. |
InReplyTo | String | False |
Represents the identifier of the item to which this item is a reply. |
IsSubmitted | Boolean | True |
Indicates whether an item has been submitted to the Outbox default folder. |
IsDraft | Boolean | True |
Represents whether an item has not yet been sent. |
IsFromMe | Boolean | True |
Indicates whether a user sent an item to himself or herself. |
IsResend | Boolean | True |
Indicates whether the item had previously been sent. |
IsUnmodified | Boolean | True |
Indicates whether the item has been modified. |
InternetMessageHeaders | String | True |
Represents the collection of all Internet message headers that are contained within an item in a mailbox. |
DateTimeSent | Datetime | True |
Represents the date and time that an item in a mailbox was sent. |
DateTimeCreated | Datetime | True |
Represents the date and time that a given item in the mailbox was created. |
ReminderDueBy | Datetime | False |
Represents the date and time when the event occurs. This is used by the ReminderMinutesBeforeStart element to determine when the reminder is displayed. |
ReminderIsSet | Boolean | False |
Indicates whether a reminder has been set for an item in the Exchange store. |
ReminderMinutesBeforeStart | Integer | False |
Represents the number of minutes before an event occurs when a reminder is displayed. |
DisplayCc | String | True |
Represents the display string that is used for the contents of the To box. This is the concatenated string of all To recipient display names. |
DisplayTo | String | True |
Represents a property that is set to true if an item has at least one visible attachment. This property is read-only. |
HasAttachments | Boolean | True |
Indicates whether an item has attachments. |
Culture | String | False |
Represents the Culture of an item. |
SenderName | String | False |
Defines the name of the Sender mailbox user. |
SenderEmailAddress | String | False |
Defines the Simple Mail Transfer Protocol (SMTP) address of the Sender mailbox user. |
SenderRoutingType | String | False |
Defines the routing that is used for the Sender mailbox. The default is SMTP. |
ToRecipients_Name | String | False |
Defines the name of the ToRecipient. |
ToRecipients_EmailAddress | String | False |
Defines the Simple Mail Transfer Protocol (SMTP) address of the ToRecipient. |
ToRecipients_ItemId | String | False |
Defines the item identifier of a ToRecipient. |
CcRecipients_Name | String | False |
Defines the name of the CcRecipient. |
CcRecipients_EmailAddress | String | False |
Defines the Simple Mail Transfer Protocol (SMTP) address of the CcRecipient. |
CcRecipients_ItemId | String | False |
Defines the item identifier of a CcRecipient. |
BccRecipients_Name | String | False |
Defines the name of the BccRecipient. |
BccRecipients_EmailAddress | String | False |
Defines the Simple Mail Transfer Protocol (SMTP) address of the BccRecipient. |
BccRecipients_ItemId | String | False |
Defines the item identifier of a BccRecipient. |
IsReadReceiptRequested | Boolean | False |
Indicates whether the sender of an item requests a read receipt. |
IsDeliveryReceiptRequested | Boolean | False |
Indicates whether the sender of an item requests a delivery receipt. |
ConversationIndex | String | False |
Contains a binary Id that represents the thread to which this message belongs. |
ConversationTopic | String | False |
Represents the conversation topic. |
FromName | String | False |
Defines the name of the From mailbox user. |
FromEmailAddress | String | False |
Defines the Simple Mail Transfer Protocol (SMTP) address of the From mailbox user. |
FromRoutingType | String | False |
Defines the routing that is used for the From mailbox. The default is SMTP. |
InternetMessageId | String | False |
Represents the Internet message identifier of an item. |
IsRead | Boolean | False |
Indicates whether a message has been read. |
IsResponseRequested | Boolean | False |
Indicates whether a response to an item is requested. |
References | String | False |
Represents the Usenet header that is used to associate replies with the original messages. |
EffectiveRights_CreateAssociated | Boolean | True |
Indicates whether a client can create an associated contents table. |
EffectiveRights_CreateContents | Boolean | True |
Indicates whether a client can create a contents table. |
EffectiveRights_CreateHierarchy | Boolean | True |
Indicates whether a client can create a hierarchy table. |
EffectiveRights_Delete | Boolean | True |
Indicates whether a client can delete a folder or item. |
EffectiveRights_Modify | Boolean | True |
Indicates whether a client can modify a folder or item. |
EffectiveRights_Read | Boolean | True |
Indicates whether a client can read a folder or item. |
EffectiveRights_ViewPrivateItems | Boolean | True |
Indicates whether a private item can be viewed. |
ReceivedByName | String | False |
Defines the name of the ReceivedBy mailbox user. |
ReceivedByEmailAddress | String | False |
Defines the Simple Mail Transfer Protocol (SMTP) address of the ReceivedBy mailbox user. |
ReceivedByRoutingType | String | False |
Defines the routing that is used for the ReceivedBy mailbox. The default is SMTP. |
ReceivedRepresentingName | String | False |
Defines the name of the ReceivedRepresenting mailbox user. |
ReceivedRepresentingEmailAddress | String | False |
Defines the Simple Mail Transfer Protocol (SMTP) address of the ReceivedRepresenting mailbox user. |
ReceivedRepresentingRoutingType | String | False |
Defines the routing that is used for the ReceivedRepresenting mailbox. The default is SMTP. |
LastModifiedName | String | True |
Contains the display name of the last user to modify an item. |
LastModifiedTime | Datetime | True |
Indicates when an item was last modified. This element is read-only. |
IsAssociated | Boolean | False |
Indicates whether the item is associated with a folder. |
WebClientReadFormQueryString | String | True |
Represents a URL to concatenate to the Microsoft Office Outlook Web App endpoint to read an item in Outlook Web App. |
WebClientEditFormQueryString | String | True |
Represents a URL to concatenate to the Outlook Web App endpoint to edit an item in Outlook Web App. |
ConversationId | String | True |
Identifies a specific conversation in the Exchange store. |
ConversationChangeKey | String | True |
Contains the change key of an item or conversation. |
UniqueBody | String | True |
Represents an HTML fragment or plain-text which represents the unique body of this conversation. |
UniqueBodyType | String | True |
Describes how the unique item body is stored in the item (HTML or TEXT). |
ReminderMessageData_Text | String | False |
Specifies the text of a reminder message. |
ReminderMessageData_Location | String | False |
Represents the location of a meeting, appointment, or persona. |
ReminderMessageData_StartTime | Datetime | False |
Specifies the starting time of the item that the reminder is for. |
ReminderMessageData_EndTime | Datetime | False |
Specifies the ending time of the item that the reminder is for. |
ReminderMessageData_AssociatedCalendarId | String | True |
Represents the calendar item that is associated with the ReminderMessageData. |
Pseudo column fields are used in the WHERE clause of SELECT statements and offer a more granular control over the tuples that are returned from the data source.
Name | Type | Description |
ImpersonationUser | String |
The Identifier of the user to impersonate. |
ImpersonationType | String |
The type of Identifier used for the impersonation user (PrincipalName, SID, PrimarySmtpAddress, SmtpAddress). |
Create, update, delete, and query Drafts items.
When performing a SELECT operation on the Drafts table, the Sync App will not include the items in the subfolders under Drafts, but only the items contained within the Drafts folder.
If you wish to retrieve the items under the Drafts subfolders, your will need to specify the ParentFolderId-s in the WHERE clause. You can get every Drafts subfolder Id by executing a filtered by ParentFolderName query to the Folders table. You can use the example query below, to retrieve the items within the Drafts subfolders:
SELECT * FROM Drafts WHERE ParentFolderId IN (SELECT FolderId FROM Folders WHERE ParentFolderName = 'Drafts' AND TotalCount > 0)
The Sync App will need the ItemChangeKey to update or delete an item. However, if you are unsure of the ItemChangeKey, the Sync App is able to retrieve it from the Exchange server automatically. Note that this may increase the time it takes to perform a query.
Name | Type | ReadOnly | Description |
MimeContent | String | True |
Contains the native Multipurpose Internet Mail Extensions (MIME) stream of an object that is represented in Base64 binary format. |
ItemId [KEY] | String | True |
Contains the unique identifier of an item in the Exchange store. |
ItemChangeKey | String | True |
Contains the unique change key of an item in the Exchange store. |
ParentFolderId | String | False |
Represents the unique identifier of the parent folder that contains the item or folder. |
ParentFolderChangeKey | String | True |
Represents the unique change key of the parent folder that contains the item or folder. |
ItemClass | String | False |
Represents the message class of an item. |
Subject | String | False |
Represents the subject for Exchange store items and response objects. The subject is limited to 255 characters. |
Sensitivity | String | True |
Indicates the sensitivity level of an item. |
Body | String | False |
Represents the actual body content of a message. |
AttachmentIds | String | True |
Contains a comma-separated list of the Ids of the attached files. |
AttachmentNames | String | True |
Contains a comma-separated list of the names of the attached files. |
DateTimeReceived | Datetime | True |
Represents the date and time that an item in a mailbox was received. |
Size | Integer | True |
Represents the size in bytes of an item. This property is read-only. |
Categories | String | False |
Represents a collection of strings that identify to which categories an item in the mailbox belongs. |
Importance | String | False |
Describes the importance of an item. |
InReplyTo | String | False |
Represents the identifier of the item to which this item is a reply. |
IsSubmitted | Boolean | True |
Indicates whether an item has been submitted to the Outbox default folder. |
IsDraft | Boolean | True |
Represents whether an item has not yet been sent. |
IsFromMe | Boolean | True |
Indicates whether a user sent an item to himself or herself. |
IsResend | Boolean | True |
Indicates whether the item had previously been sent. |
IsUnmodified | Boolean | True |
Indicates whether the item has been modified. |
InternetMessageHeaders | String | True |
Represents the collection of all Internet message headers that are contained within an item in a mailbox. |
DateTimeSent | Datetime | True |
Represents the date and time that an item in a mailbox was sent. |
DateTimeCreated | Datetime | True |
Represents the date and time that a given item in the mailbox was created. |
ReminderDueBy | Datetime | False |
Represents the date and time when the event occurs. This is used by the ReminderMinutesBeforeStart element to determine when the reminder is displayed. |
ReminderIsSet | Boolean | False |
Indicates whether a reminder has been set for an item in the Exchange store. |
ReminderMinutesBeforeStart | Integer | False |
Represents the number of minutes before an event occurs when a reminder is displayed. |
DisplayCc | String | True |
Represents the display string that is used for the contents of the Cc box. This is the concatenated string of all To recipient display names. |
DisplayTo | String | True |
Represents the display string that is used for the contents of the To box. This is the concatenated string of all To recipient display names. |
HasAttachments | Boolean | True |
Indicates whether an item has attachments. |
Culture | String | False |
Represents the Culture of an item. |
SenderName | String | False |
Defines the name of the Sender mailbox user. |
SenderEmailAddress | String | False |
Defines the Simple Mail Transfer Protocol (SMTP) address of the Sender mailbox user. |
SenderRoutingType | String | False |
Defines the routing that is used for the Sender mailbox. The default is SMTP. |
ToRecipients_Name | String | False |
Defines the name of the ToRecipient. |
ToRecipients_EmailAddress | String | False |
Defines the Simple Mail Transfer Protocol (SMTP) address of the ToRecipient. |
ToRecipients_ItemId | String | False |
Defines the item identifier of a ToRecipient. |
CcRecipients_Name | String | False |
Defines the name of the CcRecipient. |
CcRecipients_EmailAddress | String | False |
Defines the Simple Mail Transfer Protocol (SMTP) address of the CcRecipient. |
CcRecipients_ItemId | String | False |
Defines the item identifier of a CcRecipient. |
BccRecipients_Name | String | False |
Defines the name of the BccRecipient. |
BccRecipients_EmailAddress | String | False |
Defines the Simple Mail Transfer Protocol (SMTP) address of the BccRecipient. |
BccRecipients_ItemId | String | False |
Defines the item identifier of a BccRecipient. |
IsReadReceiptRequested | Boolean | False |
Indicates whether the sender of an item requests a read receipt. |
IsDeliveryReceiptRequested | Boolean | False |
Indicates whether the sender of an item requests a delivery receipt. |
ConversationIndex | String | False |
Contains a binary Id that represents the thread to which this message belongs. |
ConversationTopic | String | False |
Represents the conversation topic. |
FromName | String | False |
Defines the name of the From mailbox user. |
FromEmailAddress | String | False |
Defines the Simple Mail Transfer Protocol (SMTP) address of the From mailbox user. |
FromRoutingType | String | False |
Defines the routing that is used for the From mailbox. The default is SMTP. |
InternetMessageId | String | False |
Represents the Internet message identifier of an item. |
IsRead | Boolean | False |
Indicates whether a message has been read. |
IsResponseRequested | Boolean | False |
Indicates whether a response to an item is requested. |
References | String | False |
Represents the Usenet header that is used to associate replies with the original messages. |
EffectiveRights_CreateAssociated | Boolean | True |
Indicates whether a client can create an associated contents table. |
EffectiveRights_CreateContents | Boolean | True |
Indicates whether a client can create a contents table. |
EffectiveRights_CreateHierarchy | Boolean | True |
Indicates whether a client can create a hierarchy table. |
EffectiveRights_Delete | Boolean | True |
Indicates whether a client can delete a folder or item. |
EffectiveRights_Modify | Boolean | True |
Indicates whether a client can modify a folder or item. |
EffectiveRights_Read | Boolean | True |
Indicates whether a client can read a folder or item. |
EffectiveRights_ViewPrivateItems | Boolean | True |
Indicates whether a private item can be viewed. |
ReceivedByName | String | False |
Defines the name of the ReceivedBy mailbox user. |
ReceivedByEmailAddress | String | False |
Defines the Simple Mail Transfer Protocol (SMTP) address of the ReceivedBy mailbox user. |
ReceivedByRoutingType | String | False |
Defines the routing that is used for the ReceivedBy mailbox. The default is SMTP. |
ReceivedRepresentingName | String | False |
Defines the name of the ReceivedRepresenting mailbox user. |
ReceivedRepresentingEmailAddress | String | False |
Defines the Simple Mail Transfer Protocol (SMTP) address of the ReceivedRepresenting mailbox user. |
ReceivedRepresentingRoutingType | String | False |
Defines the routing that is used for the ReceivedRepresenting mailbox. The default is SMTP. |
LastModifiedName | String | True |
Contains the display name of the last user to modify an item. |
LastModifiedTime | Datetime | True |
Indicates when an item was last modified. This element is read-only. |
IsAssociated | Boolean | False |
Indicates whether the item is associated with a folder. |
WebClientReadFormQueryString | String | True |
Represents a URL to concatenate to the Microsoft Office Outlook Web App endpoint to read an item in Outlook Web App. |
WebClientEditFormQueryString | String | True |
Represents a URL to concatenate to the Outlook Web App endpoint to edit an item in Outlook Web App. |
ConversationId | String | True |
Identifies a specific conversation in the Exchange store. |
ConversationChangeKey | String | True |
Contains the change key of an item or conversation. |
UniqueBody | String | True |
Represents an HTML fragment or plain-text which represents the unique body of this conversation. |
UniqueBodyType | String | True |
Describes how the unique item body is stored in the item (HTML or TEXT). |
ReminderMessageData_Text | String | False |
Specifies the text of a reminder message. |
ReminderMessageData_Location | String | False |
Represents the location of a meeting, appointment, or persona. |
ReminderMessageData_StartTime | Datetime | False |
Specifies the starting time of the item that the reminder is for. |
ReminderMessageData_EndTime | Datetime | False |
Specifies the ending time of the item that the reminder is for. |
ReminderMessageData_AssociatedCalendarId | String | True |
Represents the calendar item that is associated with the ReminderMessageData. |
Pseudo column fields are used in the WHERE clause of SELECT statements and offer a more granular control over the tuples that are returned from the data source.
Name | Type | Description |
ImpersonationUser | String |
The Identifier of the user to impersonate. |
ImpersonationType | String |
The type of Identifier used for the impersonation user (PrincipalName, SID, PrimarySmtpAddress, SmtpAddress). |
Create, update, delete, and query subfolders for a given folder.
The Sync App will need the FolderChangeKey to update or delete an item. However, if you are unsure of the FolderChangeKey, the Sync App is able to retrieve it from the Exchange server automatically. Note that this may increase the time it take to perform a query.
Name | Type | ReadOnly | Description |
FolderId [KEY] | String | True |
Contains the unique identifier of an folder in the Exchange store. |
FolderChangeKey | String | True |
Contains the unique change key of an folder in the Exchange store. |
ParentFolderId | String | False |
Represents the unique identifier of the parent folder that contains the item or folder. |
ParentFolderChangeKey | String | True |
Represents the unique change key of the parent folder that contains the item or folder. |
FolderClass | String | False |
Represents the folder class for a given folder. |
DisplayName | String | False |
Contains the display name of a folder. |
TotalCount | Integer | True |
Represents the total count of items within a given folder. |
ChildFolderCount | Integer | True |
Represents the number of child folders that are contained within a folder. |
CanDelete | Boolean | True |
Indicates whether a managed folder can be deleted by a customer. |
CanRenameOrMove | Boolean | True |
Indicates whether a given managed folder can be renamed or moved by the customer. |
MustDisplayComment | Boolean | True |
Indicates whether the managed folder comment must be displayed. |
HasQuota | Boolean | True |
Indicates whether the managed folder has a quota. |
IsManagedFoldersRoot | Boolean | True |
Indicates whether the managed folder is the root for all managed folders. |
ManagedFolderId | String | True |
Contains the folder Id of the managed folder. |
Comment | String | True |
Contains the comment that is associated with a managed folder. |
StorageQuota | Integer | True |
Describes the storage quota for the managed folder. |
FolderSize | Integer | True |
Describes the total size of all the contents of a managed folder. |
HomePage | String | True |
Specifies the URL that will be the default home page for the managed folder. |
UnreadCount | Integer | True |
Represents the count of unread items within a given folder. |
EffectiveRights_CreateAssociated | Boolean | True |
Indicates whether a client can create an associated contents table. |
EffectiveRights_CreateContents | Boolean | True |
Indicates whether a client can create a contents table. |
EffectiveRights_CreateHierarchy | Boolean | True |
Indicates whether a client can create a hierarchy table. |
EffectiveRights_Delete | Boolean | True |
Indicates whether a client can delete a folder or item. |
EffectiveRights_Modify | Boolean | True |
Indicates whether a client can modify a folder or item. |
EffectiveRights_Read | Boolean | True |
Indicates whether a client can read a folder or item. |
EffectiveRights_ViewPrivateItems | Boolean | True |
Indicates whether a private item can be viewed. |
SharingEffectiveRights | String | False |
Indicates the permissions that the user has for the contact data that is being shared. |
Pseudo column fields are used in the WHERE clause of SELECT statements and offer a more granular control over the tuples that are returned from the data source.
Name | Type | Description |
ImpersonationUser | String |
The Identifier of the user to impersonate. |
ImpersonationType | String |
The type of Identifier used for the impersonation user (PrincipalName, SID, PrimarySmtpAddress, SmtpAddress). |
ParentFolderName | String |
Represents the distinguished folder Id of the parent folder. |
Create, update, delete, and query Inbox items.
When performing a SELECT operation on the Inbox table, the Sync App will not include the items in the subfolders under Inbox, but only the items contained within the Inbox folder.
If you wish to retrieve the items under the Inbox subfolders, your will need to specify the ParentFolderId-s in the WHERE clause. You can get every Inbox subfolder Id by executing a filtered by ParentFolderName query to the Folders table. You can use the example query below, to retrieve the items within the Inbox subfolders:
SELECT * FROM Inbox WHERE ParentFolderId IN (SELECT FolderId FROM Folders WHERE ParentFolderName = 'Inbox' AND TotalCount > 0)
The Sync App will need the ItemChangeKey to update or delete an item. However, if you are unsure of the ItemChangeKey, the Sync App is able to retrieve it from the Exchange server automatically. Note that this may increase the time it takes to perform a query.
Name | Type | ReadOnly | Description |
MimeContent | String | True |
Contains the native Multipurpose Internet Mail Extensions (MIME) stream of an object that is represented in Base64 binary format. |
ItemId [KEY] | String | True |
Contains the unique identifier of an item in the Exchange store. |
ItemChangeKey | String | True |
Contains the unique change key of an item in the Exchange store. |
ParentFolderId | String | False |
Represents the unique identifier of the parent folder that contains the item or folder. |
ParentFolderChangeKey | String | True |
Represents the unique change key of the parent folder that contains the item or folder. |
ItemClass | String | False |
Represents the message class of an item. |
Subject | String | False |
Represents the subject for Exchange store items and response objects. The subject is limited to 255 characters. |
Sensitivity | String | True |
Indicates the sensitivity level of an item. |
Body | String | False |
Represents the actual body content of a message. |
AttachmentId# | String | True |
Contains a comma-separated list of the Ids of the attached files. |
AttachmentName# | String | True |
Contains a comma-separated list of the names of the attached files. |
DateTimeReceived | Datetime | True |
Represents the date and time that an item in a mailbox was received. |
Size | Integer | True |
Represents the size in bytes of an item. This property is read-only. |
Categories | String | False |
Represents a collection of strings that identify to which categories an item in the mailbox belongs. |
Importance | String | False |
Describes the importance of an item. |
InReplyTo | String | False |
Represents the identifier of the item to which this item is a reply. |
IsSubmitted | Boolean | True |
Indicates whether an item has been submitted to the Outbox default folder. |
IsDraft | Boolean | True |
Represents whether an item has not yet been sent. |
IsFromMe | Boolean | True |
Indicates whether a user sent an item to himself or herself. |
IsResend | Boolean | True |
Indicates whether the item had previously been sent. |
IsUnmodified | Boolean | True |
Indicates whether the item has been modified. |
InternetMessageHeaders | String | True |
Represents the collection of all Internet message headers that are contained within an item in a mailbox. |
DateTimeSent | Datetime | True |
Represents the date and time that an item in a mailbox was sent. |
DateTimeCreated | Datetime | True |
Represents the date and time that a given item in the mailbox was created. |
ReminderDueBy | Datetime | False |
Represents the date and time when the event occurs. This is used by the ReminderMinutesBeforeStart element to determine when the reminder is displayed. |
ReminderIsSet | Boolean | False |
Indicates whether a reminder has been set for an item in the Exchange store. |
ReminderMinutesBeforeStart | Integer | False |
Represents the number of minutes before an event occurs when a reminder is displayed. |
DisplayCc | String | True |
Represents the display string that is used for the contents of the To box. This is the concatenated string of all To recipient display names. |
DisplayTo | String | True |
Represents a property that is set to true if an item has at least one visible attachment. This property is read-only. |
HasAttachments | Boolean | True |
Indicates whether an item has attachments. |
Culture | String | False |
Represents the Culture of an item. |
SenderName | String | False |
Defines the name of the Sender mailbox user. |
SenderEmailAddress | String | False |
Defines the Simple Mail Transfer Protocol (SMTP) address of the Sender mailbox user. |
SenderRoutingType | String | False |
Defines the routing that is used for the Sender mailbox. The default is SMTP. |
ToRecipients_Name | String | False |
Defines the name of the ToRecipient. |
ToRecipients_EmailAddress | String | False |
Defines the Simple Mail Transfer Protocol (SMTP) address of the ToRecipient. |
ToRecipients_ItemId | String | False |
Defines the item identifier of a ToRecipient. |
CcRecipients_Name | String | False |
Defines the name of the CcRecipient. |
CcRecipients_EmailAddress | String | False |
Defines the Simple Mail Transfer Protocol (SMTP) address of the CcRecipient. |
CcRecipients_ItemId | String | False |
Defines the item identifier of a CcRecipient. |
BccRecipients_Name | String | False |
Defines the name of the BccRecipient. |
BccRecipients_EmailAddress | String | False |
Defines the Simple Mail Transfer Protocol (SMTP) address of the BccRecipient. |
BccRecipients_ItemId | String | False |
Defines the item identifier of a BccRecipient. |
IsReadReceiptRequested | Boolean | False |
Indicates whether the sender of an item requests a read receipt. |
IsDeliveryReceiptRequested | Boolean | False |
Indicates whether the sender of an item requests a delivery receipt. |
ConversationIndex | String | False |
Contains a binary Id that represents the thread to which this message belongs. |
ConversationTopic | String | False |
Represents the conversation topic. |
FromName | String | False |
Defines the name of the From mailbox user. |
FromEmailAddress | String | False |
Defines the Simple Mail Transfer Protocol (SMTP) address of the From mailbox user. |
FromRoutingType | String | False |
Defines the routing that is used for the From mailbox. The default is SMTP. |
InternetMessageId | String | False |
Represents the Internet message identifier of an item. |
IsRead | Boolean | False |
Indicates whether a message has been read. |
IsResponseRequested | Boolean | False |
Indicates whether a response to an item is requested. |
References | String | False |
Represents the Usenet header that is used to associate replies with the original messages. |
EffectiveRights_CreateAssociated | Boolean | True |
Indicates whether a client can create an associated contents table. |
EffectiveRights_CreateContents | Boolean | True |
Indicates whether a client can create a contents table. |
EffectiveRights_CreateHierarchy | Boolean | True |
Indicates whether a client can create a hierarchy table. |
EffectiveRights_Delete | Boolean | True |
Indicates whether a client can delete a folder or item. |
EffectiveRights_Modify | Boolean | True |
Indicates whether a client can modify a folder or item. |
EffectiveRights_Read | Boolean | True |
Indicates whether a client can read a folder or item. |
EffectiveRights_ViewPrivateItems | Boolean | True |
Indicates whether a private item can be viewed. |
ReceivedByName | String | False |
Defines the name of the ReceivedBy mailbox user. |
ReceivedByEmailAddress | String | False |
Defines the Simple Mail Transfer Protocol (SMTP) address of the ReceivedBy mailbox user. |
ReceivedByRoutingType | String | False |
Defines the routing that is used for the ReceivedBy mailbox. The default is SMTP. |
ReceivedRepresentingName | String | False |
Defines the name of the ReceivedRepresenting mailbox user. |
ReceivedRepresentingEmailAddress | String | False |
Defines the Simple Mail Transfer Protocol (SMTP) address of the ReceivedRepresenting mailbox user. |
ReceivedRepresentingRoutingType | String | False |
Defines the routing that is used for the ReceivedRepresenting mailbox. The default is SMTP. |
LastModifiedName | String | True |
Contains the display name of the last user to modify an item. |
LastModifiedTime | Datetime | True |
Indicates when an item was last modified. This element is read-only. |
IsAssociated | Boolean | False |
Indicates whether the item is associated with a folder. |
WebClientReadFormQueryString | String | True |
Represents a URL to concatenate to the Microsoft Office Outlook Web App endpoint to read an item in Outlook Web App. |
WebClientEditFormQueryString | String | True |
Represents a URL to concatenate to the Outlook Web App endpoint to edit an item in Outlook Web App. |
ConversationId | String | True |
Identifies a specific conversation in the Exchange store. |
ConversationChangeKey | String | True |
Contains the change key of an item or conversation. |
UniqueBody | String | True |
Represents an HTML fragment or plain-text which represents the unique body of this conversation. |
UniqueBodyType | String | True |
Describes how the unique item body is stored in the item (HTML or TEXT). |
ReminderMessageData_Text | String | False |
Specifies the text of a reminder message. |
ReminderMessageData_Location | String | False |
Represents the location of a meeting, appointment, or persona. |
ReminderMessageData_StartTime | Datetime | False |
Specifies the starting time of the item that the reminder is for. |
ReminderMessageData_EndTime | Datetime | False |
Specifies the ending time of the item that the reminder is for. |
ReminderMessageData_AssociatedCalendarId | String | True |
Represents the calendar item that is associated with the ReminderMessageData. |
Pseudo column fields are used in the WHERE clause of SELECT statements and offer a more granular control over the tuples that are returned from the data source.
Name | Type | Description |
ImpersonationUser | String |
The Identifier of the user to impersonate. |
ImpersonationType | String |
The type of Identifier used for the impersonation user (PrincipalName, SID, PrimarySmtpAddress, SmtpAddress). |
SharedMailboxEmail | String |
The email of a shared mailbox. Use this to retrieve the inbox items of a shared mailbox. |
Create, update, delete, and query Junk Email items.
Name | Type | ReadOnly | Description |
MimeContent | String | True |
Contains the native Multipurpose Internet Mail Extensions (MIME) stream of an object that is represented in Base64 binary format. |
ItemId [KEY] | String | True |
Contains the unique identifier of an item in the Exchange store. |
ItemChangeKey | String | True |
Contains the unique change key of an item in the Exchange store. |
ParentFolderId | String | False |
Represents the unique identifier of the parent folder that contains the item or folder. |
ParentFolderChangeKey | String | True |
Represents the unique change key of the parent folder that contains the item or folder. |
ItemClass | String | False |
Represents the message class of an item. |
Subject | String | False |
Represents the subject for Exchange store items and response objects. The subject is limited to 255 characters. |
Sensitivity | String | True |
Indicates the sensitivity level of an item. |
Body | String | False |
Represents the actual body content of a message. |
AttachmentIds | String | True |
Contains a comma-separated list of the Ids of the attached files. |
AttachmentNames | String | True |
Contains a comma-separated list of the names of the attached files. |
DateTimeReceived | Datetime | True |
Represents the date and time that an item in a mailbox was received. |
Size | Integer | True |
Represents the size in bytes of an item. This property is read-only. |
Categories | String | False |
Represents a collection of strings that identify to which categories an item in the mailbox belongs. |
Importance | String | False |
Describes the importance of an item. |
InReplyTo | String | False |
Represents the identifier of the item to which this item is a reply. |
IsSubmitted | Boolean | True |
Indicates whether an item has been submitted to the Outbox default folder. |
IsDraft | Boolean | True |
Represents whether an item has not yet been sent. |
IsFromMe | Boolean | True |
Indicates whether a user sent an item to himself or herself. |
IsResend | Boolean | True |
Indicates whether the item had previously been sent. |
IsUnmodified | Boolean | True |
Indicates whether the item has been modified. |
InternetMessageHeaders | String | True |
Represents the collection of all Internet message headers that are contained within an item in a mailbox. |
DateTimeSent | Datetime | True |
Represents the date and time that an item in a mailbox was sent. |
DateTimeCreated | Datetime | True |
Represents the date and time that a given item in the mailbox was created. |
ReminderDueBy | Datetime | False |
Represents the date and time when the event occurs. This is used by the ReminderMinutesBeforeStart element to determine when the reminder is displayed. |
ReminderIsSet | Boolean | False |
Indicates whether a reminder has been set for an item in the Exchange store. |
ReminderMinutesBeforeStart | Integer | False |
Represents the number of minutes before an event occurs when a reminder is displayed. |
DisplayCc | String | True |
Represents the display string that is used for the contents of the To box. This is the concatenated string of all To recipient display names. |
DisplayTo | String | True |
Represents a property that is set to true if an item has at least one visible attachment. This property is read-only. |
HasAttachments | Boolean | True |
Indicates whether an item has attachments. |
Culture | String | False |
Represents the Culture of an item. |
SenderName | String | False |
Defines the name of the Sender mailbox user. |
SenderEmailAddress | String | False |
Defines the Simple Mail Transfer Protocol (SMTP) address of the Sender mailbox user. |
SenderRoutingType | String | False |
Defines the routing that is used for the Sender mailbox. The default is SMTP. |
ToRecipients_Name | String | False |
Defines the name of the ToRecipient. |
ToRecipients_EmailAddress | String | False |
Defines the Simple Mail Transfer Protocol (SMTP) address of the ToRecipient. |
ToRecipients_ItemId | String | False |
Defines the item identifier of a ToRecipient. |
CcRecipients_Name | String | False |
Defines the name of the CcRecipient. |
CcRecipients_EmailAddress | String | False |
Defines the Simple Mail Transfer Protocol (SMTP) address of the CcRecipient. |
CcRecipients_ItemId | String | False |
Defines the item identifier of a CcRecipient. |
BccRecipients_Name | String | False |
Defines the name of the BccRecipient. |
BccRecipients_EmailAddress | String | False |
Defines the Simple Mail Transfer Protocol (SMTP) address of the BccRecipient. |
BccRecipients_ItemId | String | False |
Defines the item identifier of a BccRecipient. |
IsReadReceiptRequested | Boolean | False |
Indicates whether the sender of an item requests a read receipt. |
IsDeliveryReceiptRequested | Boolean | False |
Indicates whether the sender of an item requests a delivery receipt. |
ConversationIndex | String | False |
Contains a binary Id that represents the thread to which this message belongs. |
ConversationTopic | String | False |
Represents the conversation topic. |
FromName | String | False |
Defines the name of the From mailbox user. |
FromEmailAddress | String | False |
Defines the Simple Mail Transfer Protocol (SMTP) address of the From mailbox user. |
FromRoutingType | String | False |
Defines the routing that is used for the From mailbox. The default is SMTP. |
InternetMessageId | String | False |
Represents the Internet message identifier of an item. |
IsRead | Boolean | False |
Indicates whether a message has been read. |
IsResponseRequested | Boolean | False |
Indicates whether a response to an item is requested. |
References | String | False |
Represents the Usenet header that is used to associate replies with the original messages. |
EffectiveRights_CreateAssociated | Boolean | True |
Indicates whether a client can create an associated contents table. |
EffectiveRights_CreateContents | Boolean | True |
Indicates whether a client can create a contents table. |
EffectiveRights_CreateHierarchy | Boolean | True |
Indicates whether a client can create a hierarchy table. |
EffectiveRights_Delete | Boolean | True |
Indicates whether a client can delete a folder or item. |
EffectiveRights_Modify | Boolean | True |
Indicates whether a client can modify a folder or item. |
EffectiveRights_Read | Boolean | True |
Indicates whether a client can read a folder or item. |
EffectiveRights_ViewPrivateItems | Boolean | True |
Indicates whether a private item can be viewed. |
ReceivedByName | String | False |
Defines the name of the ReceivedBy mailbox user. |
ReceivedByEmailAddress | String | False |
Defines the Simple Mail Transfer Protocol (SMTP) address of the ReceivedBy mailbox user. |
ReceivedByRoutingType | String | False |
Defines the routing that is used for the ReceivedBy mailbox. The default is SMTP. |
ReceivedRepresentingName | String | False |
Defines the name of the ReceivedRepresenting mailbox user. |
ReceivedRepresentingEmailAddress | String | False |
Defines the Simple Mail Transfer Protocol (SMTP) address of the ReceivedRepresenting mailbox user. |
ReceivedRepresentingRoutingType | String | False |
Defines the routing that is used for the ReceivedRepresenting mailbox. The default is SMTP. |
LastModifiedName | String | True |
Contains the display name of the last user to modify an item. |
LastModifiedTime | Datetime | True |
Indicates when an item was last modified. This element is read-only. |
IsAssociated | Boolean | False |
Indicates whether the item is associated with a folder. |
WebClientReadFormQueryString | String | True |
Represents a URL to concatenate to the Microsoft Office Outlook Web App endpoint to read an item in Outlook Web App. |
WebClientEditFormQueryString | String | True |
Represents a URL to concatenate to the Outlook Web App endpoint to edit an item in Outlook Web App. |
ConversationId | String | True |
Identifies a specific conversation in the Exchange store. |
ConversationChangeKey | String | True |
Contains the change key of an item or conversation. |
UniqueBody | String | True |
Represents an HTML fragment or plain-text which represents the unique body of this conversation. |
UniqueBodyType | String | True |
Describes how the unique item body is stored in the item (HTML or TEXT). |
ReminderMessageData_Text | String | False |
Specifies the text of a reminder message. |
ReminderMessageData_Location | String | False |
Represents the location of a meeting, appointment, or persona. |
ReminderMessageData_StartTime | Datetime | False |
Specifies the starting time of the item that the reminder is for. |
ReminderMessageData_EndTime | Datetime | False |
Specifies the ending time of the item that the reminder is for. |
ReminderMessageData_AssociatedCalendarId | String | True |
Represents the calendar item that is associated with the ReminderMessageData. |
Pseudo column fields are used in the WHERE clause of SELECT statements and offer a more granular control over the tuples that are returned from the data source.
Name | Type | Description |
ImpersonationUser | String |
The Identifier of the user to impersonate. |
ImpersonationType | String |
The type of Identifier used for the impersonation user (PrincipalName, SID, PrimarySmtpAddress, SmtpAddress). |
Create, update, delete, and query Outbox items.
When performing a SELECT operation on the Outbox table, the Sync App will not include the items in the subfolders under Outbox, but only the items contained within the Outbox folder.
If you wish to retrieve the items under the Outbox subfolders, your will need to specify the ParentFolderId-s in the WHERE clause. You can get every Outbox subfolder Id by executing a filtered by ParentFolderName query to the Folders table. You can use the example query below, to retrieve the items within the Outbox subfolders:
SELECT * FROM Outbox WHERE ParentFolderId IN (SELECT FolderId FROM Folders WHERE ParentFolderName = 'Outbox' AND TotalCount > 0)
The Sync App will need the ItemChangeKey to update or delete an item. However, if you are unsure of the ItemChangeKey, the Sync App is able to retrieve it from the Exchange server automatically. Note that this may increase the time it takes to perform a query.
Name | Type | ReadOnly | Description |
MimeContent | String | True |
Contains the native Multipurpose Internet Mail Extensions (MIME) stream of an object that is represented in Base64 binary format. |
ItemId [KEY] | String | True |
Contains the unique identifier of an item in the Exchange store. |
ItemChangeKey | String | True |
Contains the unique change key of an item in the Exchange store. |
ParentFolderId | String | False |
Represents the unique identifier of the parent folder that contains the item or folder. |
ParentFolderChangeKey | String | True |
Represents the unique change key of the parent folder that contains the item or folder. |
ItemClass | String | False |
Represents the message class of an item. |
Subject | String | False |
Represents the subject for Exchange store items and response objects. The subject is limited to 255 characters. |
Sensitivity | String | True |
Indicates the sensitivity level of an item. |
Body | String | False |
Represents the actual body content of a message. |
AttachmentIds | String | True |
Contains a comma-separated list of the Ids of the attached files. |
AttachmentNames | String | True |
Contains a comma-separated list of the names of the attached files. |
DateTimeReceived | Datetime | True |
Represents the date and time that an item in a mailbox was received. |
Size | Integer | True |
Represents the size in bytes of an item. This property is read-only. |
Categories | String | False |
Represents a collection of strings that identify to which categories an item in the mailbox belongs. |
Importance | String | False |
Describes the importance of an item. |
InReplyTo | String | False |
Represents the identifier of the item to which this item is a reply. |
IsSubmitted | Boolean | True |
Indicates whether an item has been submitted to the Outbox default folder. |
IsDraft | Boolean | True |
Represents whether an item has not yet been sent. |
IsFromMe | Boolean | True |
Indicates whether a user sent an item to himself or herself. |
IsResend | Boolean | True |
Indicates whether the item had previously been sent. |
IsUnmodified | Boolean | True |
Indicates whether the item has been modified. |
InternetMessageHeaders | String | True |
Represents the collection of all Internet message headers that are contained within an item in a mailbox. |
DateTimeSent | Datetime | True |
Represents the date and time that an item in a mailbox was sent. |
DateTimeCreated | Datetime | True |
Represents the date and time that a given item in the mailbox was created. |
ReminderDueBy | Datetime | False |
Represents the date and time when the event occurs. This is used by the ReminderMinutesBeforeStart element to determine when the reminder is displayed. |
ReminderIsSet | Boolean | False |
Indicates whether a reminder has been set for an item in the Exchange store. |
ReminderMinutesBeforeStart | Integer | False |
Represents the number of minutes before an event occurs when a reminder is displayed. |
DisplayCc | String | True |
Represents the display string that is used for the contents of the To box. This is the concatenated string of all To recipient display names. |
DisplayTo | String | True |
Represents a property that is set to true if an item has at least one visible attachment. This property is read-only. |
HasAttachments | Boolean | True |
Indicates whether an item has attachments. |
Culture | String | False |
Represents the Culture of an item. |
SenderName | String | False |
Defines the name of the Sender mailbox user. |
SenderEmailAddress | String | False |
Defines the Simple Mail Transfer Protocol (SMTP) address of the Sender mailbox user. |
SenderRoutingType | String | False |
Defines the routing that is used for the Sender mailbox. The default is SMTP. |
ToRecipients_Name | String | False |
Defines the name of the ToRecipient. |
ToRecipients_EmailAddress | String | False |
Defines the Simple Mail Transfer Protocol (SMTP) address of the ToRecipient. |
ToRecipients_ItemId | String | False |
Defines the item identifier of a ToRecipient. |
CcRecipients_Name | String | False |
Defines the name of the CcRecipient. |
CcRecipients_EmailAddress | String | False |
Defines the Simple Mail Transfer Protocol (SMTP) address of the CcRecipient. |
CcRecipients_ItemId | String | False |
Defines the item identifier of a CcRecipient. |
BccRecipients_Name | String | False |
Defines the name of the BccRecipient. |
BccRecipients_EmailAddress | String | False |
Defines the Simple Mail Transfer Protocol (SMTP) address of the BccRecipient. |
BccRecipients_ItemId | String | False |
Defines the item identifier of a BccRecipient. |
IsReadReceiptRequested | Boolean | False |
Indicates whether the sender of an item requests a read receipt. |
IsDeliveryReceiptRequested | Boolean | False |
Indicates whether the sender of an item requests a delivery receipt. |
ConversationIndex | String | False |
Contains a binary Id that represents the thread to which this message belongs. |
ConversationTopic | String | False |
Represents the conversation topic. |
FromName | String | False |
Defines the name of the From mailbox user. |
FromEmailAddress | String | False |
Defines the Simple Mail Transfer Protocol (SMTP) address of the From mailbox user. |
FromRoutingType | String | False |
Defines the routing that is used for the From mailbox. The default is SMTP. |
InternetMessageId | String | False |
Represents the Internet message identifier of an item. |
IsRead | Boolean | False |
Indicates whether a message has been read. |
IsResponseRequested | Boolean | False |
Indicates whether a response to an item is requested. |
References | String | False |
Represents the Usenet header that is used to associate replies with the original messages. |
EffectiveRights_CreateAssociated | Boolean | True |
Indicates whether a client can create an associated contents table. |
EffectiveRights_CreateContents | Boolean | True |
Indicates whether a client can create a contents table. |
EffectiveRights_CreateHierarchy | Boolean | True |
Indicates whether a client can create a hierarchy table. |
EffectiveRights_Delete | Boolean | True |
Indicates whether a client can delete a folder or item. |
EffectiveRights_Modify | Boolean | True |
Indicates whether a client can modify a folder or item. |
EffectiveRights_Read | Boolean | True |
Indicates whether a client can read a folder or item. |
EffectiveRights_ViewPrivateItems | Boolean | True |
Indicates whether a private item can be viewed. |
ReceivedByName | String | False |
Defines the name of the ReceivedBy mailbox user. |
ReceivedByEmailAddress | String | False |
Defines the Simple Mail Transfer Protocol (SMTP) address of the ReceivedBy mailbox user. |
ReceivedByRoutingType | String | False |
Defines the routing that is used for the ReceivedBy mailbox. The default is SMTP. |
ReceivedRepresentingName | String | False |
Defines the name of the ReceivedRepresenting mailbox user. |
ReceivedRepresentingEmailAddress | String | False |
Defines the Simple Mail Transfer Protocol (SMTP) address of the ReceivedRepresenting mailbox user. |
ReceivedRepresentingRoutingType | String | False |
Defines the routing that is used for the ReceivedRepresenting mailbox. The default is SMTP. |
LastModifiedName | String | True |
Contains the display name of the last user to modify an item. |
LastModifiedTime | Datetime | True |
Indicates when an item was last modified. This element is read-only. |
IsAssociated | Boolean | False |
Indicates whether the item is associated with a folder. |
WebClientReadFormQueryString | String | True |
Represents a URL to concatenate to the Microsoft Office Outlook Web App endpoint to read an item in Outlook Web App. |
WebClientEditFormQueryString | String | True |
Represents a URL to concatenate to the Outlook Web App endpoint to edit an item in Outlook Web App. |
ConversationId | String | True |
Identifies a specific conversation in the Exchange store. |
ConversationChangeKey | String | True |
Contains the change key of an item or conversation. |
UniqueBody | String | True |
Represents an HTML fragment or plain-text which represents the unique body of this conversation. |
UniqueBodyType | String | True |
Describes how the unique item body is stored in the item (HTML or TEXT). |
ReminderMessageData_Text | String | False |
Specifies the text of a reminder message. |
ReminderMessageData_Location | String | False |
Represents the location of a meeting, appointment, or persona. |
ReminderMessageData_StartTime | Datetime | False |
Specifies the starting time of the item that the reminder is for. |
ReminderMessageData_EndTime | Datetime | False |
Specifies the ending time of the item that the reminder is for. |
ReminderMessageData_AssociatedCalendarId | String | True |
Represents the calendar item that is associated with the ReminderMessageData. |
Pseudo column fields are used in the WHERE clause of SELECT statements and offer a more granular control over the tuples that are returned from the data source.
Name | Type | Description |
ImpersonationUser | String |
The Identifier of the user to impersonate. |
ImpersonationType | String |
The type of Identifier used for the impersonation user (PrincipalName, SID, PrimarySmtpAddress, SmtpAddress). |
Create, update, delete, and query Sent Items.
When performing a SELECT operation on the SentItems table, the Sync App will not include the items in the subfolders under SentItems, but only the items contained within the SentItems folder.
If you wish to retrieve the items under the SentItems subfolders, your will need to specify the ParentFolderId-s in the WHERE clause. You can get every SentItems subfolder Id by executing a filtered by ParentFolderName query to the Folders table. You can use the example query below, to retrieve the items within the SentItems subfolders:
SELECT * FROM SentItems WHERE ParentFolderId IN (SELECT FolderId FROM Folders WHERE ParentFolderName = 'SentItems' AND TotalCount > 0)
The Sync App will need the ItemChangeKey to update or delete an item. However, if you are unsure of the ItemChangeKey, the Sync App is able to retrieve it from the Exchange server automatically. Note that this may increase the time it takes to perform a query.
Name | Type | ReadOnly | Description |
MimeContent | String | True |
Contains the native Multipurpose Internet Mail Extensions (MIME) stream of an object that is represented in Base64 binary format. |
ItemId [KEY] | String | True |
Contains the unique identifier of an item in the Exchange store. |
ItemChangeKey | String | True |
Contains the unique change key of an item in the Exchange store. |
ParentFolderId | String | False |
Represents the unique identifier of the parent folder that contains the item or folder. |
ParentFolderChangeKey | String | True |
Represents the unique change key of the parent folder that contains the item or folder. |
ItemClass | String | False |
Represents the message class of an item. |
Subject | String | False |
Represents the subject for Exchange store items and response objects. The subject is limited to 255 characters. |
Sensitivity | String | True |
Indicates the sensitivity level of an item. |
Body | String | False |
Represents the actual body content of a message. |
AttachmentIds | String | True |
Contains a comma-separated list of the Ids of the attached files. |
AttachmentNames | String | True |
Contains a comma-separated list of the names of the attached files. |
DateTimeReceived | Datetime | True |
Represents the date and time that an item in a mailbox was received. |
Size | Integer | True |
Represents the size in bytes of an item. This property is read-only. |
Categories | String | False |
Represents a collection of strings that identify to which categories an item in the mailbox belongs. |
Importance | String | False |
Describes the importance of an item. |
InReplyTo | String | False |
Represents the identifier of the item to which this item is a reply. |
IsSubmitted | Boolean | True |
Indicates whether an item has been submitted to the Outbox default folder. |
IsDraft | Boolean | True |
Represents whether an item has not yet been sent. |
IsFromMe | Boolean | True |
Indicates whether a user sent an item to himself or herself. |
IsResend | Boolean | True |
Indicates whether the item had previously been sent. |
IsUnmodified | Boolean | True |
Indicates whether the item has been modified. |
InternetMessageHeaders | String | True |
Represents the collection of all Internet message headers that are contained within an item in a mailbox. |
DateTimeSent | Datetime | True |
Represents the date and time that an item in a mailbox was sent. |
DateTimeCreated | Datetime | True |
Represents the date and time that a given item in the mailbox was created. |
ReminderDueBy | Datetime | False |
Represents the date and time when the event occurs. This is used by the ReminderMinutesBeforeStart element to determine when the reminder is displayed. |
ReminderIsSet | Boolean | False |
Indicates whether a reminder has been set for an item in the Exchange store. |
ReminderMinutesBeforeStart | Integer | False |
Represents the number of minutes before an event occurs when a reminder is displayed. |
DisplayCc | String | True |
Represents the display string that is used for the contents of the To box. This is the concatenated string of all To recipient display names. |
DisplayTo | String | True |
Represents a property that is set to true if an item has at least one visible attachment. This property is read-only. |
HasAttachments | Boolean | True |
Indicates whether an item has attachments. |
Culture | String | False |
Represents the Culture of an item. |
SenderName | String | False |
Defines the name of the Sender mailbox user. |
SenderEmailAddress | String | False |
Defines the Simple Mail Transfer Protocol (SMTP) address of the Sender mailbox user. |
SenderRoutingType | String | False |
Defines the routing that is used for the Sender mailbox. The default is SMTP. |
ToRecipients_Name | String | False |
Defines the name of the ToRecipient. |
ToRecipients_EmailAddress | String | False |
Defines the Simple Mail Transfer Protocol (SMTP) address of the ToRecipient. |
ToRecipients_ItemId | String | False |
Defines the item identifier of a ToRecipient. |
CcRecipients_Name | String | False |
Defines the name of the CcRecipient. |
CcRecipients_EmailAddress | String | False |
Defines the Simple Mail Transfer Protocol (SMTP) address of the CcRecipient. |
CcRecipients_ItemId | String | False |
Defines the item identifier of a CcRecipient. |
BccRecipients_Name | String | False |
Defines the name of the BccRecipient. |
BccRecipients_EmailAddress | String | False |
Defines the Simple Mail Transfer Protocol (SMTP) address of the BccRecipient. |
BccRecipients_ItemId | String | False |
Defines the item identifier of a BccRecipient. |
IsReadReceiptRequested | Boolean | False |
Indicates whether the sender of an item requests a read receipt. |
IsDeliveryReceiptRequested | Boolean | False |
Indicates whether the sender of an item requests a delivery receipt. |
ConversationIndex | String | False |
Contains a binary Id that represents the thread to which this message belongs. |
ConversationTopic | String | False |
Represents the conversation topic. |
FromName | String | False |
Defines the name of the From mailbox user. |
FromEmailAddress | String | False |
Defines the Simple Mail Transfer Protocol (SMTP) address of the From mailbox user. |
FromRoutingType | String | False |
Defines the routing that is used for the From mailbox. The default is SMTP. |
InternetMessageId | String | False |
Represents the Internet message identifier of an item. |
IsRead | Boolean | False |
Indicates whether a message has been read. |
IsResponseRequested | Boolean | False |
Indicates whether a response to an item is requested. |
References | String | False |
Represents the Usenet header that is used to associate replies with the original messages. |
EffectiveRights_CreateAssociated | Boolean | True |
Indicates whether a client can create an associated contents table. |
EffectiveRights_CreateContents | Boolean | True |
Indicates whether a client can create a contents table. |
EffectiveRights_CreateHierarchy | Boolean | True |
Indicates whether a client can create a hierarchy table. |
EffectiveRights_Delete | Boolean | True |
Indicates whether a client can delete a folder or item. |
EffectiveRights_Modify | Boolean | True |
Indicates whether a client can modify a folder or item. |
EffectiveRights_Read | Boolean | True |
Indicates whether a client can read a folder or item. |
EffectiveRights_ViewPrivateItems | Boolean | True |
Indicates whether a private item can be viewed. |
ReceivedByName | String | False |
Defines the name of the ReceivedBy mailbox user. |
ReceivedByEmailAddress | String | False |
Defines the Simple Mail Transfer Protocol (SMTP) address of the ReceivedBy mailbox user. |
ReceivedByRoutingType | String | False |
Defines the routing that is used for the ReceivedBy mailbox. The default is SMTP. |
ReceivedRepresentingName | String | False |
Defines the name of the ReceivedRepresenting mailbox user. |
ReceivedRepresentingEmailAddress | String | False |
Defines the Simple Mail Transfer Protocol (SMTP) address of the ReceivedRepresenting mailbox user. |
ReceivedRepresentingRoutingType | String | False |
Defines the routing that is used for the ReceivedRepresenting mailbox. The default is SMTP. |
LastModifiedName | String | True |
Contains the display name of the last user to modify an item. |
LastModifiedTime | Datetime | True |
Indicates when an item was last modified. This element is read-only. |
IsAssociated | Boolean | False |
Indicates whether the item is associated with a folder. |
WebClientReadFormQueryString | String | True |
Represents a URL to concatenate to the Microsoft Office Outlook Web App endpoint to read an item in Outlook Web App. |
WebClientEditFormQueryString | String | True |
Represents a URL to concatenate to the Outlook Web App endpoint to edit an item in Outlook Web App. |
ConversationId | String | True |
Identifies a specific conversation in the Exchange store. |
ConversationChangeKey | String | True |
Contains the change key of an item or conversation. |
UniqueBody | String | True |
Represents an HTML fragment or plain-text which represents the unique body of this conversation. |
UniqueBodyType | String | True |
Describes how the unique item body is stored in the item (HTML or TEXT). |
ReminderMessageData_Text | String | False |
Specifies the text of a reminder message. |
ReminderMessageData_Location | String | False |
Represents the location of a meeting, appointment, or persona. |
ReminderMessageData_StartTime | Datetime | False |
Specifies the starting time of the item that the reminder is for. |
ReminderMessageData_EndTime | Datetime | False |
Specifies the ending time of the item that the reminder is for. |
ReminderMessageData_AssociatedCalendarId | String | True |
Represents the calendar item that is associated with the ReminderMessageData. |
Pseudo column fields are used in the WHERE clause of SELECT statements and offer a more granular control over the tuples that are returned from the data source.
Name | Type | Description |
ImpersonationUser | String |
The Identifier of the user to impersonate. |
ImpersonationType | String |
The type of Identifier used for the impersonation user (PrincipalName, SID, PrimarySmtpAddress, SmtpAddress). |
Create, update, delete, and query Tasks items.
The Sync App will need the ItemChangeKey to update or delete an item. However, if you are unsure of the ItemChangeKey, the Sync App is able to retrieve it from the Exchange server automatically. Note that this may increase the time it takes to perform a query.
In order to INSERT, SELECT, or UPDATE the Recurrence fields in a Task, you'll need to make sure that you only set the fields associated with the Recurrence_Type and Recurrence_Duration fields. Please see the tables below:
Recurrence_Type Values & Associated Fields
RelativeYearlyRecurrence | Recurrence_DaysOfWeek, Recurrence_DaysOfWeekIndex, Recurrence_Month |
AbsoluteYearlyRecurrence | Recurrence_DayOfMonth, Recurrence_Month |
RelativeMonthlyRecurrence | Recurrence_Interval, Recurrence_DaysOfWeek, Recurrence_DaysOfWeekIndex |
AbsoluteMonthlyRecurrence | Recurrence_Interval, Recurrence_DayOfMonth |
WeeklyRecurrence | Recurrence_Interval, Recurrence_DaysOfWeek, Recurrence_FirstDayOfWeek |
Daily | Recurrence_Interval |
*Regeneration | Recurrence_Interval |
Recurrence_Duration & Associated Fields
NoEndRecurrence | Recurrence_StartDate |
EndDateRecurrence | Recurrence_StartDate, Recurrence_EndDate |
NumberedRecurrence | Recurrence_StartDate, Recurrence_NumberOfOccurrences |
Name | Type | ReadOnly | Description |
MimeContent | String | True |
Contains the native Multipurpose Internet Mail Extensions (MIME) stream of an object that is represented in Base64 binary format. |
ItemId [KEY] | String | True |
Contains the unique identifier of an item in the Exchange store. This property is read-only. |
ItemChangeKey | String | True |
Contains the unique change key of an item in the Exchange store. This property is read-only. |
ParentFolderId | String | False |
Represents the unique identifier of the parent folder that contains the item or folder. This property is read-only. |
ParentFolderChangeKey | String | True |
Represents the unique change key of the parent folder that contains the item or folder. This property is read-only. |
ItemClass | String | False |
Represents the message class of an item. |
Subject | String | False |
Represents the subject for Exchange store items and response objects. The subject is limited to 255 characters. |
Sensitivity | String | True |
Indicates the sensitivity level of an item. |
DateTimeReceived | Datetime | True |
Represents the date and time that an item in a mailbox was received. |
Size | Integer | True |
Represents the size in bytes of an item. This property is read-only. |
Categories | String | False |
Represents a collection of strings that identify to which categories an item in the mailbox belongs. |
InReplyTo | String | True |
Represents the identifier of the item to which this item is a reply. |
IsSubmitted | Boolean | True |
Indicates whether an item has been submitted to the Outbox default folder. |
IsDraft | Boolean | True |
Represents whether an item has not yet been sent. |
IsFromMe | Boolean | True |
Indicates whether a user sent an item to himself or herself. |
IsResend | Boolean | True |
Indicates whether the item had previously been sent. |
IsUnmodified | Boolean | True |
Indicates whether the item has been modified. |
InternetMessageHeaders | String | True |
Represents the collection of all Internet message headers that are contained within an item in a mailbox. |
DateTimeSent | Datetime | True |
Represents the date and time that an item in a mailbox was sent. |
DateTimeCreated | Datetime | True |
Represents the date and time that a given item in the mailbox was created. |
ReminderDueBy | Datetime | False |
Represents the date and time when the event occurs. |
ReminderIsSet | Boolean | False |
Indicates whether a reminder has been set for an item in the Exchange store. |
ReminderMinutesBeforeStart | Integer | False |
Represents the number of minutes before an event occurs when a reminder is displayed. |
DisplayCc | String | True |
Represents the display string that is used for the contents of the To box. This is the concatenated string of all To recipient display names. |
DisplayTo | String | True |
Represents a property that is set to true if an item has at least one visible attachment. This property is read-only. |
HasAttachments | Boolean | True |
Indicates whether an item has attachments. |
Culture | String | False |
Represents the Culture of an item. |
ActualWork | Integer | False |
Represents the actual amount of time that is spent on a task. |
AssignedTime | Datetime | False |
Represents the time when a task is assigned to a contact. |
BillingInformation | String | False |
Holds billing information for a task. |
ChangeCount | Integer | False |
Specifies the version of the task. |
Companies1 | String | False |
Represents the collection of companies that are associated with a contact or task. |
Companies2 | String | False |
Represents the collection of companies that are associated with a contact or task. |
Companies3 | String | False |
Represents the collection of companies that are associated with a contact or task. |
CompleteDate | Datetime | False |
Represents the date on which a task is completed. |
Contacts1 | String | False |
Contains a list of contacts who are associated with a task. |
Contacts2 | String | False |
Contains a list of contacts who are associated with a task. |
Contacts3 | String | False |
Contains a list of contacts who are associated with a task. |
DelegationState | String | False |
Represents the status of a delegated task. |
Delegator | String | False |
Contains the name of the delegator who assigned the task. |
DueDate | Datetime | False |
Represents the date when a task item is due. |
IsAssignmentEditable | Boolean | False |
Indicates whether the task is editable or not. |
IsComplete | Boolean | False |
Indicates whether the task has been completed or not. |
IsRecurring | Boolean | True |
Indicates whether a task is part of a recurring item. |
IsTeamTask | Boolean | False |
Indicates whether the task is owned by a team or not. |
Mileage | String | False |
Represents mileage for a task item. |
Owner | String | False |
Represents the owner of a task. |
PercentComplete | Double | False |
Describes the completion status of a task. |
Recurrence_Type | String | False |
Contains the recurrence type for task items and meeting requests. The allowed values are RelativeYearlyRecurrence, AbsoluteYearlyRecurrence, RelativeMonthlyRecurrence, AbsoluteMonthlyRecurrence, WeeklyRecurrence, DailyRecurrence, DailyRegeneration, WeeklyRegeneration, MonthlyRegeneration, YearlyRegeneration. |
Recurrence_DaysOfWeek | String | False |
Describes days of the week that are used in item recurrence patterns. |
Recurrence_DayOfWeekIndex | String | False |
Describes which week in a month is used in a relative yearly recurrence pattern. The allowed values are First, Second, Third, Fourth, Last. |
Recurrence_Month | String | False |
Describes the month when a yearly recurring item occurs. |
Recurrence_DayOfMonth | Integer | False |
Describes the day in a month on which a recurring item occurs. |
Recurrence_Interval | Integer | False |
Defines the interval between two consecutive recurring items. |
Recurrence_FirstDayOfWeek | String | False |
Specifies the first day of the week. |
Recurrence_Duration | String | False |
Contains the recurrence duration type for task items and meeting requests. The allowed values are NoEndRecurrence, EndDateRecurrence, NumberedRecurrence. |
Recurrence_StartDate | Datetime | False |
Represents the start date of a recurring task or calendar item. |
Recurrence_EndDate | Datetime | False |
Represents the end date of a recurring task or calendar item. |
Recurrence_NumberOfOccurences | Integer | False |
Contains the number of occurrences of a recurring item. |
StartDate | Datetime | False |
Represents the start date of a task item. |
Status | String | False |
Represents the status of a task item. |
StatusDescription | String | True |
Contains an explanation of the task status. |
TotalWork | Integer | False |
Contains a description of how much work is associated with an item. |
EffectiveRights_CreateAssociated | Boolean | True |
Indicates whether a client can create an associated contents table. |
EffectiveRights_CreateContents | Boolean | True |
Indicates whether a client can create a contents table. |
EffectiveRights_CreateHierarchy | Boolean | True |
Indicates whether a client can create a hierarchy table. |
EffectiveRights_Delete | Boolean | True |
Indicates whether a client can delete a folder or item. |
EffectiveRights_Modify | Boolean | True |
Indicates whether a client can modify a folder or item. |
EffectiveRights_Read | Boolean | True |
Indicates whether a client can read a folder or item. |
EffectiveRights_ViewPrivateItems | Boolean | True |
Indicates whether a private item can be viewed. |
LastModifiedName | String | True |
Contains the display name of the last user to modify an item. |
LastModifiedTime | Datetime | True |
Indicates when an item was last modified. |
IsAssociated | Boolean | False |
Indicates whether the item is associated with a folder. |
WebClientReadFormQueryString | String | True |
Represents a URL to concatenate to the Microsoft Office Outlook Web App endpoint to read an item in Outlook Web App. |
WebClientEditFormQueryString | String | True |
Represents a URL to concatenate to the Outlook Web App endpoint to edit an item in Outlook Web App. |
ConversationId | String | True |
Contains the identifier of an item or conversation. |
ConversationChangeKey | String | True |
Contains the change key of an item or conversation. |
UniqueBody | String | True |
Represents an HTML fragment or plain-text which represents the unique body of this conversation. |
UniqueBodyType | String | True |
Describes how the unique item body is stored in the item (HTML or TEXT). |
Pseudo column fields are used in the WHERE clause of SELECT statements and offer a more granular control over the tuples that are returned from the data source.
Name | Type | Description |
ImpersonationUser | String |
The Identifier of the user to impersonate. |
ImpersonationType | String |
The type of Identifier used for the impersonation user (PrincipalName, SID, PrimarySmtpAddress, SmtpAddress). |
The CData Sync App models Microsoft Exchange objects as relational tables and views. A Microsoft Exchange object has relationships to other objects; in the tables, these relationships are expressed through foreign keys. The following sections show the available API objects and provide more information on executing SQL to Microsoft Exchange APIs.
Schemas for most database objects are defined in simple, text-based configuration files.
The Sync App offloads as much of the SELECT statement processing as possible to the Microsoft Exchange APIs and then processes the rest of the query in memory. See SupportEnhancedSQL for more information on how the Sync App circumvents API limitations with in-memory client-side processing.
The Sync App models the data in Microsoft Exchange into a list of tables that can be queried using standard SQL statements.
Generally, querying Microsoft Exchange tables is the same as querying a table in a relational database. Sometimes there are special cases, for example, including a certain column in the WHERE clause might be required to get data for certain columns in the table. This is typically needed for situations where a separate request must be made for each row to get certain columns. These types of situations are clearly documented at the top of the table page linked below.
Name | Description |
CalendarGroups | CalendarGroups table for Exchange data provider. |
Calendars | Calendars table for Exchange data provider. |
Contacts | Contacts table for Exchange data provider. |
Events | Events table for Exchange data provider. |
ExtendedProperties | Create, update, delete, and query Contacts items. |
Groups | Groups table for Exchange data provider. |
MailFolders | MailFolders table for Exchange data provider. |
Messages | Messages table for Exchange data provider. |
Users | Users table for Exchange data provider. |
CalendarGroups table for Exchange data provider.
Name | Type | ReadOnly | Description |
id [KEY] | String | False | |
changeKey | String | False | |
classId | String | False | |
name | String | False |
Pseudo column fields are used in the WHERE clause of SELECT statements and offer a more granular control over the tuples that are returned from the data source.
Name | Type | Description |
userId | String |
Calendars table for Exchange data provider.
You can query Calendars by specifying an Id or selecting all:
SELECT * FROM Calendars WHERE Id = 'your Calendar Id goes here'
Select a certain column from the entity and filter by that column:
SELECT Name FROM Calendars WHERE Name LIKE 'John Calendar%'
Note: Unless specifying the AlwaysRequstTableDependencies connection property, or selecting/filtering by the reference CalendarGroupId, the value for CalendarGroupId will remain null.
Specify a Name as a minimum in order to create a new Calendar:
INSERT INTO Calendars (Name) VALUES ('John')
Name | Type | ReadOnly | Description |
calendarGroupId | String | False | |
id [KEY] | String | False | |
canEdit | Bool | False | |
canShare | Bool | False | |
canViewPrivateItems | Bool | False | |
changeKey | String | False | |
color | String | False | |
name | String | False | |
owner_name | String | False | |
owner_address | String | False |
Pseudo column fields are used in the WHERE clause of SELECT statements and offer a more granular control over the tuples that are returned from the data source.
Name | Type | Description |
userId | String |
Contacts table for Exchange data provider.
You can query Contacts by specifying an Id or selecting all:
SELECT * FROM Contacts WHERE Id = 'your Contact Id goes here'
Select a certain column from the entity and filter by that column:
SELECT GivenName FROM Contacts WHERE GivenName LIKE 'John%'
Specify a GivenName and a Surname as a minimum in order to create a new Contact:
INSERT INTO Contacts (GivenName, Surname) VALUES ('John', 'Smith')
Name | Type | ReadOnly | Description |
id [KEY] | String | False | |
categories | String | False | |
changeKey | String | False | |
createdDateTime | Datetime | False | |
lastModifiedDateTime | Datetime | False | |
assistantName | String | False | |
birthday | Datetime | False | |
businessAddress_street | String | False | |
businessAddress_city | String | False | |
businessAddress_state | String | False | |
businessAddress_countryOrRegion | String | False | |
businessAddress_postalCode | String | False | |
businessHomePage | String | False | |
businessPhones | String | False | |
children | String | False | |
companyName | String | False | |
department | String | False | |
displayName | String | False | |
emailAddresses | String | False | |
fileAs | String | False | |
generation | String | False | |
givenName | String | False | |
homeAddress_street | String | False | |
homeAddress_city | String | False | |
homeAddress_state | String | False | |
homeAddress_countryOrRegion | String | False | |
homeAddress_postalCode | String | False | |
homePhones | String | False | |
imAddresses | String | False | |
initials | String | False | |
jobTitle | String | False | |
manager | String | False | |
middleName | String | False | |
mobilePhone | String | False | |
nickName | String | False | |
officeLocation | String | False | |
otherAddress_street | String | False | |
otherAddress_city | String | False | |
otherAddress_state | String | False | |
otherAddress_countryOrRegion | String | False | |
otherAddress_postalCode | String | False | |
parentFolderId | String | False | |
personalNotes | String | False | |
profession | String | False | |
spouseName | String | False | |
surname | String | False | |
title | String | False | |
yomiCompanyName | String | False | |
yomiGivenName | String | False | |
yomiSurname | String | False |
Pseudo column fields are used in the WHERE clause of SELECT statements and offer a more granular control over the tuples that are returned from the data source.
Name | Type | Description |
userId | String |
Events table for Exchange data provider.
You can retrieve all from Events, specify an Event (Id), CalendarId, or you can filter results by a certain column.
Note: Unless specifying the AlwaysRequstTableDependencies connection property, or selecting/filtering by the reference columns CalendarId, the value for CalendarId will remain null.
Note: To retrieve all Events for Other user (Works only in case of OAuthGrantType=CLIENT), you can specify the query like -
SELECT * FROM Events WHERE UserId = '0409f710-2aa9-4f05-8944-ef382160f1d1' AND CalendarId IN (SELECT Id from Calendars WHERE UserId = '0409f710-2aa9-4f05-8944-ef382160f1d1')
To create a new event, start and end are required, including the timezone.
INSERT INTO Events (Subject, Body_Content, Start_DateTime, Start_TimeZone, End_DateTime, End_TimeZone) VALUES ('New Test Event', 'Event created using Office365Provider', '2016-01-01T10:00:00', 'UTC', '2016-01-01T11:00:00', 'UTC')
Note: By default this statement will create your event under the default calendar.
Name | Type | ReadOnly | Description |
id [KEY] | String | False | |
categories | String | False | |
changeKey | String | False | |
createdDateTime | Datetime | False | |
lastModifiedDateTime | Datetime | False | |
attendees | String | False | |
body_contentType | String | False | |
body_content | String | False | |
bodyPreview | String | False | |
end_dateTime | String | False | |
end_timeZone | String | False | |
hasAttachments | Bool | False | |
iCalUId | String | False | |
importance | String | False | |
isAllDay | Bool | False | |
isCancelled | Bool | False | |
isOrganizer | Bool | False | |
isReminderOn | Bool | False | |
location_displayName | String | False | |
location_locationEmailAddress | String | False | |
location_address_street | String | False | |
location_address_city | String | False | |
location_address_state | String | False | |
location_address_countryOrRegion | String | False | |
location_address_postalCode | String | False | |
location_coordinates_altitude | Double | False | |
location_coordinates_latitude | Double | False | |
location_coordinates_longitude | Double | False | |
location_coordinates_accuracy | Double | False | |
location_coordinates_altitudeAccuracy | Double | False | |
location_locationUri | String | False | |
location_locationType | String | False | |
location_uniqueId | String | False | |
location_uniqueIdType | String | False | |
locations | String | False | |
onlineMeetingUrl | String | False | |
organizer_emailAddress_name | String | False | |
organizer_emailAddress_address | String | False | |
originalEndTimeZone | String | False | |
originalStart | Datetime | False | |
originalStartTimeZone | String | False | |
recurrence_pattern_type | String | False | |
recurrence_pattern_interval | Int | False | |
recurrence_pattern_month | Int | False | |
recurrence_pattern_dayOfMonth | Int | False | |
recurrence_pattern_daysOfWeek | String | False | |
recurrence_pattern_firstDayOfWeek | String | False | |
recurrence_pattern_index | String | False | |
recurrence_range_type | String | False | |
recurrence_range_startDate | Date | False | |
recurrence_range_endDate | Date | False | |
recurrence_range_recurrenceTimeZone | String | False | |
recurrence_range_numberOfOccurrences | Int | False | |
reminderMinutesBeforeStart | Int | False | |
responseRequested | Bool | False | |
responseStatus_response | String | False | |
responseStatus_time | Datetime | False | |
sensitivity | String | False | |
seriesMasterId | String | False | |
showAs | String | False | |
start_dateTime | String | False | |
start_timeZone | String | False | |
subject | String | False | |
transactionId | String | False | |
type | String | False | |
webLink | String | False | |
calendarId | String | False |
Pseudo column fields are used in the WHERE clause of SELECT statements and offer a more granular control over the tuples that are returned from the data source.
Name | Type | Description |
groupId | String | |
userId | String |
Create, update, delete, and query Contacts items.
You can query ExtendedProperties for a specific resource from the following resources: Events, Calendars and Messages. In order to get the value for an extended property you need to specify:
- Entity field, wether it is Message, Event or Calendar
- EntityId, the Id of the resource
- Id, the id of the extended property.
SELECT * FROM ExtendedProperties WHERE Entity = 'Event' AND EntityId = 'AQMkAGRlMWQ5MDg0LWI5ZTQtNDk2Yi1hOTQ1LTU4YzFmMzEwZjlhMgBGAAAD-FjxR3cIwE6TEGSCVtIHcwcAQyR2Iw3coEOaUD1BLt0tnAAAAw8AAABDJHYjDdygQ5pQPUEu3S2cAAZq-GA0AAAA' AND Id = 'String {66f5a359-4659-4830-9070-00047ec6ac6e} Name Color'
You can create an extended property in a resource, by specifying Entity, EntityId, Id of the extended property and its Value.
INSERT INTO ExtendedProperties (Entity, EntityId, Id, Value) VALUES ('Calendar', 'AQMkAGRlMWQ5MDg0LWI5ZTQtNDk2Yi1hOTQ1LTU4YzFmMzEwZjlhMgBGAAAD-FjxR3cIwE6TEGSCVtIHcwcAQyR2Iw3coEOaUD1BLt0tnAAAAwcAAABDJHYjDdygQ5pQPUEu3S2cAASHbEoeAAAA', 'String {66f5a359-4659-4830-9070-00047ec6ac6e} Name Color', 'Yellow')
Name | Type | ReadOnly | Description |
Id | String | False |
The Identifier of the extended property |
Value | String | False |
The value of the extended property |
Entity | String | False |
The entity type. |
EntityId | String | False |
The entity id that the extended properties belong to. |
Groups table for Exchange data provider.
Groups require Administrator permissions. To work with them, you must create your own custom OAuth App and set the appropriate OAuthClientId and OAuthClientSecret. In this app, you must configure it to request the Group.Read.All and the Group.ReadWrite.All permissions. This can be done at https://apps.dev.microsoft.com, or in the App Registrations panel at http://portal.azure.com.
To authorize Groups permissions, an administrator must grant the Groups permissions for your organization at large. This can be done via the
administrator authorization endpoint. Simply have the administrator navigate to the following web page and grant permissions. Then
run the OAuth authorization as normal afterwards.
https://login.microsoftonline.com/common/adminconsent?client_id=[YourClientId]&redirect_uri=http://localhost:33333
Note that if your organization has multiple tenants, you may replace the /common/ in the url with the tenant id to indicate which tenant to grant permissions for.
Retrieve all groups, specify a GroupId (Id), or simply filter by a certain column:
SELECT * FROM Groups SELECT * FROM Groups WHERE Id = 'Group Id here' SELECT Id, Description, DisplayName FROM Groups WHERE Name = 'test'
The following are required to create a new Security Group:
INSERT INTO Groups (DisplayName, MailEnabled, MailNickname, SecurityEnabled) VALUES ('Test group', false, 'test', true)
Name | Type | ReadOnly | Description |
id [KEY] | String | False | |
deletedDateTime | Datetime | False | |
allowExternalSenders | Bool | False | |
assignedLicenses | String | False | |
autoSubscribeNewMembers | Bool | False | |
classification | String | False | |
createdDateTime | Datetime | False | |
description | String | False | |
displayName | String | False | |
groupTypes | String | False | |
hasMembersWithLicenseErrors | Bool | False | |
isArchived | Bool | False | |
isSubscribedByMail | Bool | False | |
licenseProcessingState_state | String | False | |
String | False | ||
mailEnabled | Bool | False | |
mailNickname | String | False | |
onPremisesLastSyncDateTime | Datetime | False | |
onPremisesProvisioningErrors | String | False | |
onPremisesSecurityIdentifier | String | False | |
onPremisesSyncEnabled | Bool | False | |
preferredDataLocation | String | False | |
proxyAddresses | String | False | |
renewedDateTime | Datetime | False | |
securityEnabled | Bool | False | |
unseenCount | Int | False | |
visibility | String | False |
MailFolders table for Exchange data provider.
Name | Type | ReadOnly | Description |
id [KEY] | String | False | |
childFolderCount | Int | False | |
displayName | String | False | |
parentFolderId | String | False | |
totalItemCount | Int | False | |
unreadItemCount | Int | False |
Pseudo column fields are used in the WHERE clause of SELECT statements and offer a more granular control over the tuples that are returned from the data source.
Name | Type | Description |
userId | String |
Messages table for Exchange data provider.
You can retrieve all from Messages, specify a Message (Id), ParentFolderId, or you can filter results by a certain column:
SELECT * FROM Messages SELECT * FROM Messages WHERE Id = 'MyMessageId' SELECT * FROM Messages WHERE ParentFolderId = 'MyParentfolderId' SELECT * FROM Messages WHERE ParentFolderId = 'Drafts'
Note: Unless specifying the AlwaysRequstTableDependencies connection property, or selecting/filtering by the reference columns ParentFolderId, the value for ParentFolderId will remain null.
After the insert a new Message will be created in the User's Drafts folder.
INSERT INTO Messages (Subject, Body_Content) VALUES ('New test Email', 'Test Email created.')
Name | Type | ReadOnly | Description |
id [KEY] | String | False | |
categories | String | False | |
changeKey | String | False | |
createdDateTime | Datetime | False | |
lastModifiedDateTime | Datetime | False | |
bccRecipients | String | False | |
body_contentType | String | False | |
body_content | String | False | |
bodyPreview | String | False | |
ccRecipients | String | False | |
conversationId | String | False | |
flag_completedDateTime_dateTime | String | False | |
flag_completedDateTime_timeZone | String | False | |
flag_flagStatus | String | False | |
from_emailAddress_name | String | False | |
from_emailAddress_address | String | False | |
hasAttachments | Bool | False | |
importance | String | False | |
inferenceClassification | String | False | |
internetMessageHeaders | String | False | |
internetMessageId | String | False | |
isDeliveryReceiptRequested | Bool | False | |
isDraft | Bool | False | |
isRead | Bool | False | |
isReadReceiptRequested | Bool | False | |
parentFolderId | String | False | |
receivedDateTime | Datetime | False | |
replyTo | String | False | |
sender_emailAddress_name | String | False | |
sender_emailAddress_address | String | False | |
sentDateTime | Datetime | False | |
subject | String | False | |
toRecipients | String | False | |
uniqueBody_contentType | String | False | |
uniqueBody_content | String | False | |
webLink | String | False |
Pseudo column fields are used in the WHERE clause of SELECT statements and offer a more granular control over the tuples that are returned from the data source.
Name | Type | Description |
userId | String |
Users table for Exchange data provider.
Query the Users table by retrieving everything from Users, specifying a Id, or filtering by a column:
SELECT * FROM Users WHERE Id = '616391f0-32d8-4127-8f25-aa55771d6617' SELECT DisplayName, Id FROM Users WHERE DisplayName LIKE 'John%'
The following are required to create a new organizational User:
INSERT INTO Users (AccountEnabled, DisplayName, MailNickname, UserPrincipalName, PasswordProfile_ForceChangePasswordNextSignIn, PasswordProfile_Password) VALUES (false, 'John Smith', 'JohnS', '[email protected]', true, '123password')
Name | Type | ReadOnly | Description |
id [KEY] | String | False | |
deletedDateTime | Datetime | False | |
aboutMe | String | False | |
accountEnabled | Bool | False | |
ageGroup | String | False | |
assignedLicenses | String | False | |
assignedPlans | String | False | |
birthday | Datetime | False | |
businessPhones | String | False | |
city | String | False | |
companyName | String | False | |
consentProvidedForMinor | String | False | |
country | String | False | |
department | String | False | |
deviceEnrollmentLimit | Int | False | |
displayName | String | False | |
employeeId | String | False | |
faxNumber | String | False | |
givenName | String | False | |
hireDate | Datetime | False | |
imAddresses | String | False | |
interests | String | False | |
isResourceAccount | Bool | False | |
jobTitle | String | False | |
legalAgeGroupClassification | String | False | |
licenseAssignmentStates | String | False | |
String | False | ||
mailboxSettings_automaticRepliesSetting_status | String | False | |
mailboxSettings_automaticRepliesSetting_externalAudience | String | False | |
mailboxSettings_automaticRepliesSetting_scheduledStartDateTime_dateTime | String | False | |
mailboxSettings_automaticRepliesSetting_scheduledStartDateTime_timeZone | String | False | |
mailboxSettings_automaticRepliesSetting_internalReplyMessage | String | False | |
mailboxSettings_automaticRepliesSetting_externalReplyMessage | String | False | |
mailboxSettings_archiveFolder | String | False | |
mailboxSettings_timeZone | String | False | |
mailboxSettings_language_locale | String | False | |
mailboxSettings_language_displayName | String | False | |
mailboxSettings_workingHours_daysOfWeek | String | False | |
mailboxSettings_workingHours_startTime | Time | False | |
mailboxSettings_workingHours_endTime | Time | False | |
mailboxSettings_workingHours_timeZone_name | String | False | |
mailNickname | String | False | |
mobilePhone | String | False | |
mySite | String | False | |
officeLocation | String | False | |
onPremisesDistinguishedName | String | False | |
onPremisesDomainName | String | False | |
onPremisesExtensionAttributes_extensionAttribute1 | String | False | |
onPremisesExtensionAttributes_extensionAttribute2 | String | False | |
onPremisesExtensionAttributes_extensionAttribute3 | String | False | |
onPremisesExtensionAttributes_extensionAttribute4 | String | False | |
onPremisesExtensionAttributes_extensionAttribute5 | String | False | |
onPremisesExtensionAttributes_extensionAttribute6 | String | False | |
onPremisesExtensionAttributes_extensionAttribute7 | String | False | |
onPremisesExtensionAttributes_extensionAttribute8 | String | False | |
onPremisesExtensionAttributes_extensionAttribute9 | String | False | |
onPremisesExtensionAttributes_extensionAttribute10 | String | False | |
onPremisesExtensionAttributes_extensionAttribute11 | String | False | |
onPremisesExtensionAttributes_extensionAttribute12 | String | False | |
onPremisesExtensionAttributes_extensionAttribute13 | String | False | |
onPremisesExtensionAttributes_extensionAttribute14 | String | False | |
onPremisesExtensionAttributes_extensionAttribute15 | String | False | |
onPremisesImmutableId | String | False | |
onPremisesLastSyncDateTime | Datetime | False | |
onPremisesProvisioningErrors | String | False | |
onPremisesSamAccountName | String | False | |
onPremisesSecurityIdentifier | String | False | |
onPremisesSyncEnabled | Bool | False | |
onPremisesUserPrincipalName | String | False | |
otherMails | String | False | |
passwordPolicies | String | False | |
passwordProfile_password | String | False | |
passwordProfile_forceChangePasswordNextSignIn | Bool | False | |
passwordProfile_forceChangePasswordNextSignInWithMfa | Bool | False | |
pastProjects | String | False | |
postalCode | String | False | |
preferredLanguage | String | False | |
preferredName | String | False | |
provisionedPlans | String | False | |
proxyAddresses | String | False | |
responsibilities | String | False | |
schools | String | False | |
showInAddressList | Bool | False | |
signInSessionsValidFromDateTime | Datetime | False | |
skills | String | False | |
state | String | False | |
streetAddress | String | False | |
surname | String | False | |
usageLocation | String | False | |
userPrincipalName | String | False | |
userType | String | False |
Views are composed of columns and pseudo columns. Views are similar to tables in the way that data is represented; however, views do not support updates. Entities that are represented as views are typically read-only entities. Often, a stored procedure is available to update the data if such functionality is applicable to the data source.
Queries can be executed against a view as if it were a normal table, and the data that comes back is similar in that regard.
Dynamic views, such as queries exposed as views, and views for looking up specific combinations of project_team work items are supported.
Name | Description |
CalendarView | Retrieve the ccurrences, exceptions, and single instances of events in a calendar view defined by a time range, from the user's default calendar, or from some other calendar of the user's. |
EventAttachments | EventAttachments View for Exchange data provider. |
EventInstances | EventInstances View for Exchange data provider. |
MessageAttachments | MessageAttachments View for Exchange data provider. |
Retrieve the ccurrences, exceptions, and single instances of events in a calendar view defined by a time range, from the user's default calendar, or from some other calendar of the user's.
Get the occurrences, exceptions, and single instances of events in a calendar view defined by a time range, from the user's default calendar, or from some other calendar of the user's. By default only the event occurrences from the user's default calendar in the range of the last 30 days will be returned. You can filter results by CalendarId, Start_DateTime, End_DateTime.
For example the following queries will be processed server side:
SELECT * FROM CalendarView WHERE Start_DateTime >= '2019-12-10 15:00' AND End_DateTime <= '2020-01-10 14:30'
SELECT * FROM CalendarView WHERE CalendarId = 'AQMkAGRlMWQ5MDg0LWI5ZTQtNDk2Yi1hOTQ1LTU4YzFmMzEwZjlhMgBGAAAD-FjxR3cIwE6TEGSCVtIHcwcAQyR2Iw3coEOaUD1BLt0tnAAAAwcAAABDJHYjDdygQ5pQPUEu3S2cAAACC_IAAAA='
Note: Unless specifying the AlwaysRequestTableDependencies connection property, or selecting/filtering by the reference column CalendarId, the value for CalendarId will remain null.
Name | Type | Description |
id [KEY] | String | |
categories | String | |
changeKey | String | |
createdDateTime | Datetime | |
lastModifiedDateTime | Datetime | |
attendees | String | |
body_contentType | String | |
body_content | String | |
bodyPreview | String | |
end_dateTime | String | |
end_timeZone | String | |
hasAttachments | Bool | |
iCalUId | String | |
importance | String | |
isAllDay | Bool | |
isCancelled | Bool | |
isOrganizer | Bool | |
isReminderOn | Bool | |
location_displayName | String | |
location_locationEmailAddress | String | |
location_address_street | String | |
location_address_city | String | |
location_address_state | String | |
location_address_countryOrRegion | String | |
location_address_postalCode | String | |
location_coordinates_altitude | Double | |
location_coordinates_latitude | Double | |
location_coordinates_longitude | Double | |
location_coordinates_accuracy | Double | |
location_coordinates_altitudeAccuracy | Double | |
location_locationUri | String | |
location_locationType | String | |
location_uniqueId | String | |
location_uniqueIdType | String | |
locations | String | |
onlineMeetingUrl | String | |
organizer_emailAddress_name | String | |
organizer_emailAddress_address | String | |
originalEndTimeZone | String | |
originalStart | Datetime | |
originalStartTimeZone | String | |
recurrence_pattern_type | String | |
recurrence_pattern_interval | Int | |
recurrence_pattern_month | Int | |
recurrence_pattern_dayOfMonth | Int | |
recurrence_pattern_daysOfWeek | String | |
recurrence_pattern_firstDayOfWeek | String | |
recurrence_pattern_index | String | |
recurrence_range_type | String | |
recurrence_range_startDate | Date | |
recurrence_range_endDate | Date | |
recurrence_range_recurrenceTimeZone | String | |
recurrence_range_numberOfOccurrences | Int | |
reminderMinutesBeforeStart | Int | |
responseRequested | Bool | |
responseStatus_response | String | |
responseStatus_time | Datetime | |
sensitivity | String | |
seriesMasterId | String | |
showAs | String | |
start_dateTime | String | |
start_timeZone | String | |
subject | String | |
type | String | |
webLink | String | |
calendarId | String |
EventAttachments View for Exchange data provider.
You can query EventAttachments by specifying the Event Id (Requried):
SELECT * FROM [EventAttachments] WHERE EventId='event id'
This query will get the Attachments of the specified Event as a list without including their content.
Name | Type | Description |
eventId | String | |
id [KEY] | String | |
contentType | String | |
isInline | Bool | |
lastModifiedDateTime | Datetime | |
name | String | |
size | Int | |
userId | String |
EventInstances View for Exchange data provider.
You can query EventInstances by specifying the Event Id, StartDatetime and EndDateTime. EventId is a required field, instead StartDatetime and EndDateTime have a default range of the last 30 days. If you query filtering only by EventId and the specific event does not exist within this time range, you will get empty results.
SELECT * FROM [EventInstances] WHERE id='event id' AND StartDateTime='2018/01/01' AND EndDateTime='2018/12/31'
SELECT * FROM [EventInstances] WHERE id='event id'
By default, if StartDateTime and EndDateTime filters are not specified, only the event instances from the user's default calendar in the range of the last 30 days will be returned. Otherwise, the query will get the instances of the Event during the period specified by StartDateTime and EndDateTime.
Name | Type | Description |
eventId | String | |
id [KEY] | String | |
categories | String | |
changeKey | String | |
createdDateTime | Datetime | |
lastModifiedDateTime | Datetime | |
attendees | String | |
body_contentType | String | |
body_content | String | |
bodyPreview | String | |
end_dateTime | String | |
end_timeZone | String | |
hasAttachments | Bool | |
iCalUId | String | |
importance | String | |
isAllDay | Bool | |
isCancelled | Bool | |
isOrganizer | Bool | |
isReminderOn | Bool | |
location_displayName | String | |
location_locationEmailAddress | String | |
location_address_street | String | |
location_address_city | String | |
location_address_state | String | |
location_address_countryOrRegion | String | |
location_address_postalCode | String | |
location_coordinates_altitude | Double | |
location_coordinates_latitude | Double | |
location_coordinates_longitude | Double | |
location_coordinates_accuracy | Double | |
location_coordinates_altitudeAccuracy | Double | |
location_locationUri | String | |
location_locationType | String | |
location_uniqueId | String | |
location_uniqueIdType | String | |
locations | String | |
onlineMeetingUrl | String | |
organizer_emailAddress_name | String | |
organizer_emailAddress_address | String | |
originalEndTimeZone | String | |
originalStart | Datetime | |
originalStartTimeZone | String | |
recurrence_pattern_type | String | |
recurrence_pattern_interval | Int | |
recurrence_pattern_month | Int | |
recurrence_pattern_dayOfMonth | Int | |
recurrence_pattern_daysOfWeek | String | |
recurrence_pattern_firstDayOfWeek | String | |
recurrence_pattern_index | String | |
recurrence_range_type | String | |
recurrence_range_startDate | Date | |
recurrence_range_endDate | Date | |
recurrence_range_recurrenceTimeZone | String | |
recurrence_range_numberOfOccurrences | Int | |
reminderMinutesBeforeStart | Int | |
responseRequested | Bool | |
responseStatus_response | String | |
responseStatus_time | Datetime | |
sensitivity | String | |
seriesMasterId | String | |
showAs | String | |
start_dateTime | String | |
start_timeZone | String | |
subject | String | |
type | String | |
webLink | String |
MessageAttachments View for Exchange data provider.
You can query MessageAttachments by specifying the Message Id (Required):
SELECT * FROM [MessageAttachments] WHERE MessageId = 'message id' SELECT * FROM [MessageAttachments] WHERE UserId='92dfdfc6-f1d4-4965-9f71-30e4da4fa7fe' AND Id = 'AQMkAGRlMWQ5MDg0LWI5ZTQtNDk2Yi1hOTQ1LTU4YzFmMzEwZjlhMgBGAAAD-FjxR3cIwE6TEGSCVtIHcwcAQyR2Iw3coEOaUD1BLt0tnAAAAw4AAABDJHYjDdygQ5pQPUEu3S2cAAhJYnE3AAAAARIAEADUFdfqaYanT5_pTPvzgMYh' AND MessageId = 'AQMkAGRlMWQ5MDg0LWI5ZTQtNDk2Yi1hOTQ1LTU4YzFmMzEwZjlhMgBGAAAD-FjxR3cIwE6TEGSCVtIHcwcAQyR2Iw3coEOaUD1BLt0tnAAAAw4AAABDJHYjDdygQ5pQPUEu3S2cAAhJYnE3AAAA'
This query will get the Attachments of the specified Message as a list without including their content.
Name | Type | Description |
messageId | String | |
id [KEY] | String | |
contentType | String | |
isInline | Bool | |
lastModifiedDateTime | Datetime | |
name | String | |
size | Int | |
userId | String |
The connection string properties are the various options that can be used to establish a connection. This section provides a complete list of the options you can configure in the connection string for this provider. Click the links for further details.
For more information on establishing a connection, see Establishing a Connection.
Property | Description |
AuthScheme | The scheme used for authentication. Accepted entries are NTLM, Basic, Digest, None, Negotiate, OAuth, AzureAD, AzureServicePrincipal and AzureMSI. |
Schema | Specify the Microsoft Exchange schema. |
Platform | The Platform associated with the Exchange server. |
Server | The address of the Exchange server to which you are connecting. |
User | The user who is authenticating to the Exchange site. |
Password | The password used to authenticate to the Exchange site. |
Property | Description |
AzureTenant | The Microsoft Online tenant being used to access data. If not specified, your default tentant will be used. |
Property | Description |
OAuthClientId | The client Id assigned when you register your application with an OAuth authorization server. |
OAuthClientSecret | The client secret assigned when you register your application with an OAuth authorization server. |
OAuthGrantType | The grant type for the OAuth flow. |
UserId | Specify this UserId in order to access Outlook resources for a specific user. Required when OAuthGrantType is set to 'CLIENT'. |
Property | Description |
OAuthJWTCert | The JWT Certificate store. |
OAuthJWTCertType | The type of key store containing the JWT Certificate. |
OAuthJWTCertPassword | The password for the OAuth JWT certificate. |
OAuthJWTCertSubject | The subject of the OAuth JWT certificate. |
OAuthJWTIssuer | The issuer of the Java Web Token. |
OAuthJWTSubject | The user subject for which the application is requesting delegated access. |
Property | Description |
KerberosKDC | The Kerberos Key Distribution Center (KDC) service used to authenticate the user. |
KerberosRealm | The Kerberos Realm used to authenticate the user. |
KerberosSPN | The service principal name (SPN) for the Kerberos Domain Controller. |
KerberosKeytabFile | The Keytab file containing your pairs of Kerberos principals and encrypted keys. |
KerberosServiceRealm | The Kerberos realm of the service. |
KerberosServiceKDC | The Kerberos KDC of the service. |
KerberosTicketCache | The full file path to an MIT Kerberos credential cache file. |
Property | Description |
SSLServerCert | The certificate to be accepted from the server when connecting using TLS/SSL. |
Property | Description |
FirewallType | The protocol used by a proxy-based firewall. |
FirewallServer | The name or IP address of a proxy-based firewall. |
FirewallPort | The TCP port for a proxy-based firewall. |
FirewallUser | The user name to use to authenticate with a proxy-based firewall. |
FirewallPassword | A password used to authenticate to a proxy-based firewall. |
Property | Description |
ProxyAutoDetect | This indicates whether to use the system proxy settings or not. This takes precedence over other proxy settings, so you'll need to set ProxyAutoDetect to FALSE in order use custom proxy settings. |
ProxyServer | The hostname or IP address of a proxy to route HTTP traffic through. |
ProxyPort | The TCP port the ProxyServer proxy is running on. |
ProxyAuthScheme | The authentication type to use to authenticate to the ProxyServer proxy. |
ProxyUser | A user name to be used to authenticate to the ProxyServer proxy. |
ProxyPassword | A password to be used to authenticate to the ProxyServer proxy. |
ProxySSLType | The SSL type to use when connecting to the ProxyServer proxy. |
ProxyExceptions | A semicolon separated list of destination hostnames or IPs that are exempt from connecting through the ProxyServer . |
Property | Description |
LogModules | Core modules to be included in the log file. |
Property | Description |
Location | A path to the directory that contains the schema files defining tables, views, and stored procedures. |
BrowsableSchemas | This property restricts the schemas reported to a subset of the available schemas. For example, BrowsableSchemas=SchemaA,SchemaB,SchemaC. |
Tables | This property restricts the tables reported to a subset of the available tables. For example, Tables=TableA,TableB,TableC. |
Views | Restricts the views reported to a subset of the available tables. For example, Views=ViewA,ViewB,ViewC. |
Property | Description |
AlwaysRequestTableDependencies | Control whether you want to always retrieve Table Dependencies (Foreign Keys). Setting this to TRUE might slow down queries and increase amount of calls made. |
BodyType | The BodyType element identifies how the body text is formatted in the response. The possible options are: Best - The response will return the richest available content of body text, HTML - The response will return an item body as HTML, Text - The response will return an item body as plain text. The default is set to Best. |
CustomHeaders | Other headers as determined by the user (optional). |
DirectoryRetrievalDepth | Depth level of folder to query Folders and Items. |
DisableServerSideFiltering | Control whether you want to disable server-side filtering. By default this property is set to False, and server-side filtering is attempted for all columns/tables. |
GroupId | Specify this GroupId in order to access the OneNote documents for this group. |
ImpersonationType | The type of identifier to use with impersonation while sending requests to the Exchange site. |
ImpersonationUser | The user to impersonate while sending requests to the Exchange site. |
IncludeContent | A boolean indicating if additional content should be retrieved. |
MaxRows | Limits the number of rows returned rows when no aggregation or group by is used in the query. This helps avoid performance issues at design time. |
Other | These hidden properties are used only in specific use cases. |
Pagesize | The maximum number of results to return per page from Microsoft Exchange. |
PseudoColumns | This property indicates whether or not to include pseudo columns as columns to the table. |
Timeout | The value in seconds until the timeout error is thrown, canceling the operation. |
UserDefinedViews | A filepath pointing to the JSON configuration file containing your custom views. |
This section provides a complete list of the Authentication properties you can configure in the connection string for this provider.
Property | Description |
AuthScheme | The scheme used for authentication. Accepted entries are NTLM, Basic, Digest, None, Negotiate, OAuth, AzureAD, AzureServicePrincipal and AzureMSI. |
Schema | Specify the Microsoft Exchange schema. |
Platform | The Platform associated with the Exchange server. |
Server | The address of the Exchange server to which you are connecting. |
User | The user who is authenticating to the Exchange site. |
Password | The password used to authenticate to the Exchange site. |
The scheme used for authentication. Accepted entries are NTLM, Basic, Digest, None, Negotiate, OAuth, AzureAD, AzureServicePrincipal and AzureMSI.
Together with Password and User, this field is used to authenticate against the server. Basic is the default option. Use the following options to select your authentication scheme:
Specify the Microsoft Exchange schema.
The schemas available are EWS and MSGraph.
The Platform associated with the Exchange server.
The Platform associated with the Exchange server.
Exchange2007* | Target the initial release version of Exchange 2007. |
Exchange2007_SP1* | Target Exchange 2007 Service Pack 1 (SP1), Exchange 2007 Service Pack 2 (SP2), and Exchange 2007 Service Pack 3 (SP3). |
Exchange2010 | Target Exchange 2010. |
Exchange2010_SP1 | Target Exchange 2010 Service Pack 1 (SP1). |
Exchange2010_SP2 | Target Exchange 2010 Service Pack 2 (SP2) and Exchange 2010 Service Pack 3 (SP3). |
Exchange2013 | Target Exchange 2013. |
Exchange2013_SP1 | Target Exchange 2013 Service Pack 1 (SP1). |
Exchange_Online | Target Exchange Online. |
* - These APIs do not support filtering using the WHERE clause. Instead, the Sync App parses the WHERE clause in memory.
The address of the Exchange server to which you are connecting.
This should be set to the Exchange Web Services URL. For Exchange Online, you should set it to https://outlook.office365.com/EWS/Exchange.asmx.
The user who is authenticating to the Exchange site.
The username used to authenticate to the Exchange site. NOTE: According to Exchange, Basic authentication (using User and Password) will be deprecated soon.
The password used to authenticate to the Exchange site.
The password used to authenticate to the Exchange site. NOTE: According to Exchange, Basic authentication (using User and Password) will be deprecated soon.
This section provides a complete list of the Azure Authentication properties you can configure in the connection string for this provider.
Property | Description |
AzureTenant | The Microsoft Online tenant being used to access data. If not specified, your default tentant will be used. |
The Microsoft Online tenant being used to access data. If not specified, your default tentant will be used.
The Microsoft Online tenant being used to access data. For instance, contoso.onmicrosoft.com. Alternatively, specify the tenant Id. This value is the directory Id in the Azure Portal > Azure Active Directory > Properties.
Typically it is not necessary to specify the Tenant. This can be automatically determined by Microsoft when using the OAuthGrantType set to CODE (default). However, it may fail in the case that the user belongs to multiple tenants. For instance, if an Admin of domain A invites a user of domain B to be a guest user. The user will now belong to both tenants. It is a good practice to specify the Tenant, although in general things should normally work without having to specify it.
The AzureTenant is required when setting OAuthGrantType to CLIENT. When using client credentials, there is no user context. The credentials are taken from the context of the app itself. While Microsoft still allows client credentials to be obtained without specifying which Tenant, it has a much lower probability of picking the specific tenant you want to work with. For this reason, we require AzureTenant to be explicitly stated for all client credentials connections to ensure you get credentials that are applicable for the domain you intend to connect to.
This section provides a complete list of the OAuth properties you can configure in the connection string for this provider.
Property | Description |
OAuthClientId | The client Id assigned when you register your application with an OAuth authorization server. |
OAuthClientSecret | The client secret assigned when you register your application with an OAuth authorization server. |
OAuthGrantType | The grant type for the OAuth flow. |
UserId | Specify this UserId in order to access Outlook resources for a specific user. Required when OAuthGrantType is set to 'CLIENT'. |
The client Id assigned when you register your application with an OAuth authorization server.
As part of registering an OAuth application, you will receive the OAuthClientId value, sometimes also called a consumer key, and a client secret, the OAuthClientSecret.
The client secret assigned when you register your application with an OAuth authorization server.
As part of registering an OAuth application, you will receive the OAuthClientId, also called a consumer key. You will also receive a client secret, also called a consumer secret. Set the client secret in the OAuthClientSecret property.
The grant type for the OAuth flow.
The following options are available: CODE,CLIENT,PASSWORD
Specify this UserId in order to access Outlook resources for a specific user. Required when OAuthGrantType is set to 'CLIENT'.
Specify this UserId in order to access Outlook resources for a specific user. Required when OAuthGrantType is set to 'CLIENT'.
This section provides a complete list of the JWT OAuth properties you can configure in the connection string for this provider.
Property | Description |
OAuthJWTCert | The JWT Certificate store. |
OAuthJWTCertType | The type of key store containing the JWT Certificate. |
OAuthJWTCertPassword | The password for the OAuth JWT certificate. |
OAuthJWTCertSubject | The subject of the OAuth JWT certificate. |
OAuthJWTIssuer | The issuer of the Java Web Token. |
OAuthJWTSubject | The user subject for which the application is requesting delegated access. |
The JWT Certificate store.
The name of the certificate store for the client certificate.
The OAuthJWTCertType field specifies the type of the certificate store specified by OAuthJWTCert. If the store is password protected, specify the password in OAuthJWTCertPassword.
OAuthJWTCert is used in conjunction with the OAuthJWTCertSubject field in order to specify client certificates. If OAuthJWTCert has a value, and OAuthJWTCertSubject is set, a search for a certificate is initiated. Please refer to the OAuthJWTCertSubject field for details.
Designations of certificate stores are platform-dependent.
The following are designations of the most common User and Machine certificate stores in Windows:
MY | A certificate store holding personal certificates with their associated private keys. |
CA | Certifying authority certificates. |
ROOT | Root certificates. |
SPC | Software publisher certificates. |
In Java, the certificate store normally is a file containing certificates and optional private keys.
When the certificate store type is PFXFile, this property must be set to the name of the file. When the type is PFXBlob, the property must be set to the binary contents of a PFX file (i.e. PKCS12 certificate store).
The type of key store containing the JWT Certificate.
This property can take one of the following values:
USER | For Windows, this specifies that the certificate store is a certificate store owned by the current user. Note: This store type is not available in Java. |
MACHINE | For Windows, this specifies that the certificate store is a machine store. Note: this store type is not available in Java. |
PFXFILE | The certificate store is the name of a PFX (PKCS12) file containing certificates. |
PFXBLOB | The certificate store is a string (base-64-encoded) representing a certificate store in PFX (PKCS12) format. |
JKSFILE | The certificate store is the name of a Java key store (JKS) file containing certificates. Note: this store type is only available in Java. |
JKSBLOB | The certificate store is a string (base-64-encoded) representing a certificate store in Java key store (JKS) format. Note: this store type is only available in Java. |
PEMKEY_FILE | The certificate store is the name of a PEM-encoded file that contains a private key and an optional certificate. |
PEMKEY_BLOB | The certificate store is a string (base64-encoded) that contains a private key and an optional certificate. |
PUBLIC_KEY_FILE | The certificate store is the name of a file that contains a PEM- or DER-encoded public key certificate. |
PUBLIC_KEY_BLOB | The certificate store is a string (base-64-encoded) that contains a PEM- or DER-encoded public key certificate. |
SSHPUBLIC_KEY_FILE | The certificate store is the name of a file that contains an SSH-style public key. |
SSHPUBLIC_KEY_BLOB | The certificate store is a string (base-64-encoded) that contains an SSH-style public key. |
P7BFILE | The certificate store is the name of a PKCS7 file containing certificates. |
PPKFILE | The certificate store is the name of a file that contains a PPK (PuTTY Private Key). |
XMLFILE | The certificate store is the name of a file that contains a certificate in XML format. |
XMLBLOB | The certificate store is a string that contains a certificate in XML format. |
The password for the OAuth JWT certificate.
If the certificate store is of a type that requires a password, this property is used to specify that password in order to open the certificate store.
The subject of the OAuth JWT certificate.
When loading a certificate the subject is used to locate the certificate in the store.
If an exact match is not found, the store is searched for subjects containing the value of the property.
If a match is still not found, the property is set to an empty string, and no certificate is selected.
The special value "*" picks the first certificate in the certificate store.
The certificate subject is a comma separated list of distinguished name fields and values. For instance "CN=www.server.com, OU=test, C=US, [email protected]". Common fields and their meanings are displayed below.
Field | Meaning |
CN | Common Name. This is commonly a host name like www.server.com. |
O | Organization |
OU | Organizational Unit |
L | Locality |
S | State |
C | Country |
E | Email Address |
If a field value contains a comma it must be quoted.
The issuer of the Java Web Token.
The issuer of the Java Web Token. This is typically either the Client Id or Email Address of the OAuth Application.
The user subject for which the application is requesting delegated access.
The user subject for which the application is requesting delegated access. Typically, the user account name or email address.
This section provides a complete list of the Kerberos properties you can configure in the connection string for this provider.
Property | Description |
KerberosKDC | The Kerberos Key Distribution Center (KDC) service used to authenticate the user. |
KerberosRealm | The Kerberos Realm used to authenticate the user. |
KerberosSPN | The service principal name (SPN) for the Kerberos Domain Controller. |
KerberosKeytabFile | The Keytab file containing your pairs of Kerberos principals and encrypted keys. |
KerberosServiceRealm | The Kerberos realm of the service. |
KerberosServiceKDC | The Kerberos KDC of the service. |
KerberosTicketCache | The full file path to an MIT Kerberos credential cache file. |
The Kerberos Key Distribution Center (KDC) service used to authenticate the user.
The Kerberos properties are used when using SPNEGO or Windows Authentication. The Sync App will request session tickets and temporary session keys from the Kerberos KDC service. The Kerberos KDC service is conventionally colocated with the domain controller.
If Kerberos KDC is not specified, the Sync App will attempt to detect these properties automatically from the following locations:
The Kerberos Realm used to authenticate the user.
The Kerberos properties are used when using SPNEGO or Windows Authentication. The Kerberos Realm is used to authenticate the user with the Kerberos Key Distribution Service (KDC). The Kerberos Realm can be configured by an administrator to be any string, but conventionally it is based on the domain name.
If Kerberos Realm is not specified, the Sync App will attempt to detect these properties automatically from the following locations:
The service principal name (SPN) for the Kerberos Domain Controller.
If the SPN on the Kerberos Domain Controller is not the same as the URL that you are authenticating to, use this property to set the SPN.
The Keytab file containing your pairs of Kerberos principals and encrypted keys.
The Keytab file containing your pairs of Kerberos principals and encrypted keys.
The Kerberos realm of the service.
The KerberosServiceRealm is the specify the service Kerberos realm when using cross-realm Kerberos authentication.
In most cases, a single realm and KDC machine are used to perform the Kerberos authentication and this property is not required.
This property is available for complex setups where a different realm and KDC machine are used to obtain an authentication ticket (AS request) and a service ticket (TGS request).
The Kerberos KDC of the service.
The KerberosServiceKDC is used to specify the service Kerberos KDC when using cross-realm Kerberos authentication.
In most cases, a single realm and KDC machine are used to perform the Kerberos authentication and this property is not required.
This property is available for complex setups where a different realm and KDC machine are used to obtain an authentication ticket (AS request) and a service ticket (TGS request).
The full file path to an MIT Kerberos credential cache file.
This property can be set if you wish to use a credential cache file that was created using the MIT Kerberos Ticket Manager or kinit command.
This section provides a complete list of the SSL properties you can configure in the connection string for this provider.
Property | Description |
SSLServerCert | The certificate to be accepted from the server when connecting using TLS/SSL. |
The certificate to be accepted from the server when connecting using TLS/SSL.
If using a TLS/SSL connection, this property can be used to specify the TLS/SSL certificate to be accepted from the server. Any other certificate that is not trusted by the machine is rejected.
This property can take the following forms:
Description | Example |
A full PEM Certificate (example shortened for brevity) | -----BEGIN CERTIFICATE----- MIIChTCCAe4CAQAwDQYJKoZIhv......Qw== -----END CERTIFICATE----- |
A path to a local file containing the certificate | C:\cert.cer |
The public key (example shortened for brevity) | -----BEGIN RSA PUBLIC KEY----- MIGfMA0GCSq......AQAB -----END RSA PUBLIC KEY----- |
The MD5 Thumbprint (hex values can also be either space or colon separated) | ecadbdda5a1529c58a1e9e09828d70e4 |
The SHA1 Thumbprint (hex values can also be either space or colon separated) | 34a929226ae0819f2ec14b4a3d904f801cbb150d |
If not specified, any certificate trusted by the machine is accepted.
Use '*' to signify to accept all certificates. Note that this is not recommended due to security concerns.
This section provides a complete list of the Firewall properties you can configure in the connection string for this provider.
Property | Description |
FirewallType | The protocol used by a proxy-based firewall. |
FirewallServer | The name or IP address of a proxy-based firewall. |
FirewallPort | The TCP port for a proxy-based firewall. |
FirewallUser | The user name to use to authenticate with a proxy-based firewall. |
FirewallPassword | A password used to authenticate to a proxy-based firewall. |
The protocol used by a proxy-based firewall.
This property specifies the protocol that the Sync App will use to tunnel traffic through the FirewallServer proxy. Note that by default, the Sync App connects to the system proxy; to disable this behavior and connect to one of the following proxy types, set ProxyAutoDetect to false.
Type | Default Port | Description |
TUNNEL | 80 | When this is set, the Sync App opens a connection to Microsoft Exchange and traffic flows back and forth through the proxy. |
SOCKS4 | 1080 | When this is set, the Sync App sends data through the SOCKS 4 proxy specified by FirewallServer and FirewallPort and passes the FirewallUser value to the proxy, which determines if the connection request should be granted. |
SOCKS5 | 1080 | When this is set, the Sync App sends data through the SOCKS 5 proxy specified by FirewallServer and FirewallPort. If your proxy requires authentication, set FirewallUser and FirewallPassword to credentials the proxy recognizes. |
To connect to HTTP proxies, use ProxyServer and ProxyPort. To authenticate to HTTP proxies, use ProxyAuthScheme, ProxyUser, and ProxyPassword.
The name or IP address of a proxy-based firewall.
This property specifies the IP address, DNS name, or host name of a proxy allowing traversal of a firewall. The protocol is specified by FirewallType: Use FirewallServer with this property to connect through SOCKS or do tunneling. Use ProxyServer to connect to an HTTP proxy.
Note that the Sync App uses the system proxy by default. To use a different proxy, set ProxyAutoDetect to false.
The TCP port for a proxy-based firewall.
This specifies the TCP port for a proxy allowing traversal of a firewall. Use FirewallServer to specify the name or IP address. Specify the protocol with FirewallType.
The user name to use to authenticate with a proxy-based firewall.
The FirewallUser and FirewallPassword properties are used to authenticate against the proxy specified in FirewallServer and FirewallPort, following the authentication method specified in FirewallType.
A password used to authenticate to a proxy-based firewall.
This property is passed to the proxy specified by FirewallServer and FirewallPort, following the authentication method specified by FirewallType.
This section provides a complete list of the Proxy properties you can configure in the connection string for this provider.
Property | Description |
ProxyAutoDetect | This indicates whether to use the system proxy settings or not. This takes precedence over other proxy settings, so you'll need to set ProxyAutoDetect to FALSE in order use custom proxy settings. |
ProxyServer | The hostname or IP address of a proxy to route HTTP traffic through. |
ProxyPort | The TCP port the ProxyServer proxy is running on. |
ProxyAuthScheme | The authentication type to use to authenticate to the ProxyServer proxy. |
ProxyUser | A user name to be used to authenticate to the ProxyServer proxy. |
ProxyPassword | A password to be used to authenticate to the ProxyServer proxy. |
ProxySSLType | The SSL type to use when connecting to the ProxyServer proxy. |
ProxyExceptions | A semicolon separated list of destination hostnames or IPs that are exempt from connecting through the ProxyServer . |
This indicates whether to use the system proxy settings or not. This takes precedence over other proxy settings, so you'll need to set ProxyAutoDetect to FALSE in order use custom proxy settings.
This takes precedence over other proxy settings, so you'll need to set ProxyAutoDetect to FALSE in order use custom proxy settings.
To connect to an HTTP proxy, see ProxyServer. For other proxies, such as SOCKS or tunneling, see FirewallType.
The hostname or IP address of a proxy to route HTTP traffic through.
The hostname or IP address of a proxy to route HTTP traffic through. The Sync App can use the HTTP, Windows (NTLM), or Kerberos authentication types to authenticate to an HTTP proxy.
If you need to connect through a SOCKS proxy or tunnel the connection, see FirewallType.
By default, the Sync App uses the system proxy. If you need to use another proxy, set ProxyAutoDetect to false.
The TCP port the ProxyServer proxy is running on.
The port the HTTP proxy is running on that you want to redirect HTTP traffic through. Specify the HTTP proxy in ProxyServer. For other proxy types, see FirewallType.
The authentication type to use to authenticate to the ProxyServer proxy.
This value specifies the authentication type to use to authenticate to the HTTP proxy specified by ProxyServer and ProxyPort.
Note that the Sync App will use the system proxy settings by default, without further configuration needed; if you want to connect to another proxy, you will need to set ProxyAutoDetect to false, in addition to ProxyServer and ProxyPort. To authenticate, set ProxyAuthScheme and set ProxyUser and ProxyPassword, if needed.
The authentication type can be one of the following:
If you need to use another authentication type, such as SOCKS 5 authentication, see FirewallType.
A user name to be used to authenticate to the ProxyServer proxy.
The ProxyUser and ProxyPassword options are used to connect and authenticate against the HTTP proxy specified in ProxyServer.
You can select one of the available authentication types in ProxyAuthScheme. If you are using HTTP authentication, set this to the user name of a user recognized by the HTTP proxy. If you are using Windows or Kerberos authentication, set this property to a user name in one of the following formats:
user@domain domain\user
A password to be used to authenticate to the ProxyServer proxy.
This property is used to authenticate to an HTTP proxy server that supports NTLM (Windows), Kerberos, or HTTP authentication. To specify the HTTP proxy, you can set ProxyServer and ProxyPort. To specify the authentication type, set ProxyAuthScheme.
If you are using HTTP authentication, additionally set ProxyUser and ProxyPassword to HTTP proxy.
If you are using NTLM authentication, set ProxyUser and ProxyPassword to your Windows password. You may also need these to complete Kerberos authentication.
For SOCKS 5 authentication or tunneling, see FirewallType.
By default, the Sync App uses the system proxy. If you want to connect to another proxy, set ProxyAutoDetect to false.
The SSL type to use when connecting to the ProxyServer proxy.
This property determines when to use SSL for the connection to an HTTP proxy specified by ProxyServer. This value can be AUTO, ALWAYS, NEVER, or TUNNEL. The applicable values are the following:
AUTO | Default setting. If the URL is an HTTPS URL, the Sync App will use the TUNNEL option. If the URL is an HTTP URL, the component will use the NEVER option. |
ALWAYS | The connection is always SSL enabled. |
NEVER | The connection is not SSL enabled. |
TUNNEL | The connection is through a tunneling proxy. The proxy server opens a connection to the remote host and traffic flows back and forth through the proxy. |
A semicolon separated list of destination hostnames or IPs that are exempt from connecting through the ProxyServer .
The ProxyServer is used for all addresses, except for addresses defined in this property. Use semicolons to separate entries.
Note that the Sync App uses the system proxy settings by default, without further configuration needed; if you want to explicitly configure proxy exceptions for this connection, you need to set ProxyAutoDetect = false, and configure ProxyServer and ProxyPort. To authenticate, set ProxyAuthScheme and set ProxyUser and ProxyPassword, if needed.
This section provides a complete list of the Logging properties you can configure in the connection string for this provider.
Property | Description |
LogModules | Core modules to be included in the log file. |
Core modules to be included in the log file.
Only the modules specified (separated by ';') will be included in the log file. By default all modules are included.
See the Logging page for an overview.
This section provides a complete list of the Schema properties you can configure in the connection string for this provider.
Property | Description |
Location | A path to the directory that contains the schema files defining tables, views, and stored procedures. |
BrowsableSchemas | This property restricts the schemas reported to a subset of the available schemas. For example, BrowsableSchemas=SchemaA,SchemaB,SchemaC. |
Tables | This property restricts the tables reported to a subset of the available tables. For example, Tables=TableA,TableB,TableC. |
Views | Restricts the views reported to a subset of the available tables. For example, Views=ViewA,ViewB,ViewC. |
A path to the directory that contains the schema files defining tables, views, and stored procedures.
The path to a directory which contains the schema files for the Sync App (.rsd files for tables and views, .rsb files for stored procedures). The folder location can be a relative path from the location of the executable. The Location property is only needed if you want to customize definitions (for example, change a column name, ignore a column, and so on) or extend the data model with new tables, views, or stored procedures.
Note: Given that this Sync App supports multiple schemas, the structure for Microsoft Exchange custom schema files is as follows:
If left unspecified, the default location is "%APPDATA%\\CData\\Exchange Data Provider\\Schema" with %APPDATA% being set to the user's configuration directory:
This property restricts the schemas reported to a subset of the available schemas. For example, BrowsableSchemas=SchemaA,SchemaB,SchemaC.
Listing the schemas from databases can be expensive. Providing a list of schemas in the connection string improves the performance.
This property restricts the tables reported to a subset of the available tables. For example, Tables=TableA,TableB,TableC.
Listing the tables from some databases can be expensive. Providing a list of tables in the connection string improves the performance of the Sync App.
This property can also be used as an alternative to automatically listing views if you already know which ones you want to work with and there would otherwise be too many to work with.
Specify the tables you want in a comma-separated list. Each table should be a valid SQL identifier with any special characters escaped using square brackets, double-quotes or backticks. For example, Tables=TableA,[TableB/WithSlash],WithCatalog.WithSchema.`TableC With Space`.
Note that when connecting to a data source with multiple schemas or catalogs, you will need to provide the fully qualified name of the table in this property, as in the last example here, to avoid ambiguity between tables that exist in multiple catalogs or schemas.
Restricts the views reported to a subset of the available tables. For example, Views=ViewA,ViewB,ViewC.
Listing the views from some databases can be expensive. Providing a list of views in the connection string improves the performance of the Sync App.
This property can also be used as an alternative to automatically listing views if you already know which ones you want to work with and there would otherwise be too many to work with.
Specify the views you want in a comma-separated list. Each view should be a valid SQL identifier with any special characters escaped using square brackets, double-quotes or backticks. For example, Views=ViewA,[ViewB/WithSlash],WithCatalog.WithSchema.`ViewC With Space`.
Note that when connecting to a data source with multiple schemas or catalogs, you will need to provide the fully qualified name of the table in this property, as in the last example here, to avoid ambiguity between tables that exist in multiple catalogs or schemas.
This section provides a complete list of the Miscellaneous properties you can configure in the connection string for this provider.
Property | Description |
AlwaysRequestTableDependencies | Control whether you want to always retrieve Table Dependencies (Foreign Keys). Setting this to TRUE might slow down queries and increase amount of calls made. |
BodyType | The BodyType element identifies how the body text is formatted in the response. The possible options are: Best - The response will return the richest available content of body text, HTML - The response will return an item body as HTML, Text - The response will return an item body as plain text. The default is set to Best. |
CustomHeaders | Other headers as determined by the user (optional). |
DirectoryRetrievalDepth | Depth level of folder to query Folders and Items. |
DisableServerSideFiltering | Control whether you want to disable server-side filtering. By default this property is set to False, and server-side filtering is attempted for all columns/tables. |
GroupId | Specify this GroupId in order to access the OneNote documents for this group. |
ImpersonationType | The type of identifier to use with impersonation while sending requests to the Exchange site. |
ImpersonationUser | The user to impersonate while sending requests to the Exchange site. |
IncludeContent | A boolean indicating if additional content should be retrieved. |
MaxRows | Limits the number of rows returned rows when no aggregation or group by is used in the query. This helps avoid performance issues at design time. |
Other | These hidden properties are used only in specific use cases. |
Pagesize | The maximum number of results to return per page from Microsoft Exchange. |
PseudoColumns | This property indicates whether or not to include pseudo columns as columns to the table. |
Timeout | The value in seconds until the timeout error is thrown, canceling the operation. |
UserDefinedViews | A filepath pointing to the JSON configuration file containing your custom views. |
Control whether you want to always retrieve Table Dependencies (Foreign Keys). Setting this to TRUE might slow down queries and increase amount of calls made.
Control whether you want to always retrieve Table Dependencies (Foreign Keys). Setting this to TRUE might slow down queries and increase amount of calls made.
The BodyType element identifies how the body text is formatted in the response. The possible options are: Best - The response will return the richest available content of body text, HTML - The response will return an item body as HTML, Text - The response will return an item body as plain text. The default is set to Best.
The BodyType element identifies how the body text is formatted in the response. The possible options are: Best - The response will return the richest available content of body text, HTML - The response will return an item body as HTML, Text - The response will return an item body as plain text. The default is set to Best.
Other headers as determined by the user (optional).
This property can be set to a string of headers to be appended to the HTTP request headers created from other properties, like ContentType, From, and so on.
The headers must be of the format "header: value" as described in the HTTP specifications. Header lines should be separated by the carriage return and line feed (CRLF) characters.
Use this property with caution. If this property contains invalid headers, HTTP requests may fail.
This property is useful for fine-tuning the functionality of the Sync App to integrate with specialized or nonstandard APIs.
Depth level of folder to query Folders and Items.
This property must be set in the connection string or the driver will use a default of Depth=1.
Control whether you want to disable server-side filtering. By default this property is set to False, and server-side filtering is attempted for all columns/tables.
To be used in cases when complex queries are attempted and server-side filters are incapable or insufficient for producing the desired output.
Specify this GroupId in order to access the OneNote documents for this group.
Specify this GroupId in order to access the OneNote documents for this group.
The type of identifier to use with impersonation while sending requests to the Exchange site.
The type of identifier to use with impersonation while sending requests to the Exchange site. The pseudo-column of the same name can be used in the SQL query in order to more dynamically impersonate users.
Possible values for ImpersonationType are:
PrincipalName | Represents the user principal name (UPN) of the account to use for impersonation. This should be the UPN for the domain where the user account exists. |
SID | Represents the security descriptor definition language (SDDL) form of the security identifier (SID) for the account to use for impersonation. |
PrimarySmtpAddress | Represents the primary Simple Mail Transfer Protocol (SMTP) address of the account to use for Exchange impersonation. If the primary SMTP address is supplied, it will cost an extra Active Directory directory service lookup in order to obtain the SID of the user. We recommend that you use the SID or UPN if they are available. |
SmtpAddress | Represents the Simple Mail Transfer Protocol (SMTP) address of the account to use for Exchange Impersonation. If the SMTP address is supplied, it will cost an extra Active Directory lookup in order to obtain the SID of the user. We recommend that you use the SID or UPN if they are available. |
The user to impersonate while sending requests to the Exchange site.
The user to impersonate while sending requests to the Exchange site. The pseudo column of the same name can be used in the SQL query in order to more dynamically impersonate users.
A boolean indicating if additional content should be retrieved.
A boolean indicating if additional content should be retrieved, such as the Body field of an Inbox email. Retrieving all content for a large number of items can be expensive. This property cannot be used with the Folders table, or the Calendar child views.
Limits the number of rows returned rows when no aggregation or group by is used in the query. This helps avoid performance issues at design time.
Limits the number of rows returned rows when no aggregation or group by is used in the query. This helps avoid performance issues at design time.
These hidden properties are used only in specific use cases.
The properties listed below are available for specific use cases. Normal driver use cases and functionality should not require these properties.
Specify multiple properties in a semicolon-separated list.
DefaultColumnSize | Sets the default length of string fields when the data source does not provide column length in the metadata. The default value is 2000. |
ConvertDateTimeToGMT | Determines whether to convert date-time values to GMT, instead of the local time of the machine. |
RecordToFile=filename | Records the underlying socket data transfer to the specified file. |
The maximum number of results to return per page from Microsoft Exchange.
The Pagesize property affects the maximum number of results to return per page from Microsoft Exchange. Setting a higher value may result in better performance at the cost of additional memory allocated per page consumed.
This property indicates whether or not to include pseudo columns as columns to the table.
This setting is particularly helpful in Entity Framework, which does not allow you to set a value for a pseudo column unless it is a table column. The value of this connection setting is of the format "Table1=Column1, Table1=Column2, Table2=Column3". You can use the "*" character to include all tables and all columns; for example, "*=*".
The value in seconds until the timeout error is thrown, canceling the operation.
If Timeout = 0, operations do not time out. The operations run until they complete successfully or until they encounter an error condition.
If Timeout expires and the operation is not yet complete, the Sync App throws an exception.
A filepath pointing to the JSON configuration file containing your custom views.
User Defined Views are defined in a JSON-formatted configuration file called UserDefinedViews.json. The Sync App automatically detects the views specified in this file.
You can also have multiple view definitions and control them using the UserDefinedViews connection property. When you use this property, only the specified views are seen by the Sync App.
This User Defined View configuration file is formatted as follows:
For example:
{ "MyView": { "query": "SELECT * FROM Contacts WHERE MyColumn = 'value'" }, "MyView2": { "query": "SELECT * FROM MyTable WHERE Id IN (1,2,3)" } }Use the UserDefinedViews connection property to specify the location of your JSON configuration file. For example:
"UserDefinedViews", "C:\\Users\\yourusername\\Desktop\\tmp\\UserDefinedViews.json"