Skip to content

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.

EndpointDescription
GET /scormproxy/listList SCORM proxy wrappers
POST /scormproxy/addCreate a new SCORM proxy wrapper
POST /scormproxy/updateUpdate an existing SCORM proxy wrapper
POST /scormproxy/deleteDelete a SCORM proxy wrapper
GET /scormproxy/resultsGet CMI results for SCORM proxy registrations
GET /scormproxy/registrations_by_dayGet 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

NameInTypeRequiredDescription
wrapperidquerystringnoFilter by wrapper ID.
courseidqueryintegernoCourse ID filter.
objectidqueryintegernoObject 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.

FieldTypeRequiredDescription
namestringyesWrapper name.
courseidintegeryesCourse ID.
objectidintegernoObject ID / cmid (if provided, creates activity context). Default: 0.
enrolmentdurationintegernoEnrolment duration in days (0 = unlimited). Default: 0.
enrolmentstartdatestringnoEnrolment start date (format: dd-mm-yyyy, 0 = no date). Default: "0".
enrolmentenddatestringnoEnrolment end date (format: dd-mm-yyyy, 0 = no date). Default: "0".
maxenrolledusersintegernoMaximum enrolled users (0 = unlimited). Default: 0.
domainrestrictionsstringnoComma-separated list of allowed domains (e.g. ’example.com,test.org’).
statusintegernoStatus: 0 = active, 1 = inactive. Allowed values: 0, 1. Default: 0.
anonymizeintegernoAnonymize 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.

FieldTypeRequiredDescription
wrapperidstringyesPublic wrapper identifier.
namestringnoNew wrapper name.
enrolmentdurationintegernoEnrolment duration in days (0 = unlimited). Default: 0.
enrolmentstartdatestringnoEnrolment start date (format: dd-mm-yyyy, 0 = no date).
enrolmentenddatestringnoEnrolment end date (format: dd-mm-yyyy, 0 = no date).
maxenrolledusersintegernoMaximum enrolled users (0 = unlimited, -1 = no change). Default: -1.
domainrestrictionsstringnoComma-separated list of allowed domains (e.g. ’example.com,test.org’).
statusintegernoStatus: 0 = active, 1 = inactive, -1 = no change. Allowed values: -1, 0, 1. Default: -1.
anonymizeintegernoAnonymize 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.

FieldTypeRequiredDescription
wrapperidstringyesPublic 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

NameInTypeRequiredDescription
wrapperidquerystringyesPublic wrapper identifier. Example: "sp-abc123xyz789".
useridqueryintegernoMoodle 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

NameInTypeRequiredDescription
fromquerystringyesStart date (format: DD-MM-YYYY).
tillquerystringyesEnd date (format: DD-MM-YYYY).
wrapperidquerystringnoPublic 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

Last updated on