{"id":19513475,"url":"https://github.com/escolalms/lrs","last_synced_at":"2025-10-09T08:07:30.617Z","repository":{"id":40409154,"uuid":"437928692","full_name":"EscolaLMS/LRS","owner":"EscolaLMS","description":"xAPI Learning Record Stores","archived":false,"fork":false,"pushed_at":"2024-07-10T06:47:12.000Z","size":18194,"stargazers_count":7,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-10-09T08:06:27.582Z","etag":null,"topics":["api-rest","laravel","lrs","xapi"],"latest_commit_sha":null,"homepage":"","language":"PHP","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/EscolaLMS.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2021-12-13T15:38:25.000Z","updated_at":"2025-03-16T09:17:49.000Z","dependencies_parsed_at":"2025-04-26T04:31:52.169Z","dependency_job_id":"a18b4d83-a1fe-447e-882a-81da3ea35a0f","html_url":"https://github.com/EscolaLMS/LRS","commit_stats":{"total_commits":22,"total_committers":5,"mean_commits":4.4,"dds":0.6818181818181819,"last_synced_commit":"bcc87c403d87358232be22079f40e53aebef7224"},"previous_names":[],"tags_count":13,"template":false,"template_full_name":null,"purl":"pkg:github/EscolaLMS/LRS","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/EscolaLMS%2FLRS","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/EscolaLMS%2FLRS/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/EscolaLMS%2FLRS/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/EscolaLMS%2FLRS/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/EscolaLMS","download_url":"https://codeload.github.com/EscolaLMS/LRS/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/EscolaLMS%2FLRS/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":279001092,"owners_count":26082990,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-10-09T02:00:07.460Z","response_time":59,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["api-rest","laravel","lrs","xapi"],"created_at":"2024-11-10T23:30:10.788Z","updated_at":"2025-10-09T08:07:30.600Z","avatar_url":"https://github.com/EscolaLMS.png","language":"PHP","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Learning Record Stores\n\n[![swagger](https://img.shields.io/badge/documentation-swagger-green)](https://escolalms.github.io/LRS/)\n[![codecov](https://codecov.io/gh/EscolaLMS/LRS/branch/main/graph/badge.svg?token=NRAN4R8AGZ)](https://codecov.io/gh/EscolaLMS/LRS)\n[![phpunit](https://github.com/EscolaLMS/LRS/actions/workflows/test.yml/badge.svg)](https://github.com/EscolaLMS/LRS/actions/workflows/test.yml)\n[![downloads](https://img.shields.io/packagist/dt/escolalms/lrs)](https://packagist.org/packages/escolalms/lrs)\n[![downloads](https://img.shields.io/packagist/v/escolalms/lrs)](https://packagist.org/packages/escolalms/lrs)\n[![downloads](https://img.shields.io/packagist/l/escolalms/lrs)](https://packagist.org/packages/escolalms/lrs)\n[![Maintainability](https://api.codeclimate.com/v1/badges/701fa6064d932feadc41/maintainability)](https://codeclimate.com/github/EscolaLMS/LRS/maintainability)\n[![Test Coverage](https://api.codeclimate.com/v1/badges/701fa6064d932feadc41/test_coverage)](https://codeclimate.com/github/EscolaLMS/LRS/test_coverage)\n\n## Install\n\n1. get package from composer `composer require escolalms/lrs`\n2. run the seeder `php artisan db:seed --class=\"EscolaLms\\Lrs\\Database\\Seeders\\LrsSeeder\"`\n3. make sure that Response Headers are not overwritten by any layer, the `/api/cmi5/**` should response with\n\n```\nx-experience-api-version: 1.0.3\n```\n\n## Testing\n\n1. Download [cmi5-demo](https://github.com/xapijs/cmi5-demo) and run it with static file server - [`npm run serve`](https://www.npmjs.com/package/serve) or [`php -S localhost:8000`](https://www.php.net/manual/en/features.commandline.webserver.php) is good enough\n2. Generate [fetch params](http://aicc.github.io/CMI-5_Spec_Current/flows/lms-flow.html) for a course id calling `/api/cmi5/courses/{id}` endpoint\n3. Start course from point 1 with generated params, use `url` object example below\n\n```bash\nhttp://localhost:3000/?endpoint=https%3A%2F%2Fapi-stage.escolalms.com%2Ftrax%2Fapi%2Faf743842-8870-445e-9ca9-f4dcbde65efe%2Fxapi%2Fstd\u0026fetch=https%3A%2F%2Fapi-stage.escolalms.com%2Fapi%2Fcmi5%2Ffetch%3Ftoken%3DeyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiJ9.eyJhdWQiOiI5NGExY2RiYi1iZTRiLTRlMjktOTRhZi1mYzk5MjI1YTQ2NmMiLCJqdGkiOiI0ZTliNGE0OTAwZWEwYmEyOWM5ODIwNmVkYzg2YWU0MDQ4M2JmZmNiMGNlYTc2OTU5YjkwZTM1ODk0ZTU2Njk2Mzc4MDA1ZWYyOGMwMmRhZSIsImlhdCI6MTY0MzA0NTEyOS4zMjgxNzgsIm5iZiI6MTY0MzA0NTEyOS4zMjgxODYsImV4cCI6MTY3NDU4MTEyOS4zMjA5MjcsInN1YiI6IjIiLCJzY29wZXMiOltdfQ.hQr_XUoEByCvgFH8S94JLmccqxlg-Zh6dPxEflWD3ABKQQcnSum10IEMrjE9_O0HMHArdwbbi8ebJv0f1XrHEgx2nkw8O5cWIbT27OBnaR86gA3yshg0g5BuM693WvWqH_kc2fK9uF9148b0vcvFsCKX3vru6gLv0NT3WhMKIt7vMSyZrBhD2i1WtgyrpiVz81Tua1f2c7Pcxbir8jijr71Y2H-ZszytxglWvXYtGzCVyY0JiiZV50-did8PhCCTGPKlg3wIYdeVTFRozbTRe-9bF660QhavJr6WMi_ymvnL8hK-BqQWEHTbVdCDXYKMM9WkodqAAk6CWcTRXzPgQT4UTvOPu_rxNMTKU-hA6xaZqGjo5esGId2FMJXxtzMp8MRR2oLxjta6fTmmlgtBXMy1s4thIDlbWIZPSLVx95m85vos2R2TxMc_hKq5FoLp_j78TsJc_zXbxphToVDKybwCAvZC0nreyV3dseNd3urtdDtPmXJnDoasSoQw38GVbj4VlxQ1gq8J9DDtOPmJ3St9j4lMDEXpjZ5WKKKnrmdmxUQi-ti1V4oZ1phARh-KeAIIwfHAR5IdCUVmj6wVvErOUMZwgo9QsvmdoxLVFEe2uwmD9W01crpEKboZ9qtG2cmIDB4PzgrUM6lIwCTtquRPlKMHX-l8PRW3hW7P9Us\u0026actor=%7B%22mbox%22%3A%22mailto%3Aadmin%40escola-lms.com%22%2C%22objectType%22%3A%22Agent%22%2C%22name%22%3A%22Admin+A%22%7D\u0026registration=cfddab74-b3af-4262-ba18-21b0c8f8273c\u0026activityId=https%3A%2F%2Fapi-stage.escolalms.com%2Fxapi%2Factivities%2Fcourse%2F37%2Ftopic%2F671\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fescolalms%2Flrs","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fescolalms%2Flrs","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fescolalms%2Flrs/lists"}