/process
This endpoint enables you to process learning traces by transforming them into standardized formats and protecting sensitive personal data.
Send your learning traces to this endpoint to:
Convert them into standard formats for better interoperability
Automatically protect sensitive personal data
Prepare them for analytics and sharing
Making a Request
POST /process
Content-Type: application/json
Body parameters
Parameter | Type | Required | Description |
---|---|---|---|
data | object | Yes | Your trace data |
Query Parameters
This endpoint does not require any query parameter.
Response
Response parameters
Parameter | Type | Description |
---|---|---|
output_trace | object | The processed trace, standardized and anonymized |
recommendations | object | List of suggestions to improve trace quality |
meta | object | Processing metadata including formats and detected DASES profile |
recommendations Object Details
Parameter | Type | Description |
---|---|---|
rule | string | Type of check performed (e.g., "presence", "absence") |
path | string | JSON path to the concerned field |
expected | string | What should be ("included", "excluded", list of values) |
actual | string | Current state found ("missing", "present", list of values) |
meta Object Details
Field | Type | Description |
---|---|---|
input_format | string | Detected format of the original trace |
output_format | string | Format after processing (currently always "xapi") |
profile | string | Detected DASES profile (e.g., "lms.accessed-page", "assessment.completed") indicating the type of learning activity |
How-to Guide
Getting Started
Send your learning traces in their native format
Let the API handle format detection and standardization
Use recommendations to improve data quality
Supported input formats:
xAPI
IMS Caliper 1.1/1.2
SCORM 2004
Custom formats (with mapping file)
Best Practices
Keep original identifiers and timestamps
Include activity context when available
Monitor recommendations for data quality improvements
Common Applications
Cross-platform learning analytics
Secure data sharing between organizations
Compliance reporting
Learning pattern analysis
Exemples
xAPI exemple
Request
curl --request POST \
--url http://trace-processor.localhost/process \
--header 'Content-Type: application/json' \
--data '{
"data": {
"timestamp": "2024-03-11T14:17:32.814Z",
"id": "d4618c23-d612-4709-8d9a-478d87808067",
"actor": {
"account": {
"homePage": "https://example.edu/",
"name": "554433"
},
"objectType": "Agent"
},
"verb": {
"id": "https://activitystrea.ms/schema/1.0/access",
"display": {
"en-US": "Accessed"
}
},
"object": {
"id": "https://example.com/activity/unique_id",
"objectType": "Activity",
"definition": {
"name": {
"en-US": "1EdTech Caliper Implementation Guide, pg 5"
},
"description": {
"en-US": "No description provided"
},
"type": "https://w3id.org/xapi/acrossx/activities/webpage",
"extensions": {
"https://w3id.org/xapi/acrossx/extensions/type": "course"
}
}
},
"context": {
"contextActivities": {
"category": {
"id": "https://toto.org
"category": {
"id": "https://toto.org",
"definition": {
"type": "http://tata.org"
}
}
}
}
}
}'
Response
{
"outputtrace": {
"timestamp": "2024-03-11T14:17:32.814Z",
"id": "d4618c23-d612-4709-8d9a-478d87808067",
"actor": {
"account": {
"homePage": "https://anonymous.org",
"name": "Anonymous"
},
"objectType": "Agent"
},
"verb": {
"id": "https://w3id.org/xapi/netc/verbs/accessed",
"display": {
"en-US": "Accessed a page"
}
},
"object": {
"id": "https://example.com/activity/uniqueid",
"objectType": "Activity",
"definition": {
"name": {
"en-US": "1EdTech Caliper Implementation Guide, pg 5"
},
"description": {
"en-US": "No description provided"
},
"type": "https://w3id.org/xapi/acrossx/activities/webpage",
"extensions": {
"https://w3id.org/xapi/acrossx/extensions/type": "course"
}
}
},
"context": {
"contextActivities": {
"category": [
{
"id": "https://toto.org",
"definition": {
"type": "http://tata.org"
}
},
{
"id": "https://w3id.org/xapi/lms",
"definition": {
"type": "http://adlnet.gov/expapi/activities/profile"
}
}
]
}
},
"version": "1.0.0"
},
"recommendations": [
{
"rule": "presence",
"path": "$.context.extensions['https://w3id.org/xapi/cmi5/context/extensions/sessionid']",
"expected": "included",
"actual": "missing"
}
],
"meta": {
"inputformat": "xapi",
"outputformat": "xapi",
"profile": "lms.accessed-page"
}
}
What happened?
In this example, the API:
Detected the input format as xAPI
Anonymized the actor's information
Added the DASES LMS profile to indicate the type of learning activity
Standardized the data according to the DASES profile
Generated recommendations for improving trace quality
IMS Caliper exemple
Request
curl --request POST \
--url /process \
--header 'Content-Type: application/json' \
--data '{
"data": {
"sensor": "http://oxana.instructure.com/",
"sendTime": "2019-11-16T02:08:51.787Z",
"dataVersion": "http://purl.imsglobal.org/ctx/caliper/v1p2",
"data": [
{
"@context": "http://purl.imsglobal.org/ctx/caliper/v1p2",
"id": "urn:uuid:e5891791-3d27-4df1-a272-091a6b9f9076",
"type": "ResourceManagementEvent",
"actor": {
"id": "https://example.edu/users/554433",
"type": "Person"
},
"action": "Downloaded",
"object": {
"id": "https://example.edu/files/experimentdata20240712.csv",
"type": "DigitalResource",
"name": "Quantum Experiment Raw Data",
"dateCreated": "2024-07-12T09:30:00.000Z",
"dateModified": "2024-07-12T09:30:00.000Z",
"mediaType": "text/csv",
"fileFormat": "text/csv",
"creator": {
"id": "https://example.edu/devices/quantumcomputer01",
"type": "Device",
"name": "Quantum Computer Lab 01"
},
"isPartOf": {
"id": "https://example.edu/courses/PHY301/experiment_data",
"type": "DigitalResourceCollection",
"name": "PHY301 Experiment Data Files"
}
},
"eventTime": "2024-07-12T17:45:00.000Z",
"edApp": {
"id": "https://example.edu/apps/dataRepository",
"type": "SoftwareApplication",
"version": "3.2"
},
"group": {
"id": "https://example.edu/terms/202401/courses/PHY301",
"type": "CourseOffering",
"courseNumber": "PHY301",
"name": "Advanced Quantum Mechanics"
},
"membership": {
"id": "https://example.edu/terms/202401/courses/PHY301/members/554433",
"type": "Membership",
"member": "https://example.edu/users/554433",
"organization": "https://example.edu/terms/202401/courses/PHY301",
"roles": [
"Learner"
],
"status": "Active"
},
"session": {
"id": "https://example.edu/sessions/9ceb1b8a-5bd4-4ef0-9365-4f21bf6bf29a",
"type": "Session"
},
"extensions": {
"downloadDetails": {
"fileSize": "15678901",
"downloadSpeed": "4.2 MB/s",
"downloadLocation": "C:/Users/student/Documents/ExperimentData/",
"dataPoints": 100000
}
}
}
]
}
}'
Response
{
"outputtrace": {
"id": "e5891791-3d27-4df1-a272-091a6b9f9076",
"actor": {
"account": {
"homePage": "https://anonymous.org",
"name": "Anonymous"
},
"objectType": "Agent"
},
"verb": {
"id": "http://id.tincanapi.com/verb/downloaded",
"display": {
"en-US": "Downloaded a file"
}
},
"object": {
"id": "https://example.edu/files/experimentdata20240712.csv",
"objectType": "Activity",
"definition": {
"name": {
"en-US": "Quantum Experiment Raw Data"
},
"description": {
"en-US": "No description provided"
},
"extensions": {
"http://oxana.instructure.com/imscaliper/object": {
"type": "DigitalResource",
"dateCreated": "2024-07-12T09:30:00.000Z",
"dateModified": "2024-07-12T09:30:00.000Z",
"mediaType": "text/csv",
"fileFormat": "text/csv",
"creator": {
"id": "https://example.edu/devices/quantumcomputer01",
"type": "Device",
"name": "Quantum Computer Lab 01"
},
"isPartOf": {
"id": "https://example.edu/courses/PHY301/experimentdata",
"type": "DigitalResourceCollection",
"name": "PHY301 Experiment Data Files"
}
}
},
"type": "http://activitystrea.ms/file"
}
},
"context": {
"contextActivities": {
"grouping": {
"id": "https://example.edu/terms/202401/courses/PHY301",
"objectType": "Activity"
},
"category": [
{
"id": "https://w3id.org/xapi/lms",
"definition": {
"type": "http://adlnet.gov/expapi/activities/profile"
}
}
]
},
"platform": "https://example.edu/apps/dataRepository",
"extensions": {
"http://oxana.instructure.com/imscaliper/type": "ResourceManagementEvent",
"http://oxana.instructure.com/imscaliper/actor": {
"type": "Person"
},
"http://oxana.instructure.com/imscaliper/group": {
"type": "CourseOffering",
"courseNumber": "PHY301",
"name": "Advanced Quantum
Mechanics"
},
"http://oxana.instructure.com/imscaliper/session": {
"id": "https://example.edu/sessions/9ceb1b8a-5bd4-4ef0-9365-4f21bf6bf29a",
"type": "Session"
},
"http://oxana.instructure.com/imscaliper/edApp": {
"type": "SoftwareApplication",
"version": "3.2"
},
"http://oxana.instructure.com/imscaliper/membership": {
"id": "https://example.edu/terms/202401/courses/PHY301/members/554433",
"type": "Membership",
"member": "https://example.edu/users/554433",
"organization": "https://example.edu/terms/202401/courses/PHY301",
"roles": [
"Learner"
],
"status": "Active"
}
}
},
"timestamp": "2024-07-12T17:45:00.000Z",
"version": "1.0.0"
},
"recommendations": [
{
"rule": "presence",
"path": "$.object.definition.extensions['https://w3id.org/xapi/acrossx/extensions/type']",
"expected": "included",
"actual": "missing"
}
],
"meta": {
"inputformat": "imscaliper12",
"output_format": "xapi",
"profile": "lms.downloaded-file"
}
}
What happened?
In this example, the API:
Converted IMS Caliper format to xAPI format
Mapped key fields ("action", "actor", "object", etc.) and anonymized them
Preserved context information like course and session data
Identified the activity as a file download in an LMS context
Generated recommendations for improving trace quality
Status codes
Status Code | Description | Possible Causes |
---|---|---|
200 | Success | Request processed successfully |
400 | Bad Request | Invalid input format, malformed JSON |
422 | Validation Error | Input data validation failed |
500 | Internal Server Error | Processing error, service unavailable |