Schema Implementation Design
Problem Definition:
As part of Knowledge Platform 2.0, definition schema should give provision of implementing version support in future.
Design:
Definition Data Model:
- IL_UNIQUE_ID - DEFINITION_NODE_Content
- description - Schema definition object for Content
- status - Draft/Live
- createdOn - Date
- lastUpdatedOn - Date
- IL_SYS_NODE_TYPE - DEFINITION_NODE
- IL_FUNC_OBJECT_TYPE - Content
- version - 1.0
- artifactUrl - Draft version URL link
- downloadUrl - Published version URL link
Schema API Request Response:
Schema Create API:
- It will always expect object Type in request
- If there is no entry for IL_SYS_NODE_TYPE: DEFINITION_NODE and IL_FUNC_OBJECT_TYPE: Content:
- It will create Content definition object with version 1.0
- Identifier will be DEFINITION_NODE_Content
- If object present - will throw Client Error.
- Apart from objectType (IL_FUNC_OBJECT_TYPE), no other field is expected.
{ "request": { "schema": { "objectType": "Content" } } }
Schema Update API:
- No other field apart from description can be updated.
{ "request": { "schema": { "description": "Schema definition object for Content", } } }
Schema Upload API:
- Zipped file containing 'schema.josn' and 'config.json' will be uploaded.
- If object status is Live:
- Upload and extract the zipped file in path schemas/content/snapshot.
- It will create replica of published definition.
- Identifier will be 'DEFINITION_NODE_Content.img'
- VersionKey will be same of version key.
- Status will be Draft
- artifactUrl will be link of snapshot path link.
- If object status is Draft:
- Upload and extract the zipped file in path schemas/content/snapshot.
Schema Publish API:
- It will copy the snapshot files to the directory named 'schemas/content/1.0'
- DownloadUrl will be updated with new url.
- Status will be Live.
{ "request": { "schema": {} } }