Service: zimbraMail

Command: CreateWaitSet
Namespace: urn:zimbraMail
Description: Create a waitset to listen for changes on one or more accounts
Called once to initialize a WaitSet and to set its "default interest types"

WaitSet: scalable mechanism for listening for changes to one or more accounts

Properties:
Authorization token required true
Admin Authorization token required false

CreateWaitSetRequest

    <CreateWaitSetRequest defTypes="{default-interests}" [allAccounts="{all-accounts} (0|1)"]> ## CreateWaitSetRequest
        <add>
            (<a [name="{account-name}"] [id="{account-id}"] [token="{last-known-sync-token}"] [types="{waitset-types}"]
                    [folderInterests="{waitset-folder-interests}"] /> ## WaitSetAddSpec)*
        </add>
    </CreateWaitSetRequest>

elements and attributes you can define within a <CreateWaitSetRequest> element:

XPath Required / Optional Description
@defTypes Required (only 1) Type: String
Default interest types: comma-separated list. Currently:
f folders
m messages
c contacts
a appointments
t tasks
d documents
all all types (equiv to "f,m,c,a,t,d")

This is used if types isn't specified for an account

@allAccounts Optional (0 or 1) Type: 0|1
If {all-accounts} is set, then all mailboxes on the system will be listened to, including any mailboxes which are created on the system while the WaitSet is in existence. Additionally:
  • <add>, <remove> and <update> tags are IGNORED
  • The requesting authtoken must be an admin token

AllAccounts WaitSets are *semi-persistent*, that is, even if the server restarts, it is OK to call <WaitSetRequest> passing in your previous sequence number. The server will attempt to resynchronize the waitset using the sequence number you provide (the server's ability to do this is limited by the RedoLogs that are available)

/add Required (only 1)
/add/a Optional (0 or more)
/add/a@name Optional (0 or 1) Type: String
Name of account
/add/a@id Optional (0 or 1) Type: String
ID of account. Ignored if name is supplied
/add/a@token Optional (0 or 1) Type: String
Last known sync token
/add/a@types Optional (0 or 1) Type: String
interest types: comma-separated list. Currently:
f folders
m messages
c contacts
a appointments
t tasks
d documents
all all types (equiv to "f,m,c,a,t,d")

If not specified, the value of defTypes in the request is used

/add/a@folderInterests Optional (0 or 1) Type: String
Comma separated list of IDs for folders.

CreateWaitSetResponse

    <CreateWaitSetResponse waitSet="{waitset-id}" defTypes="{default-interests}" seq="{sequence} (int)"> ## CreateWaitSetResponse
        (<error id="..." type="..." /> ## IdAndType)*
    </CreateWaitSetResponse>

elements and attributes you can define within a <CreateWaitSetResponse> element:

XPath Required / Optional Description
@waitSet Required (only 1) Type: String
WaitSet ID
@defTypes Required (only 1) Type: String
Default interest types: comma-separated list. Currently:
f folders
m messages
c contacts
a appointments
t tasks
d documents
all all types (equiv to "f,m,c,a,t,d")

This will be used if types isn't specified for an account

@seq Required (only 1) Type: int
Sequence
/error Optional (0 or more) Error information
/error@id Required (only 1) Type: String
ID
/error@type Required (only 1) Type: String
Type