Contact Us Support Forum Get Email Updates
 
 

Thanks! Someone will be in touch with you shortly.

Rather just email us? Email us here.
Rather speak with someone in person?
Call any time with Tin Can questions:

866.497.2676


SCORM to Tin Can API Cookbook

We’ve put together the SCORM to Tin Can Cookbook in order to help out those of you that want to use SCORM content in a Tin Can environment. You need to send Tin Can statements based off of the events that occur in the SCORM data model, and there are a few ways to do that. Here are some SCORM data samples and how we recommend representing them with Tin Can statements. If you have any questions about these, please get in touch with us. We love talking to people about Tin Can.

ADL’s SCORM Profile

This SCORM to Tin Can API cookbook has been available for a while and has been followed by many authoring tools and content vendors. You’ll find the cookbook helpful, but you may find you want a little more detail. ADL are working on a SCORM Profile that’s a much more detailed version of this cookbook. The ADL SCORM profile is not complete yet, but is still a helpful reference alongside this cookbook.

SCORM Scenarios

Interaction Data

The result object is included on some of these samples to show it is not required, but can be used to present more data from the action.

Bookmarking and SuspendData

Bookmarking and SuspendData can be handled with TinCan State API. This is a key/value database that can store these values and more.
 

Record attempt but not completion

{
    "actor": {
        "mbox": "mailto:user@example.com",
        "name": "Joe User",
        "objectType": "Agent"
    },
    "verb": {
        "id": "http://adlnet.gov/expapi/verbs/attempted",
        "display": {
            "en-US": "attempted"
        }
    },
    "object": {
        "id": "http://www.example.com/tincan/activities/sqyCkLBd",
        "objectType": "Activity",
        "definition": {
            "name": {
                "en-US": "Example Activity"
            },
            "description": {
                "en-US": "Example activity definition"
            }
        }
    }
}

 
Back to top ▲

Record completion with no score or pass/fail

{
    "actor": {
        "mbox": "mailto:user@example.com",
        "name": "Joe User",
        "objectType": "Agent"
    },
    "verb": {
        "id": "http://adlnet.gov/expapi/verbs/completed",
        "display": {
            "en-US": "completed"
        }
    },
    "result": {
        "completion": true,
        "duration": "PT0H0M2S"
    },
    "object": {
        "id": "http://www.example.com/tincan/activities/sqyCkLBd",
        "objectType": "Activity",
        "definition": {
            "name": {
                "en-US": "Example Activity"
            },
            "description": {
                "en-US": "Example activity definition"
            }
        }
    }
}

 
Back to top ▲

Record completion with score

{
    "actor": {
        "mbox": "mailto:user@example.com",
        "name": "Joe User",
        "objectType": "Agent"
    },
    "verb": {
        "id": "http://adlnet.gov/expapi/verbs/completed",
        "display": {
            "en-US": "completed"
        }
    },
    "result": {
        "completion": true,
        "score": {
            "scaled": 0.75,
            "raw": 75,
            "min": 0,
            "max": 100
        },
        "duration": "PT0H5M2S"
    },
    "object": {
        "id": "http://www.example.com/tincan/activities/sqyCkLBd",
        "objectType": "Activity",
        "definition": {
            "name": {
                "en-US": "Example Activity"
            },
            "description": {
                "en-US": "Example activity definition"
            }
        }
    }
}

 
Back to top ▲

Record passing with score

{
    "actor": {
        "mbox": "mailto:user@example.com",
        "name": "Joe User",
        "objectType": "Agent"
    },
    "verb": {
        "id": "http://adlnet.gov/expapi/verbs/completed",
        "display": {
            "en-US": "completed"
        }
    },
    "result": {
        "completion": true,
        "success": true,
        "score": {
            "scaled": 0.9,
            "raw": 90,
            "min": 0,
            "max": 100
        },
        "duration": "PT0H5M2S"
    },
    "object": {
        "id": "http://www.example.com/tincan/activities/sqyCkLBd",
        "objectType": "Activity",
        "definition": {
            "name": {
                "en-US": "Example Activity"
            },
            "description": {
                "en-US": "Example activity definition"
            }
        }
    }
}

 
Back to top ▲

Record fail with score

{
    "actor": {
        "mbox": "mailto:user@example.com",
        "name": "Joe User",
        "objectType": "Agent"
    },
    "verb": {
        "id": "http://adlnet.gov/expapi/verbs/completed",
        "display": {
            "en-US": "completed"
        }
    },
    "result": {
        "completion": true,
        "success": false,
        "score": {
            "scaled": 0.3,
            "raw": 30,
            "min": 0,
            "max": 100
        },
        "duration": "PT0H5M2S"
    },
    "object": {
        "id": "http://www.example.com/tincan/activities/sqyCkLBd",
        "objectType": "Activity",
        "definition": {
            "name": {
                "en-US": "Example Activity"
            },
            "description": {
                "en-US": "Example activity definition"
            }
        }
    }
}

 
Back to top ▲

True/False

{
    "actor": {
        "mbox": "mailto:user@example.com",
        "name": "Joe User",
        "objectType": "Agent"
    },
    "verb": {
        "id": "http://adlnet.gov/expapi/verbs/answered",
        "display": {
            "en-US": "answered"
        }
    },
    "result": {
        "success": true,
        "duration": "PT0H0M3S",
        "response": "true"
    },
    "object": {
        "id": "http://www.example.com/tincan/activities/uyheHUJd76s/question1",
        "objectType": "Activity",
        "definition": {
            "name": {"en-US":"Question 1"},
            "description": {"en-US":"Does the TCAPI include the concept of statements?"},
            "type": "http://adlnet.gov/expapi/activities/cmi.interaction",
            "interactionType": "true-false",
            "correctResponsesPattern": ["true"]
        }
    }
}

 
Back to top ▲

Choice

{
    "actor": {
        "mbox": "mailto:user@example.com",
        "name": "Joe User",
        "objectType": "Agent"
    },
    "verb": {
        "id": "http://adlnet.gov/expapi/verbs/answered",
        "display": {
            "en-US": "answered"
        }
    },
    "result": {
        "success": true,
        "duration": "PT0H0M3S",
        "response": "golf"
    },
    "object": {
        "id": "http://www.example.com/tincan/activities/uyheHUJd76s/question2",
        "objectType": "Activity",
        "definition": {
	        "name": {"en-US": "Question 2"},
            "description": {"en-US": "Which of these prototypes are available at the beta site?"},
            "type": "http://adlnet.gov/expapi/activities/cmi.interaction",
            "interactionType": "choice",
            "correctResponsesPattern": ["golf[,]tetris"],
            "choices": [
                {"id": "golf", "description": {"en-US": "Golf Example"}},
                {"id": "facebook", "description": {"en-US": "Facebook App"}},
                {"id": "tetris", "description": {"en-US": "Tetris Example"}},
                {"id": "scrabble", "description": {"en-US": "Scrabble Example"}}
            ]
        }
    }
}

 
Back to top ▲

Fill-in

{
    "actor": {
        "mbox": "mailto:user@example.com",
        "name": "Joe User",
        "objectType": "Agent"
    },
    "verb": {
        "id": "http://adlnet.gov/expapi/verbs/answered",
        "display": {
            "en-US": "answered"
        }
    },
    "object": {
        "id": "http://www.example.com/tincan/activities/uyheHUJd76s/question3",
        "objectType": "Activity",
        "definition": {
            "name": {"en-US": "Question 3"},
            "description": {"en-US": "Ben is often heard saying: "},
            "type": "http://adlnet.gov/expapi/activities/cmi.interaction",
            "interactionType": "fill-in",
            "correctResponsesPattern": ["Bob’s your uncle"]
        }
    }
}

 
Back to top ▲

Likert

{
    "actor": {
        "mbox": "mailto:user@example.com",
        "name": "Joe User",
        "objectType": "Agent"
    },
    "verb": {
        "id": "http://adlnet.gov/expapi/verbs/answered",
        "display": {
            "en-US": "answered"
        }
    },
    "object": {
        "id": "http://www.example.com/tincan/activities/uyheHUJd76s/question3",
        "objectType": "Activity",
        "definition": {
            "name": {"en-US": "Question 3"},
            "description": {"en-US": "How awesome is Tin Can?"},
            "type": "http://adlnet.gov/expapi/activities/cmi.interaction",
            "interactionType": "likert",
            "correctResponsesPattern": ["likert_3"],
            "scale": [
                {"id": "likert_0", "description": {"en-US": "It’s OK"}},
                {"id": "likert_1", "description": {"en-US": "It’s Pretty Cool"}},
                {"id": "likert_2", "description": {"en-US": "It’s Damn Cool"}},
                {"id": "likert_3", "description": {"en-US": "It’s Gonna Change the World"}}
            ]
        }
    }
}

 
Back to top ▲

Matching

{
    "actor": {
        "mbox": "mailto:user@example.com",
        "name": "Joe User",
        "objectType": "Agent"
    },
    "verb": {
        "id": "http://adlnet.gov/expapi/verbs/answered",
        "display": {
            "en-US": "answered"
        }
    },
    "object": {
        "id": "http://www.example.com/tincan/activities/uyheHUJd76s/question4",
        "objectType": "Activity",
        "definition":{
            "name":{"en-US":"Question 4"},
            "description":{"en-US":"Match these people to their kickball team:"},
            "type":"http://adlnet.gov/expapi/activities/cmi.interaction",
            "interactionType":"matching",
            "correctResponsesPattern":[
                "ben[.]3[,]chris[.]2[,]troy[.]4[,]freddie[.]1"
            ],
            "source":[
                 {
                     "id":"ben",
                     "description":{"en-US":"Ben"}
                 },
                 {
                     "id":"chris",
                     "description":{"en-US":"Chris"}
                 },
                 {
                     "id":"troy",
                     "description":{"en-US":"Troy"}
                 },
                 {
                     "id":"freddie",
                     "description":{"en-US":"Freddie"}
                 }
            ],
            "target":[
                {
                    "id":"1",
                    "description":{"en-US":"SCORM Engine"}
                },
                {
                    "id":"2",
                    "description":{"en-US":"Pure-sewage"}
                 },
                 {
                    "id":"3",
                    "description":{"en-US":"Project Tin Can"}
                 },
                 {
                     "id":"4",
                     "description":{"en-US":"SCORM Cloud"}
                 }
            ]
        }
    }
}

 
Back to top ▲

Performance

{
    "actor": {
        "mbox": "mailto:user@example.com",
        "name": "Joe User",
        "objectType": "Agent"
    },
    "verb": {
        "id": "http://adlnet.gov/expapi/verbs/answered",
        "display": {
            "en-US": "answered"
        }
    },
    "object": {
        "id": "http://www.example.com/tincan/activities/uyheHUJd76s/question5",
        "objectType": "Activity",
        "definition": {
            "name": {"en-US": "Question 5"},
            "description": {"en-US": "This interaction measures performance over a day of RS sports:"},
            "type": "http://adlnet.gov/expapi/activities/cmi.interaction",
            "interactionType": "performance",
            "correctResponsesPattern": ["pong[.]1:[,]dg[.]:10[,]lunch[.]"],
            "steps": [
                  {"id": "pong", "description": {"en-US": "Net pong matches won"}},
                  {"id": "dg", "description": {"en-US": "Strokes over par in disc golf at Liberty"}},
                  {"id": "lunch", "description": {"en-US": "Lunch having been eaten"}}
             ]
         }
    }
}

 
Back to top ▲

Sequencing

{
    "actor": {
        "mbox": "mailto:user@example.com",
        "name": "Joe User",
        "objectType": "Agent"
    },
    "verb": {
        "id": "http://adlnet.gov/expapi/verbs/answered",
        "display": {
            "en-US": "answered"
        }
    },
    "object": {
        "id": "http://www.example.com/tincan/activities/uyheHUJd76s/question6",
        "objectType": "Activity",
        "definition": {
            "name": {"en-US": "Question 6"},
            "description": {"en-US": "Order players by their pong ladder position:"},
            "type": "http://adlnet.gov/expapi/activities/cmi.interaction",
            "interactionType": "sequencing",
            "correctResponsesPattern": ["tim[,]mike[,]ells[,]ben"],
            "choices": [
                {"id": "tim", "description": {"en-US": "Tim"}},
                {"id": "ben", "description": {"en-US": "Ben"}},
                {"id": "ells", "description": {"en-US": "Ells"}},
                {"id": "mike", "description": {"en-US": "Mike"}}
            ]
        }
    }
}

 
Back to top ▲

Numeric

{
    "actor": {
        "mbox": "mailto:user@example.com",
        "name": "Joe User",
        "objectType": "Agent"
    },
    "verb": {
        "id": "http://adlnet.gov/expapi/verbs/answered",
        "display": {
            "en-US": "answered"
        }
    },
    "object": {
        "id": "http://www.example.com/tincan/activities/uyheHUJd76s/question7",
        "objectType": "Activity",
        "definition": {
            "name": {"en-US": "Question 7"},
            "description": {"en-US": "How many jokes is Chris the butt of each day?"},
            "type": "http://adlnet.gov/expapi/activities/cmi.interaction",
            "interactionType": "numeric",
            "correctResponsesPattern": ["4:"]
        }
    }
}

 
Back to top ▲

Other

{
    "actor": {
        "mbox": "mailto:user@example.com",
        "name": "Joe User",
        "objectType": "Agent"
    },
    "verb": {
        "id": "http://adlnet.gov/expapi/verbs/answered",
        "display": {
            "en-US": "answered"
        }
    },
    "object": {
        "id": "http://www.example.com/tincan/activities/uyheHUJd76s/question8",
        "objectType": "Activity",
        "definition": {
            "name": {"en-US": "Question 8"},
            "description": {"en-US": "On this map, please mark Franklin, TN"},
            "type": "http://adlnet.gov/expapi/activities/cmi.interaction",
            "interactionType": "other",
            "correctResponsesPattern": ["(35.937432,-86.868896)"]
        }
    }
}

 
Back to top ▲


Tin Can API Email Updates

* indicates required

Tin Can API Email Updates

Thanks for signing up for the Tin Can API newsletter!

Make sure to follow us on Twitter @ProjectTinCan,
and tweet this page to let others know about the Tin Can API.

Close