API: SCORM Proxy
Manage SCORM Proxy wrappers and read their registrations and results.
SCORM Proxy delivers a course or activity as a small SCORM package that runs in another LMS and plays the content from your Linqur platform; a wrapper is one such package. These endpoints list, create, update and delete wrappers, return the download links per SCORM version, and read the CMI results and the registrations per day. The interface side is described in Getting started with SCORM wrappers.
Every endpoint accepts both GET and POST; the heading shows the method the specification lists first. Uploads must use POST. Send your API key in the Access-Token header. The base URL is https://<your-platform>/local/ltisaas/api.php/v1; use v0 with the token dummy to get test data. Error responses are JSON with success: false, error and debuginfo. Authentication, versions and limits are explained in API documentation.
Generated from the LtiSaas API specification 1.0, retrieved 2026-10-30 from dev-auto.
| Endpoint | Description |
|---|---|
| GET /scormproxy/list | List SCORM proxy wrappers |
| POST /scormproxy/add | Create a new SCORM proxy wrapper |
| POST /scormproxy/update | Update an existing SCORM proxy wrapper |
| POST /scormproxy/delete | Delete a SCORM proxy wrapper |
| GET /scormproxy/results | Get CMI results for SCORM proxy registrations |
| GET /scormproxy/registrations_by_day | Get SCORM proxy registration statistics by day |
GET /scormproxy/list
List SCORM proxy wrappers. Retrieves a list of SCORM proxy wrappers with optional filtering by wrapper ID, course ID, or object ID.
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
wrapperid | query | string | no | Filter by wrapper ID. |
courseid | query | integer | no | Course ID filter. |
objectid | query | integer | no | Object ID / cmid filter (0 = course context, >0 = activity context). |
Example request
curl -H "Access-Token: <your token>" \
"https://<your-platform>/local/ltisaas/api.php/v1/scormproxy/list"Example response (200). Successful retrieval of SCORM proxy wrappers.
{
"success": true,
"results": [
{
"wrapperid": "sp-abc123xyz789",
"name": "My SCORM Wrapper",
"courseid": 42,
"objectid": 0,
"enrolmentduration": "30 days",
"enrolmentstartdate": "01-01-2025",
"enrolmentenddate": "31-12-2025",
"maxenrolledusers": 100,
"domainrestrictions": "example.com",
"wrapperactive": 0,
"anonymize": 0,
"userids": [
101,
102,
103
],
"totalregistrations": 45,
"downloadlink": {
"scorm_12": "https://<your-platform>/local/ltisaas/scormproxy/download.php?token=dl-xyz&version=scorm_12",
"scorm_2004_2": "https://<your-platform>/local/ltisaas/scormproxy/download.php?token=dl-xyz&version=scorm_2004_2",
"scorm_2004_3": "https://<your-platform>/local/ltisaas/scormproxy/download.php?token=dl-xyz&version=scorm_2004_3",
"scorm_2004_4": "https://<your-platform>/local/ltisaas/scormproxy/download.php?token=dl-xyz&version=scorm_2004_4"
}
}
]
}Errors: 400 Bad Request, 401 Unauthorized
POST /scormproxy/add
Create a new SCORM proxy wrapper. Creates a new SCORM proxy wrapper for remote SCORM package delivery. Returns the wrapper ID and download URLs for different SCORM versions.
Request body (multipart/form-data). SCORM proxy wrapper configuration.
| Field | Type | Required | Description |
|---|---|---|---|
name | string | yes | Wrapper name. |
courseid | integer | yes | Course ID. |
objectid | integer | no | Object ID / cmid (if provided, creates activity context). Default: 0. |
enrolmentduration | integer | no | Enrolment duration in days (0 = unlimited). Default: 0. |
enrolmentstartdate | string | no | Enrolment start date (format: dd-mm-yyyy, 0 = no date). Default: "0". |
enrolmentenddate | string | no | Enrolment end date (format: dd-mm-yyyy, 0 = no date). Default: "0". |
maxenrolledusers | integer | no | Maximum enrolled users (0 = unlimited). Default: 0. |
domainrestrictions | string | no | Comma-separated list of allowed domains (e.g. ’example.com,test.org’). |
status | integer | no | Status: 0 = active, 1 = inactive. Allowed values: 0, 1. Default: 0. |
anonymize | integer | no | Anonymize user data: 0 = no, 1 = yes. Allowed values: 0, 1. Default: 0. |
Example request
curl -X POST -H "Access-Token: <your token>" \
-F "name=<name>" \
-F "courseid=<courseid>" \
"https://<your-platform>/local/ltisaas/api.php/v1/scormproxy/add"Example response (200). Wrapper created successfully.
{
"success": true,
"results": {
"wrapperid": "sp-abc123xyz789",
"downloadlink": {
"scorm_12": "https://<your-platform>/local/ltisaas/scormproxy/download.php?token=dl-xyz&version=scorm_12",
"scorm_2004_2": "https://<your-platform>/local/ltisaas/scormproxy/download.php?token=dl-xyz&version=scorm_2004_2",
"scorm_2004_3": "https://<your-platform>/local/ltisaas/scormproxy/download.php?token=dl-xyz&version=scorm_2004_3",
"scorm_2004_4": "https://<your-platform>/local/ltisaas/scormproxy/download.php?token=dl-xyz&version=scorm_2004_4"
}
}
}Errors: 400 Bad Request, 401 Unauthorized
POST /scormproxy/update
Update an existing SCORM proxy wrapper. Updates an existing SCORM proxy wrapper. Only provided parameters will be updated.
Request body (multipart/form-data). Fields to update.
| Field | Type | Required | Description |
|---|---|---|---|
wrapperid | string | yes | Public wrapper identifier. |
name | string | no | New wrapper name. |
enrolmentduration | integer | no | Enrolment duration in days (0 = unlimited). Default: 0. |
enrolmentstartdate | string | no | Enrolment start date (format: dd-mm-yyyy, 0 = no date). |
enrolmentenddate | string | no | Enrolment end date (format: dd-mm-yyyy, 0 = no date). |
maxenrolledusers | integer | no | Maximum enrolled users (0 = unlimited, -1 = no change). Default: -1. |
domainrestrictions | string | no | Comma-separated list of allowed domains (e.g. ’example.com,test.org’). |
status | integer | no | Status: 0 = active, 1 = inactive, -1 = no change. Allowed values: -1, 0, 1. Default: -1. |
anonymize | integer | no | Anonymize user data: 0 = no, 1 = yes, -1 = no change. Allowed values: -1, 0, 1. Default: -1. |
Example request
curl -X POST -H "Access-Token: <your token>" \
-F "wrapperid=<wrapperid>" \
"https://<your-platform>/local/ltisaas/api.php/v1/scormproxy/update"Example response (200). Wrapper updated successfully.
{
"success": true
}Errors: 400 Bad Request, 401 Unauthorized
POST /scormproxy/delete
Delete a SCORM proxy wrapper. Soft deletes a SCORM proxy wrapper by setting the timedeleted timestamp, status to inactive, and enddate to now.
Request body (multipart/form-data). Wrapper to delete.
| Field | Type | Required | Description |
|---|---|---|---|
wrapperid | string | yes | Public wrapper identifier. |
Example request
curl -X POST -H "Access-Token: <your token>" \
-F "wrapperid=<wrapperid>" \
"https://<your-platform>/local/ltisaas/api.php/v1/scormproxy/delete"Example response (200). Wrapper deleted successfully.
{
"success": true
}Errors: 400 Bad Request, 401 Unauthorized
GET /scormproxy/results
Get CMI results for SCORM proxy registrations. Retrieves CMI (Computer Managed Instruction) data for all registrations of a wrapper, optionally filtered by user ID. Returns attempt data with CMI fields that vary based on whether the wrapper is SCORM (cmi.core.* format) or xAPI/non-SCORM (cmi_* format).
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
wrapperid | query | string | yes | Public wrapper identifier. Example: "sp-abc123xyz789". |
userid | query | integer | no | Moodle user ID filter (optional). Example: 123. |
Example request
curl -H "Access-Token: <your token>" \
"https://<your-platform>/local/ltisaas/api.php/v1/scormproxy/results?wrapperid=<wrapperid>"Example response (200). Successful retrieval of CMI results.
{
"success": true,
"results": [
{
"userid": 123,
"wrapperid": "sp-abc123xyz789",
"registrationid": "reg-abc123def456",
"is_scorm": false,
"attempts": [
{
"attempt": 1,
"cmi_data": {
"cmi_completion_status": "completed",
"cmi_success_status": "passed",
"cmi_score_raw": 100,
"cmi_score_min": 0,
"cmi_score_max": 100,
"cmi_score_scaled": 1
}
}
]
}
]
}Errors: 400 Bad Request - Invalid parameters, 401 Unauthorized - Invalid or missing Access-Token, 404 Not Found - Wrapper not found, user not found, or no registration found for the specified user
GET /scormproxy/registrations_by_day
Get SCORM proxy registration statistics by day. Retrieves registration statistics grouped by date for analytics purposes. Can be filtered by wrapper ID.
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
from | query | string | yes | Start date (format: DD-MM-YYYY). |
till | query | string | yes | End date (format: DD-MM-YYYY). |
wrapperid | query | string | no | Public wrapper identifier filter (optional). |
Example request
curl -H "Access-Token: <your token>" \
"https://<your-platform>/local/ltisaas/api.php/v1/scormproxy/registrations_by_day?from=<from>&till=<till>"Example response (200). Successful retrieval of registration statistics.
{
"success": true,
"results": [
{
"date": "15-11-2024",
"totalregistrations": 42
}
]
}Errors: 400 Bad Request, 401 Unauthorized