Progress API

Methods

Overview

The Progress API is a generic key-value store intended to store user data across a variety of game systems. Keys are unique strings and values are arbitrary JSON objects; the server enforces no further schema upon keys or values. Thus, the burden of making sense of the data stored here is entirely upon the client systems.

The only additional functionality provided is that all key-values are time-stamped (all time values are provided by the client). The server provides "update only if newer" semantics, allowing the client to implement conflict resolution in the event that multiple clients made updates the same value over time.

Warning: the fact that time values come from the clients means that this system is not fool-proof, and subject to errors if a client's clock is incorrect or updates happen in rapid succession. It is believed that these potential flaws are acceptable given the complexity required to mitigate them.

Update Only If Newer

Generally, saving a value to the server should be done as follows:

Figure 1: Progress Update Workflow