Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

Code Block
languagejs
titlenew api to get course batch count
URI: /course/v1/search
Methods: POST

Request body:

{
 "request": {
     "filters":{
              "status":["0","1"],     
              "enrollmentType":["open"]
            },
            "offset":0,
            "limit":20,
            "facets":[{"courseId":null}]
       }
}

--- Internal work flow :
  When user call this api , it will do course batch search under ES and all unique courseIds. After getting list of unique courseIds , it will make call to Content search api by passing all those courseIds and Content search response will be provided to caller.

Internal Api call
URI: /content/v1/search
Method: POST
Request body:
{"request":{"filters":{"identifier": ["list of courseId"]},"sort_by":{"createdOn":"desc"}}}



----
Response:
{
    "id": "api.course.search",
    "ver": "v1",
    "ts": "2018-11-20 17:53:00:716+0000",
    "params": {
        "resmsgid": null,
        "msgid": "8e27cbf5-e299-43b0-bca7-8347f7e5abcf",
        "err": null,
        "status": "success",
        "errmsg": null
    },
    "responseCode": "OK",
    "result": {
        "response": {
            "count": 8,
            "content": [
                    {
                "ownershipType": [
                    "createdFor"
                ],
                "subject": "Science",
                "channel": "0124511325012951040",
                "downloadUrl": "https://sunbirdstaging.blob.core.windows.net/sunbird-content-staging/ecar_files/do_2126299478299033601672/course-rf-09112018-2_1541742032021_do_2126299478299033601672_1.0_spine.ecar",
                "organisation": [
                    "SunbirdQA 1",
                    "Sunbird QA Tenant"
                ],
                "language": [
                    "English"
                ],
                "mimeType": "application/vnd.ekstep.content-collection",
                "variants": {
                    "spine": {
                        "ecarUrl": "https://sunbirdstaging.blob.core.windows.net/sunbird-content-staging/ecar_files/do_2126299478299033601672/course-rf-09112018-2_1541742032021_do_2126299478299033601672_1.0_spine.ecar",
                        "size": 167578
                    }
                },
                "objectType": "Content",
                "gradeLevel": [
                    "Class 9"
                ],
                "appIcon": "https://sunbirdstaging.blob.core.windows.net/sunbird-content-staging/content/do_2126299478299033601672/artifact/1193-600x337_1524060806727.thumb.jpg",
                "children": [],
                "appId": "staging.sunbird.app",
                "contentEncoding": "gzip",
                "mimeTypesCount": "{\"application/vnd.ekstep.html-archive\":1,\"video/webm\":1,\"application/vnd.ekstep.content-collection\":1,\"video/mp4\":1}",
                "contentType": "Course",
                "identifier": "do_2126299478299033601672",
                "lastUpdatedBy": "bf622d07-ca95-4cc1-9a49-a4518925a4d8",
                "audience": [
                    "Learner"
                ],
                "visibility": "Default",
                "toc_url": "https://sunbirdstaging.blob.core.windows.net/sunbird-content-staging/content/do_2126299478299033601672/artifact/do_2126299478299033601672toc.json",
                "contentTypesCount": "{\"CourseUnit\":1,\"Resource\":3}",
                "consumerId": "dc56def7-ecfd-4001-ab2f-d98251ed40e2",
                "childNodes": [
                    "do_2123236738896609281243",
                    "do_2123717816919900161187",
                    "do_2126299480633671681673",
                    "do_2123717841558814721189"
                ],
                "mediaType": "content",
                "osId": "org.ekstep.quiz.app",
                "graph_id": "domain",
                "nodeType": "DATA_NODE",
                "lastPublishedBy": "9ac4ea92-fea7-45e6-93f3-02aa3172ea58",
                "prevState": "Review",
                "size": 167578,
                "lastPublishedOn": "2018-11-09T05:40:31.997+0000",
                "IL_FUNC_OBJECT_TYPE": "Content",
                "name": "Course RF 09112018 2",
                "status": "Live",
                "code": "org.sunbird.ZwEKh2",
                "description": "Enter description for Course",
                "medium": "Hindi",
                "idealScreenSize": "normal",
                "posterImage": "https://ekstep-public-qa.s3-ap-south-1.amazonaws.com/content/do_21248510612742144014185/artifact/1193-600x337_1524060806727.jpg",
                "createdOn": "2018-11-09T05:34:38.454+0000",
                "contentDisposition": "inline",
                "lastUpdatedOn": "2018-11-09T05:40:31.194+0000",
                "SYS_INTERNAL_LAST_UPDATED_ON": "2018-11-09T08:00:00.413+0000",
                "owner": "Sunbird QA Tenant",
                "creator": "JP Mentor ORg1 user",
                "createdFor": [
                    "012451141730410496558",
                    "0124511325012951040"
                ],
                "IL_SYS_NODE_TYPE": "DATA_NODE",
                "os": [
                    "All"
                ],
                "c_Sunbird_Staging_open_batch_count": 1,
                "pkgVersion": 1,
                "versionKey": "1541742031194",
                "idealScreenDensity": "hdpi",
                "framework": "rj_k-12_1",
                "s3Key": "ecar_files/do_2126299478299033601672/course-rf-09112018-2_1541742032021_do_2126299478299033601672_1.0_spine.ecar",
                "lastSubmittedOn": "2018-11-09T05:39:35.246+0000",
                "createdBy": "bf622d07-ca95-4cc1-9a49-a4518925a4d8",
                "compatibilityLevel": 4,
                "leafNodesCount": 3,
                "IL_UNIQUE_ID": "do_2126299478299033601672",
                "ownedBy": "0124511325012951040",
                "board": "State (Rajasthan)",
                "resourceType": "Course",
                "node_id": 430981
            } ,
            {} 
           ]
        }
    }
}

...

ProsCons
  1. Easy to manage , later any other changes can be easily incorporated.
  2. Only one api call that will handle complete business logic  
  3. Using request body 2 or 3 will provide flexibility to move complete business logic on server side.
  1.  new api need to be introduce
  2. Some issues with limit and offset. there might be the case one course is used under "N" number of batches , then in another set as well it can come.




** Search open batch based on filter will have issues.

Proposed Solution 3:

  Sunbird will define new page section to provide open course list under page api.

...