sidetree icon indicating copy to clipboard operation
sidetree copied to clipboard

Design and implement REST API and CAS file versioning scheme

Open thehenrytsai opened this issue 4 years ago • 1 comments

We have not had to worry about REST API and CAS file schema changes because we don't have any downstream clients actually using the API. But we need to have a clear process going forward.

Every time a softfork is introduced, backward compatibility WILL BE BROKEN for one or more of the following four components:

  1. Observer.
  2. Resolver.
  3. Batch writer.
  4. REST API.

This means a mandatory software upgrade is required by the affected component.

This issue deals specifically with backward compatibility breaks to the existing REST API. In such event, it is foreseen that backward compatibility for one or more other components will also almost always break.

The proposed design is to introduce a version property in the suffix/signed data of every operation request, such that Observer, Resolver, and Batch Writer can detect request version and handle them accordingly. The absence of the version property denotes v1.0.0

This version property is defined by the implementation and may not reflect the version number of the specification the implementation is based on.

It is possible that the different version of parsers of different versions of the operation requests are further decoupled from the implementation of the general "versioning" feature.

thehenrytsai avatar May 21 '20 01:05 thehenrytsai

Captured the high level design principals for this feature, but no additional action required at this point.

thehenrytsai avatar Jul 21 '20 23:07 thehenrytsai