This project is read-only.

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).aspx
WBXML 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 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">
  <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.

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

Comments

No comments yet.