public interface DsRequestEquivalence
automatic cache synchronization and  offline caching and synchronization).
  Aside from basic properties that would clearly make two DSRequests non-equivalent
 (dataSource, operationType and data, as well as sortBy, startRow, endRow and textMatchStyle for
 a "fetch"), DSRequest.operationId is
 the only property that will cause two DSRequests to be considered distinct (non-equivalent)
 requests.  
Bearing this in mind, the best practice is:
DSRequest.data.  Do not "smuggle" data that will
 ultimately be used as criteria or values in other dsRequest properties, such as  HTTP parameters. DSRequest.operationId as the sole piece of
 information in the request that modifies how the request as a whole is executed.  If two or
 more pieces of information are required, combine or encode them into a single operationId
 String.  If this becomes awkward because there are many operation variants, consider including
 additional fields in DSRequest.data instead.
  DataSource.cloneDSRequest() can be used to create an equivalent DSRequest.