Tasks
The "Tasks"-list are the personal tasks stored in the mailbox of the user.
MSDN Reference Links:Synchronizing Tasks Between Client and Server:
http://msdn.microsoft.com/en-us/library/ee625293(v=exchg.80).aspxWBXML Code Page 23 - Tasks:
http://msdn.microsoft.com/en-us/library/ee158068(v=exchg.80).aspx
Inputs / Querystring parameters:
- serverAddress
- The address of the Exchange Server to connect to.
- Sample: "https://mail.contoso.com/Microsoft-Server-ActiveSync/"
- credentials
- The base64-encoded combination of username & password. Can be formatted either as "domain\username:password" or "email:password".
- Sample I: "John@Contoso.com:password" =>"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 EAS
Protocol.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">
<SyncKey>0</SyncKey>
</FolderSync>
Get SyncKey:
<?xml version="1.0" encoding="utf-8"?>
<Sync xmlns="AirSync">
<Collections>
<Collection>
<SyncKey>0</SyncKey>
<CollectionId>FolderId</CollectionId>
</Collection>
</Collections>
</Sync>
Get Tasks
<?xml version="1.0" encoding="utf-8"?>
<Sync xmlns="AirSync">
<Collections>
<Collection>
<SyncKey>SyncKey</SyncKey>
<CollectionId>FolderId</CollectionId>
</Collection>
</Collections>
</Sync>
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.