Among other things, techniques and systems are disclosed for syncing data
between a client device and a server. Synchronizing data includes
initiating a sync session by negotiating a sync mode between a client
device and a server for each of one or more dataclasses. A status code is
generated based on a result of the negotiating. Based on the generated
status code, the client device and the server exchanges one or more data
items to be updated for the one or more dataclasses using the negotiated
sync mode for each dataclass. The exchanged one or more data items are
updated at the client device or the server The updated one or more data
items are committed at the client or the server.