...
api version | qumlVersion | schemaVersion | version | compatibilityLevel |
---|---|---|---|---|
v1 | v1 but not stamped in the data as of now. | 1.0 | 1 | 5 |
v2 | 1.0 | 2.02 | 6 |
version or schemaVersion metadata will be set as 2 by default from micro-service for v2 api’s.
Current
compatibilityLevel
is set to 5 for the data created using v1 api’s. For v2 api’s, it will be set to 6 so that users should be able to discover and play only on latest app having latest player.async-questionset-publish flink job will handle different data validation based on schemaVersion / version.
schemaVersion & qumlVersion will be used inside player, based on schemaVersion, player will switch the logic to process data.
player won't understand comaptibilityLevel, but will upgrade it to 6 for backward compatibility (existing apps).
data versioning will be implemented to store multiple version data at platform in question & questionset v2 api’s.
question & questionset v1 api’s will be enhanced to throw an error, when user try to read/update data created using v2 api’s.
if quml specification will get updated in future,
if it is a minor change, the change can be accommodated in v2 api’s.
if spec will have major breaking change, we need to write next version of api’s.
For existing data created using v1 api’s, we have two approach as mentioned below:
No static Data Migration for existing objects and data transformation in question read & list api at run time to support v2 api spec.
One time static Data Migration
...