English
English
Appearance
English
English
Appearance
In the context of LTI 1.3, SkillsTown acts as the Platform, and the customer acts as the Tool. This page outlines the request flow.
This flow should be followed if your courses will be implemented in Inspire.
As step one, the Platform (SkillsTown) will call the provided login URL using POST.
Through this request we send out the following parameters: iss, client_id, login_hint, target_link_uri and lti_message_hint
| Parameter | Value |
|---|---|
| iss | https://account.onlineacademy.nl |
| target_link_uri | https://example.com/launch/ |
| login_hint | 12345 |
| client_id | 71bafed5-5db8-483a-bc91-0531e651e57d |
| lti_deployment_id | f800ca6c-a62f-4248-bfaf-fe327381169a |
| lti_message_hint | {"course_id":"xxxxx","course_version_id":xxxxx,"deployment_id":"f800ca6c-a62f-4248-bfaf-fe327381169a","test":false,"messageType":"LtiResourceLinkRequest","company_name":"Example Company","content_version":null,"course_type":"1","culture":"nl-NL"} |
These values will be added in the request body.
SkillsTown will expect a request to the Authorization URL https://account.onlineacademy.nl/connect/authorize with the following query parameters:
| Parameter | Value |
|---|---|
| client_id | 71bafed5-5db8-483a-bc91-0531e651e57d |
| iss | https://issuer.example.com/ |
| response_type | id_token |
| scope | openid profile email |
| redirect_uri | https://example.com/launch |
| state | b4523079761ad690228256c7909f0d140d89b8aedbb04c8685254 |
| nonce | 1ae28c4dff14531eaf5a82db859e526ead88a83db05deb9c7ff43f81 |
| login_hint | [User id] |
| prompt | none |
| response_mode | form_post |
| lti_message_hint | {"course_id":"xxxxx","course_version_id":xxxxx,"deployment_id":"f800ca6c-a62f-4248-bfaf-fe327381169a","test":false,"messageType":"LtiResourceLinkRequest","company_name":"Example Company","content_version":null,"course_type":"1","culture":"nl-NL"} |
The Platform will then construct the JWT token and redirect to the provided Tool URL, adding the JWT token in the payload.
The following is an example object which we'll send as JWT in the payload:
{
"nbf": 1719477033,
"exp": 1719477333,
"iss": "https://account.onlineacademy.nl",
"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://api.onlineacademy.nl/catalog/v1/lti-results/course-version/XXXXX/scores",
"lineitem": "https://api.onlineacademy.nl/catalog/v1/lti-results/course-version/XXXXX/scores"
},
"https://purl.imsglobal.org/spec/lti/claim/custom": {
"course_id": "XXXX-Course-Identifier_XXXX"
}
}Next to course_id, Inspire also supports deployment_id, id and target_link_uri as course ID parameters. The course ID will then be provided in the JWT as follows:
deployment_id:
"https://purl.imsglobal.org/spec/lti/claim/deployment_id":
"XXXX-Course-Identifier_XXXX",
id:
"https://purl.imsglobal.org/spec/lti/claim/custom": {
"id": "XXXX-Course-Identifier_XXXX"
}
target_link_uri:
"https://purl.imsglobal.org/spec/lti/claim/target_link_uri":
"https://example.com/lti/provide/course/12345"The course should now be visible in the platform.
Whenever the user makes progress, we expect the Tool to send out a POST request to the lineitem URL provided in the ToolLaunch JWT token.
{
"activityProgress": "InProgress",
"scoreGiven": 0.2,
"scoreMaximum": 1,
"timestamp": "YYYY-MM-DDTHH:MM:SS.MS\u002B00:00",
"userId": "12345"
}{
"activityProgress": "Completed",
"scoreGiven": 1,
"scoreMaximum": 1,
"timestamp": "YYYY-MM-DDTHH:MM:SS.MS\u002B00:00",
"userId": "12345"
}