3.1.1 Abstract Data Model
This section describes a conceptual model of possible data organization that an implementation maintains to participate in this protocol. The described organization is provided to facilitate the explanation of how the protocol behaves. This document does not mandate that implementations adhere to this model as long as their external behavior is consistent with that specified in this document.
This protocol enables client applications either to request complete synchronization information from the server or to request incremental synchronization from the last synchronization information request. If the optional SyncState element of the SyncFolderHierarchyType complex type (section 18.104.22.168.3.6) is included in a SyncFolderHierarchy operation (section 22.214.171.124) request, or if the SyncState element of the SyncFolderItemsType complex type (section 126.96.36.199.3.8) is included in a SyncFolderItems operation (section 188.8.131.52), the server MUST return incremental synchronization information from the last synchronization request.
The contents of the SyncState elements are opaque to the client application; the client uses either the SyncState element of the SyncFolderHierarchyResponseMessageType complex type (section 184.108.40.206.3.4) that was returned by the previous SyncFolderHierarchy operation request, or the SyncState element of the SyncFolderItemsResponseMessageType complex type (section 220.127.116.11.3.6).
Client applications that use incremental synchronization for folder hierarchy synchronization MUST store the contents of the SyncState element of the SyncFolderHierarchyResponseMessageType complex type for subsequent requests.
Client applications that use incremental synchronization for item synchronization MUST store the contents of the SyncState element of the SyncFolderItemsResponseMessageType complex type for subsequent requests.