This project is read-only.


The "Tasks"-list are the personal tasks stored in the mailbox of the user.

MSDN Reference Links:
Synchronizing Tasks Between Client and Server:
WBXML Code Page 23 - Tasks:

Inputs / Querystring parameters:

  • serverAddress
    • The address of the Exchange Server to connect to.
    • Sample: ""
  • credentials
    • The base64-encoded combination of username & password. Can be formatted either as "domain\username:password" or "email:password".
    • Sample I: "" =>"Sm9obkBDb250b3NvLmNvbTpwYXNzd29yZA=="
    • Sample II: "Contoso\John:password" => "Q29udG9zb1xKb2huOnBhc3N3b3Jk"
  • DeviceID
    • A unique identifier for the device. Keep this parameter consistent - Exchange keeps a list of device ids and will get confused if a device changes properties randomly.
    • Sample: IMEI12345678
  • DeviceType
    • Identifies the type of device, and does not have to be unique.
    • Sample: "API Device"

Algorithm / XML documents

Synchronizing all tasks is a three-step process:
  • Do a FolderSync to retrieve the Server Ids for all folders. Use this to identify the folder for "Default Tasks".
  • Do a FolderSync with a SyncKey of 0 to acquire a new SyncKey.
  • Do a FolderSync with the new SyncKey and the Folder Id for the "Default Tasks".

The "Type" for "Default Tasks" is "10". (Can be found in the EASProtocol.Enums.FolderSyncTypes.DefaultTasks.)
"User Created Tasks"-folder has not been implemented yet.

The XML documents used are the following

Discover Folder Ids:
<?xml version="1.0" encoding="utf-8"?>
<FolderSync xmlns="FolderHierarchy">

Get SyncKey:
<?xml version="1.0" encoding="utf-8"?>
<Sync xmlns="AirSync">

Get Tasks
<?xml version="1.0" encoding="utf-8"?>
<Sync xmlns="AirSync">

The API will return something similar to this (in JSON format):
    "Categories": "sample string 1",
    "Category": "sample string 2",
    "Complete": "sample string 3",
    "DateCompleted": "sample string 4",
    "DueDate": "sample string 5",
    "UTCDueDate": "sample string 6",
    "Importance": "sample string 7",
    "Recurrence": "sample string 8",
    "Type": "sample string 9",
    "Start": "sample string 10",
    "Until": "sample string 11",
    "Occurrences": "sample string 12",
    "Interval": "sample string 13",
    "DayOfMonth": "sample string 14",
    "DayOfWeek": "sample string 15",
    "WeekOfMonth": "sample string 16",
    "MonthOfYear": "sample string 17",
    "Regenerate": "sample string 18",
    "DeadOccur": "sample string 19",
    "ReminderSet": "sample string 20",
    "ReminderTime": "sample string 21",
    "Sensitivity": "sample string 22",
    "StartDate": "sample string 23",
    "UTCStartDate": "sample string 24",
    "Subject": "sample string 25",
    "OrdinalDate": "sample string 26",
    "SubOrdinalDate": "sample string 27",
    "CalendarType": "sample string 28",
    "IsLeapMonth": "sample string 29",
    "FirstDayOfWeek": "sample string 30"

Currently only the list of tasks are pulled down, which will truncate the items (not expose all properties).
Getting individual tasks is on the to-do list.

Last edited Aug 18, 2013 at 11:07 AM by ahell, version 1


No comments yet.