English
English
Appearance
English
English
Appearance
In the context of LTI 1.3, SkillsTown acts as the Tool, and the customer acts as the Platform. This page outlines the request flow.
This flow should be followed if SkillsTown's courses will be implemented in your platform.
As step one, the Platform will call the login URL: https://account.onlineacademy.nl/api/ltiTool/OnGetOrPost.
Through this request we expect to receive the following parameters: iss and / or client_id, login_hint, target_link_uri, lti_message_hint
| Parameter | Value |
|---|---|
| client_id | 71bafed5-5db8-483a-bc91-0531e651e57d |
| iss | https://issuer.example.com/ |
| login_hint | 12345 |
| target_link_uri | https://account.onlineacademy.nl/api/ltiTool/ToolLaunch |
| lti_message_hint | { "course_version_id": xxxxx, "deployment_id": "efbd32f9-2461-4be8-9ca4-d9cbf2367cca", "test": false, "messageType": "LtiResourceLinkRequest", "company_name": "Example Company", "content_version": 9, "course_type": "6", "culture": "en-GB" } |
GET or POST
If you call this endpoint using a GET method, these parameters should be included as query parameters. If you use a POST method, these values should be in the request body.
Using the values received through our Authorization endpoint, we will send a request to the provided authorization URL with the following query parameters:
| Parameter | Value |
|---|---|
| client_id | 71bafed5-5db8-483a-bc91-0531e651e57d |
| iss | https://account.onlineacademy.nl |
| response_type | id_token |
| scope | openid profile email |
| redirect_uri | https://account.onlineacademy.nl/api/ltiTool/ToolLaunch |
| state | b4523079761ad690228256c7909f0d140d89b8aedbb04c8685254 |
| nonce | 1ae28c4dff14531eaf5a82db859e526ead88a83db05deb9c7ff43f81 |
| login_hint | [User id] |
| prompt | none |
| response_mode | form_post |
| lti_message_hint | { "course_version_id": xxxxx, "deployment_id": "efbd32f9-2461-4be8-9ca4-d9cbf2367cca", "test": false, "messageType": "LtiResourceLinkRequest", "company_name": "Example Company", "content_version": 9, "course_type": "6", "culture": "en-GB" } |
The Platform can now construct the JWT token and redirect to https://account.onlineacademy.nl/api/ltiTool/ToolLaunch, adding the JWT token in the payload.
Through the provided Keyset URL we will validate the token.
The following is an example object with mandatory items, which needs to be included as JWT in the payload:
{
"nbf": 1719477033,
"exp": 1719477333,
"iss": "https://issuer.example.com",
"name": "John Doe",
"given_name": "John",
"family_name": "Doe",
"email": "user@example.com",
"aud": "Example Company",
"nonce": "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
"iat": 1719477033,
"sid": "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
"sub": "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
"auth_time": 1719402633,
"idp": "local",
"https://purl.imsglobal.org/spec/lti-ags/claim/endpoint": {
"scope": [
"https://purl.imsglobal.org/spec/lti-ags/scope/lineitem",
"https://purl.imsglobal.org/spec/lti-ags/scope/lineitem.readonly",
"https://purl.imsglobal.org/spec/lti-ags/scope/result.readonly",
"https://purl.imsglobal.org/spec/lti-ags/scope/score"
],
"lineitems": "https://example.com/scores",
"lineitem": "https://example.com/scores"
},
"https://purl.imsglobal.org/spec/lti/claim/deployment_id": "XXXX-Course-Identifier_XXXX",
"https://purl.imsglobal.org/spec/lti/claim/custom": {
"course_identifier": "XXXX-Course-Identifier_XXXX"
}
}course_identifier
We expect to receive a course_identifier parameter as a custom claim to link the correct course.
The course should now be visible in the platform.
Whenever the user leaves the active window, our Tool will send out a POST request to the lineitem URL provided to us in the ToolLaunch JWT token. If the lineitem isn't available, it will use the lineitems value.
{
"activityProgress": "InProgress",
"gradingProgress": "Pending",
"scoreGiven": 0.2,
"scoreMaximum": 1,
"timestamp": "YYYY-MM-DDTHH:MM:SS.MS\u002B00:00",
"userId": "12345"
}{
"activityProgress": "Completed",
"gradingProgress": "FullyGraded",
"scoreGiven": 1,
"scoreMaximum": 1,
"timestamp": "YYYY-MM-DDTHH:MM:SS.MS\u002B00:00",
"userId": "12345"
}