Single Sourcing - Contribution reusability
Kartheek Palla
This wiki explains how we can leverage Open-saber APIs for contribution reuse in single sourcing.
Program_Collection_Map Schema:
Columns | DataType | Values |
programId | varchar |
|
collectionId | varchar |
|
collectionInfo | json | name, board, gradeLevel, medium, subject, chapterCount |
primaryCategory | varchar |
|
hierarchyInfo | array |
|
status | enum | Active, inActive |
osCreatedAt | varchar |
|
createdBy | time without time zone |
|
osUpdatedAt | varchar |
|
updatedBy | time without time zone |
|
Contribution_Info Schema:
Columns | DataType | Values |
ContributionId | varchar |
|
programId | varchar |
|
contentId | varchar |
|
collectionId | varchar |
|
unitId | varchar |
|
hierarchyInfo | array |
|
status | enum | Draft, Submitted, Approved, Rejected, RequestChanges |
publishComment | text |
|
rejectComment | text |
|
requestChanges | text |
|
createdBy | varchar |
|
osCreatedAt | time without time zone |
|
updatedOn | varchar |
|
osUpdatedAt | time without time zone |
|
Review_Info Schema:
Columns | DataType | Values |
id | varchar |
|
ContributionId | varchar | foreign key |
userId | varchar |
|
userName | varchar |
|
organizationId | varchar |
|
organizationName | varchar |
|
status | enum | Pending, Accepted, NotAccepted, SentForCorrections |
publishComment | text |
|
rejectComment | text |
|
requestChanges | text |
|
createdBy | varchar |
|
osCreatedAt | time without time zone |
|
updatedOn | varchar |
|
osUpdatedAt | time without time zone |
|
API Spec:
Create program_collection mapping entry:
Method: POST
Path: https://dock.sunbirded.org/api/program/v1/collection/create
Request Header: Authorization: <api-key>
Request Payload:
{
"id": "open-saber.registry.create",
"ver": "1.0",
"ets": "11234",
"params": {
"did": "",
"key": "",
"msgid": ""
},
"request": {
"Program_Collection_Map": {
"program_id": "9ee6e230-49bd-11eb-aae1-fb99d9fb6737",
"collection_id": "do_123456",
"collection_info": {
"name": "English - I",
"board": "CBSE",
"gradeLvel": [
"Class 1"
],
"subject": [
"English"
],
"medium": [
"English"
],
"chapterCount": 4
},
"primary_category": "Digital Textbook",
"hierarchy_info": [
"do_11316452299618713611218",
"do_11316452299638374411248",
"do_11316452299614617611212",
"do_11316452299605606411198"
],
"status": "Active",
"createdBy": "1d866fdf-a664-48c1-9fa8-1222c1cb47ad"
}
}
}
Response:
{
"id": "open-saber.registry.create",
"ver": "1.0",
"ets": 1612197779279,
"params": {
"resmsgid": "",
"msgid": "606a7c96-1343-4e1c-9a61-f9cde6e676d8",
"err": "",
"status": "SUCCESSFUL",
"errmsg": ""
},
"responseCode": "OK"
}
Update program_collection mapping :
Method: POST
Path: https://dock.sunbirded.org/api/program/v1/collection/update
Request Header: Authorization: <api-key>
Request Payload:
{
"id": "open-saber.registry.update",
"ver": "1.0",
"ets": "11234",
"params": {
"did": "",
"key": "",
"msgid": ""
},
"request": {
"Program_Collection_Map": {
"program_id": "9ee6e230-49bd-11eb-aae1-fb99d9fb6737",
"collection_id": "do_123456",
"collection_info": {
"name": "English - I",
"board": "CBSE",
"gradeLvel": [
"Class 1"
],
"subject": [
"English"
],
"medium": [
"English"
],
"chapterCount": 5
},
"hierarchy_info": [
"do_11316452299618713611218",
"do_11316452299638374411248",
"do_11316452299614617611212",
"do_11316452299605606411198",
"do_11316452299605606411211"
],
"updatedBy": "1d866fdf-a664-48c1-9fa8-1222c1cb47ad"
}
}
}
Response:
{
"id": "open-saber.registry.update",
"ver": "1.0",
"ets": 1612197779279,
"params": {
"resmsgid": "",
"msgid": "606a7c96-1343-4e1c-9a61-f9cde6e676d8",
"err": "",
"status": "SUCCESSFUL",
"errmsg": ""
},
"responseCode": "OK"
}
Read program_collection mapping:
Method: POST
Path: https://dock.sunbirded.org/api/program/v1/collection/read
Request Header: Authorization: <api-key>
Request Payload:
{
"id": "open-saber.registry.read",
"ver": "1.0",
"ets": "11234",
"params": {
"did": "",
"key": "",
"msgid": ""
},
"request": {
"Program_Collection_Map": {
"program_id": "9ee6e230-49bd-11eb-aae1-fb99d9fb6737",
"collection_id": "do_123456"
}
}
}
Response:
{
"id": "open-saber.registry.read",
"ver": "1.0",
"ets": 1612197779279,
"params": {
"resmsgid": "",
"msgid": "606a7c96-1343-4e1c-9a61-f9cde6e676d8",
"err": "",
"status": "SUCCESSFUL",
"errmsg": ""
},
"responseCode": "OK",
"result": {
"Program_Collection_Map": {
"program_id": "9ee6e230-49bd-11eb-aae1-fb99d9fb6737",
"collection_id": "do_123456",
"collection_info": {
"name": "English - I",
"board": "CBSE",
"gradeLvel": [
"Class 1"
],
"subject": [
"English"
],
"medium": [
"English"
],
"chapterCount": 5
},
"primary_category": "Digital Textbook",
"hierarchy_info": [
"do_11316452299618713611218",
"do_11316452299638374411248",
"do_11316452299614617611212",
"do_11316452299605606411198"
],
"status": "Active",
"createdBy": "1d866fdf-a664-48c1-9fa8-1222c1cb47ad",
"updatedBy": "1d866fdf-a664-48c1-9fa8-1222c1cb47ad",
"osUpdatedAt": "2021-02-01T16:42:59.280Z",
"osCreatedAt": "2021-02-01T16:42:59.280Z"
}
}
}
Search program_collection mapping:
Method: POST
Path: https://dock.sunbirded.org/api/program/v1/collection/search
Request Header: Authorization: <api-key>
Request Payload:
{
"id": "open-saber.registry.search",
"ver": "1.0",
"ets": "11234",
"params": {
"did": "",
"key": "",
"msgid": ""
},
"request": {
"Program_Collection_Map": {
"program_id": "9ee6e230-49bd-11eb-aae1-fb99d9fb6737"
}
}
}
Response:
{
"id": "open-saber.registry.search",
"ver": "1.0",
"ets": 1612197779279,
"params": {
"resmsgid": "",
"msgid": "606a7c96-1343-4e1c-9a61-f9cde6e676d8",
"err": "",
"status": "SUCCESSFUL",
"errmsg": ""
},
"responseCode": "OK",
"result": {
"Program_Collection_Map": [
{
"program_id": "9ee6e230-49bd-11eb-aae1-fb99d9fb6737",
"collection_id": "do_1234567891",
"collection_info": {
"name": "English - I",
"board": "CBSE",
"gradeLvel": [
"Class 1"
],
"subject": [
"English"
],
"medium": [
"English"
]
"chapterCount": 5
},
"primary_category": "Digital Textbook",
"hierarchy_info": [
"do_11316452299618713611218",
"do_11316452299638374411248",
"do_11316452299614617611212",
"do_11316452299605606411198"
],
"status": "Active",
"createdBy": "1d866fdf-a664-48c1-9fa8-1222c1cb47ad",
"updatedBy": "1d866fdf-a664-48c1-9fa8-1222c1cb47ad",
"osUpdatedAt": "2021-02-01T16:42:59.280Z",
"osCreatedAt": "2021-02-01T16:42:59.280Z"
},
{
"program_id": "9ee6e230-49bd-11eb-aae1-fb99d9fb6737",
"collection_id": "do_1234567892",
"collection_info": {
"name": "English - II",
"board": "CBSE",
"gradeLvel": [
"Class 1"
],
"subject": [
"English"
],
"medium": [
"English"
],
"chapterCount": 2
},
"primary_category": "Digital Textbook",
"hierarchy_info": [
"do_11316452299618798765422",
"do_11316452299627865443467"
],
"status": "Active",
"createdBy": "1d866fdf-a664-48c1-9fa8-1222c1cb47ad",
"updatedBy": "1d866fdf-a664-48c1-9fa8-1222c1cb47ad",
"osUpdatedAt": "2021-02-01T16:42:59.280Z",
"osCreatedAt": "2021-02-01T16:42:59.280Z"
}
]
}
}
Create contribution entry:
Method: POST
Path: https://dock.sunbirded.org/api/program/v1/contribution/create
Request Payload:
{
"id": "api.contribution.create",
"ver": "1.0",
"ets": "11234",
"params": {
"did": "",
"key": "",
"msgid": ""
},
"request": {
"Contribution_Info": {
"programId": "9ee6e230-49bd-11eb-aae1-fb99d9fb6737",
"collectionId": "do_123456",
"contentId": "do_1234567",
"unitId": "do_123213",
"primaryCategory": "Digital Textbook",
"name": "Test Content",
"status": "Draft",
"createdBy": "1d866fdf-a664-48c1-9fa8-1222c1cb47ad"
}
}
}
Request Header:Authorization: <api-key>
Response:
{
"id": "api.contribution.create",
"ver": "1.0",
"ets": 1612197779279,
"params": {
"resmsgid": "",
"msgid": "606a7c96-1343-4e1c-9a61-f9cde6e676d8",
"err": "",
"status": "SUCCESSFUL",
"errmsg": ""
},
"responseCode": "OK"
}
Update contribution entry:
Method: POST
Path: https://dock.sunbirded.org/api/program/v1/contribution/update
Request Payload:
{
"id": "api.contribution.update",
"ver": "1.0",
"ets": "11234",
"params": {
"did": "",
"key": "",
"msgid": ""
},
"request": {
"contribution": {
"contributionId": "9ee6e230-4XXXXX"
"name": "Test Content",
"publishComments": "XXXXX",
"status": "Draft",
"updatedBy": "1d866fdf-a664-48c1-9fa8-1222c1cb47ad"
"reviewerInfo":{
"userId": "123",
"userName": "Kartheek",
"organizationId": "1234",
"organizationName": "Sanketika",
"status": "Accepted" //Accepted, NotAccepted, RequestChanges,
"publishComment": "comments"
}
}
}
}
Request Header:Authorization: <api-key>
Response:
{
"id": "api.contribution.update",
"ver": "1.0",
"ets": 1612197779279,
"params": {
"resmsgid": "",
"msgid": "606a7c96-1343-4e1c-9a61-f9cde6e676d8",
"err": "",
"status": "SUCCESSFUL",
"errmsg": ""
},
"responseCode": "OK"
}
Read contribution:
Method: POST
Path: https://dock.sunbirded.org/api/program/v1/contribution/read/:contributionId
Request Payload:
{}
Request Header:Authorization: <api-key>
Response:
{
"id": "api.contribution.read",
"ver": "1.0",
"ets": 1612197779279,
"params": {
"resmsgid": "",
"msgid": "606a7c96-1343-4e1c-9a61-f9cde6e676d8",
"err": "",
"status": "SUCCESSFUL",
"errmsg": ""
},
"responseCode": "OK",
"result": {
"contributionId": "9ee6e230-4XXXXX"
"name": "Test Content",
"publishComments": "XXXXX",
"status": "Draft",
"createdBy": "1d866fdf-a664-48c1-9fa8-1222c1cb47ad",
"updatedBy": "1d866fdf-a664-48c1-9fa8-1222c1cb47ad",
"osUpdatedAt": "2021-02-01T16:42:59.280Z",
"osCreatedAt": "2021-02-01T16:42:59.280Z"
"reviewerInfo":[{
"userId": "123",
"userName": "first level review",
"organizationId": "1234",
"organizationName": "Sanketika",
"status": "Accepted" //Accepted, NotAccepted, RequestChanges,
"publishComment": "comments",
"createdBy": "1d866fdf-a664-48c1-9fa8-1222c1cb47ad",
"updatedBy": "1d866fdf-a664-48c1-9fa8-1222c1cb47ad",
"osUpdatedAt": "2021-02-01T16:42:59.280Z",
"osCreatedAt": "2021-02-01T16:42:59.280Z"
}]
}
}
Lsi of contributions:
Method: POST
Path: https://dock.sunbirded.org/api/program/v1/contribution/list
Request Payload:
{
"id": "api.contribution.list",
"ver": "1.0",
"ets": "11234",
"params": {
"did": "",
"key": "",
"msgid": ""
},
"request": {
"contribution": {
"program_id": "9ee6e230-49bd-11eb-aae1-fb99d9fb6737"
}
}
}
Request Header:Authorization: <api-key>
Response:
{
"id": "api.contribution.list",
"ver": "1.0",
"ets": 1612197779279,
"params": {
"resmsgid": "",
"msgid": "606a7c96-1343-4e1c-9a61-f9cde6e676d8",
"err": "",
"status": "SUCCESSFUL",
"errmsg": ""
},
"responseCode": "OK",
"result": {
"count": 2,
"contribution": [
{
"contributionId": "9ee6e230-4XXXXX",
"name": "Test Content 1",
"publishComments": "XXXXX",
"status": "Submitted",
"createdBy": "1d866fdf-a664-48c1-9fa8-1222c1cb47ad",
"updatedBy": "1d866fdf-a664-48c1-9fa8-1222c1cb47ad",
"osUpdatedAt": "2021-02-01T16:42:59.280Z",
"osCreatedAt": "2021-02-01T16:42:59.280Z",
"reviewerInfo": [
{
"userId": "123",
"userName": "Kartheek",
"organizationId": "1234",
"organizationName": "Sanketika",
"status": "NotAccepted",
"publishComment": "comments",
"createdBy": "1d866fdf-a664-48c1-9fa8-1222c1cb47ad",
"updatedBy": "1d866fdf-a664-48c1-9fa8-1222c1cb47ad",
"osUpdatedAt": "2021-02-01T16:42:59.280Z",
"osCreatedAt": "2021-02-01T16:42:59.280Z"
}
]
},
{
"contributionId": "9ee6e230-4XXXXX",
"name": "Test Content 2",
"publishComments": "XXXXX",
"status": "Approved",
"createdBy": "1d866fdf-a664-48c1-9fa8-1222c1cb47ad",
"updatedBy": "1d866fdf-a664-48c1-9fa8-1222c1cb47ad",
"osUpdatedAt": "2021-02-01T16:42:59.280Z",
"osCreatedAt": "2021-02-01T16:42:59.280Z",
"reviewerInfo": [
{
"userId": "123",
"userName": "Kartheek",
"organizationId": "1234",
"organizationName": "Sanketika",
"status": "Accepted",
"publishComment": "comments",
"createdBy": "1d866fdf-a664-48c1-9fa8-1222c1cb47ad",
"updatedBy": "1d866fdf-a664-48c1-9fa8-1222c1cb47ad",
"osUpdatedAt": "2021-02-01T16:42:59.280Z",
"osCreatedAt": "2021-02-01T16:42:59.280Z"
}
]
}
]
}
}