Framework metadata population
When an asset is created as part of a sourcing project
When an asset is created independent of a sourcing project
PRD: Population of metadata for an asset - a generalized approach | Configuration
An asset created under a sourcing project
Create a Project of the type “Seek assets for Target Collections”
Create a Project of the type “Seek assets for NON-Target Collections”
28th Oct :
Option 1:
Schema
CREATE TABLE form_config (
UUID varchar,
channel varchar,
objectype varchar,
primarycategory varchar,
context varchar,
context_type varchar,
operation varchar,
component varchar,
data JSON,
status boolean, / Active, Inactive
created_on timestamp,
update_on timestamp,
PRIMARY KEY (channel, objectype, primarycategory, context, context_type, operation)
)
Primary Key for the table
channel, objectype, primarycategory, context, context_type, operation
API's
/read
will only read a form if the form is not retired
`v1/read
`
request object
{
"request": {
"channel": "*",
"objectype" : "*",
"primarycategory" : "*",
"context": "framework",
"context_type": "K-12",
"operation" : "*",
"component": "portal"
}
}
/create
creates a form if the same form is not available in the DB
v1/create
request Object
{
"request": {
"channel": "*",
"objectype": "*",
"primarycategory": "*",
"context": "framework",
"context_type": "K-12",
"operation": "*",
"data": {
"templateName": "",
"required": [],
"properties": [
{
"code": "board",
"dataType": "string",
"inputType": "select",
"editable": true,
"required": true
},
{
"code": "gradeLevel",
"dataType": "list",
"inputType": "nestedselect",
"editable": true,
"required": true
},
{
"code": "medium",
"dataType": "list",
"inputType": "nestedselect",
"editable": true,
"required": true
},
{
"code": "subject",
"dataType": "list",
"inputType": "nestedselect",
"editable": true,
"required": true
}
]
}
}
}
Option 2:
Forms
Question
question.json
question-framerwork.json
Content
content.json
content-frmaework.json
content-framework-channel.json
content-framework-channel-primarycategory.json
Configurations:
Set of framework types to be used for any sourcing project
For All Channels - System Level -> For channel show K-12 & TPD framework types while creating project.
{ "request": { "rootOrgId": "*", "type": "project", "subType": "framworktype", "action": "*", "value": [ "TPD", "K-12" ] } }
Channel (TN) level → Show only K-12 framework types while creating project.
{ "request": { "rootOrgId": "*", "type": "project", "subType": "framworktype", "action": "*", "value": [ "K-12" ] } }
2. Framework form configuration for each framework type
a. For all channels → K-12 framework type → show Board, Medium, GradeLevel, Subject and Topic
{
"request": {
"rootOrgId": "*",
"framework": '*',
"type": "K-12",
"subType": "framworkCategories",
"action": "*"
"DATA": [
Board, // List, singleSelect
Medium, // List, multiSelect
GradeLevel, // List, multiSelect
Subject, // List, multiSelect
Topic // List TopicTree
]
}
}
b. For all channels → TPD framework type → show Medium, GradeLevel, Subject
{
"request": {
"rootOrgId": "*",
"framework": '*',
"type": "TPD",
"subType": "framworkCategories",
"action": "*",
"DATA": [
Medium, // List, multiSelect
GradeLevel, // List, multiSelect
Subject, // List, multiSelect
]
}
}
c. For TN Channel → K-12 framework type → show Board, Medium, GradeLevel, Subject
{
"request": {
"rootOrgId": "*",
"framework": '*',
"type": "K-12",
"subType": "framworkCategories",
"action": "*",
"DATA": [
Board, // List, singleSelect
Medium, // List, multiSelect
GradeLevel, // List, multiSelect
Subject, // List, multiSelect
]
}
}
{
"request": {
"rootOrgId": "*",
"framework": '*',
"frameworkType": "K-12",
"sourcingType": "project/NonProject",
"object": "*",
"type": "framworkCategories",
"subType": "*",
"action": "*"
"DATA": [
Board, // List, singleSelect
Medium, // List, multiSelect
GradeLevel, // List, multiSelect
Subject, // List, multiSelect
Topic // List TopicTree
]
}
}
2. Asset created independently (not in a sourcing project)
Configurations:
For all channels & all primaryCategories
Channel -> *
ObjectType -> Content
primaryCategory -> *
outputType/ configType - nonProjectFrameworkCategory
DATA => {
K-12 Form: edit{
Board, List, singleSelect
GradeLevel, List, multiSelect
Medium, List, multiSelect,
Subject, List, multiSelect,
},
K-12 Form: review{
Board, List, singleSelect, ReadOnly
GradeLevel, List, multiSelect, ReadOnly
Medium, List, multiSelect, ReadOnly,
Subject, List, multiSelect, ReadOnly
}
K-12 Form: search{
Board, List, multiSelect
GradeLevel, List, multiSelect
Medium, List, multiSelect,
Subject, List, multiSelect
},
K-12 Form: publish{
Board, List, singleSelect, ReadOnly
GradeLevel, List, multiSelect, ReadOnly
Medium, List, multiSelect, ReadOnly
Subject, List, multiSelect, ReadOnly
}
TPD Form: edit{
Board, List, singleSelect
GradeLevel, List, multiSelect
Medium, List, multiSelect,
},
TPD Form: review{
Board, List, singleSelect, ReadOnly
GradeLevel, List, multiSelect, ReadOnly
Medium, List, multiSelect, ReadOnly,
}
TPD Form: search{
Board, List, multiSelect
GradeLevel, List, multiSelect
Medium, List, multiSelect
},
TPD Form: publish{
Board, List, singleSelect, ReadOnly
GradeLevel, List, multiSelect, ReadOnly
Medium, List, multiSelect, ReadOnly,
}
}
2. For all channels & specific primaryCategory
Channel -> *
ObjectType -> Content
primaryCategory -> etextBook
outputType/ configType - nonProjectFrameworkCategory
DATA => {
K-12 Form: edit{
Board, List, singleSelect
GradeLevel, List, multiSelect
Medium, List, multiSelect,
Subject, List, multiSelect,
Topic, List, TopicTree
},
K-12 Form: review{
Board, List, singleSelect, ReadOnly
GradeLevel, List, multiSelect, ReadOnly
Medium, List, multiSelect, ReadOnly,
Subject, List, multiSelect, ReadOnly,
Topic, List, TopicTree, ReadOnly
}
K-12 Form: search{
Board, List, multiSelect
GradeLevel, List, multiSelect
Medium, List, multiSelect,
Subject, List, multiSelect,
Topic, List, TopicTree
},
K-12 Form: publish{
Board, List, singleSelect, ReadOnly
GradeLevel, List, multiSelect, ReadOnly
Medium, List, multiSelect, ReadOnly
Subject, List, multiSelect, ReadOnly
Topic, List, TopicTree, ReadOnly
}
TPD Form: edit{
Board, List, singleSelect
GradeLevel, List, multiSelect
Medium, List, multiSelect,
},
TPD Form: review{
Board, List, singleSelect, ReadOnly
GradeLevel, List, multiSelect, ReadOnly
Medium, List, multiSelect, ReadOnly,
}
TPD Form: search{
Board, List, multiSelect
GradeLevel, List, multiSelect
Medium, List, multiSelect
},
TPD Form: publish{
Board, List, singleSelect, ReadOnly
GradeLevel, List, multiSelect, ReadOnly
Medium, List, multiSelect, ReadOnly,
}
}