Welcome to MIT’s MC3 Handcar Learning service.
Example #1 Get a list of all objective banks
Example #2 Get the details of a particular objective bank
Looking up objects within a bank
Example #1 Finding all objectives within a bank
Example #2 Finding all activities within a bank
Example #3 Finding all assets tied to a bank
Example #1 Finding all the allowed objective types
Example #2 Finding the scaling system (Bloom’s Taxonomy) used to categorize the objectives
Example #3 Finding all the activity types
Example #4 Finding all the asset types
Example #5 Finding all the asset content (mime) types
Administration (Creating, Updating and Deleting Objective Banks)
Example #1 Finding all TOPIC objectives within a bank
Example #2 Finding all OUTCOME objectives within a bank
Example #3 Finding an objective by id within a bank
Example #4 Finding an objective by id without knowing it’s bank
Example #5 Bulk fetching lots of objectives by id
Looking up objectives in a hierarchy
Example #1 Finding the root objectives or just the root ids in the hierarchy
Example #2 Finding an objective’s children or just the ids of it’s children
Example #3 Finding an objective’s parent(s) or just the ids of it’s parent(s)
Looking up requisite and dependent objectives
Example #1 Finding the beginner objectives or just the beginner ids for the bank
Example #2 Finding an objective’s immediately preceding requisite objectives
Example #3 Finding the objectives that are immediately dependent on a particular objective
Administration (Creating, Updating, Deleting) TODO
Looking up related objects TODO
Administration (Creating, Updating, Deleting) TODO
Looking up related objects TODO
Administration (Creating, Updating, Deleting) TODO
Appendix I - Summary of All URLs
This learning service supports a restful JSON interface to the MC3 system's learning objectives.
Handcar uses Moxy to serialize the objects into JSON.
Handcar is currently released in BETA mode.
Some features and methods are not implemented or may throw unexpected exceptions.
Please let us know if you have any problems by contacting us at XXXXX[a]
Detailed documentation on all of the methods and data elements is contained in “Contract Docs” which fully explain the contract.
See https://oki-dev.mit.edu/handcar/contractdocs/
All data is organized into what are called objective banks. Right now we have two such banks, one for Crosslinks and one for ChemBridge. These are two projects where MIT professors mapped the concepts of their respective domains. MC3 is a federated system so we can add in objectives from other sources easily. Later we will be adding additional banks from within and outside of MIT.
https://oki-dev.mit.edu/handcar/services/learning/objectivebanks
https://oki-dev.mit.edu/handcar/services/learning/objectivebanks/objectivebank%3A1%40MIT-OEIT
Banks contain three main types of objects:
Additionally there are configuration “types” and “grade scales” used to organize and categorize these three main objects.
For a detailed description of each of these objects and data fields see the Contract Documentation
https://oki-dev.mit.edu/handcar/services/learning/objectivebanks/objectivebank%3A1%40MIT-OEIT/assets
Each bank is designed to be configured to support different categorization schemes and types.
As mentioned above objectives come in two different varieties or genus types: TOPIC and OUTCOMES and the default categorization scheme uses Bloom’s taxonomy.
Should return two types, one for TOPIC and OUTCOME
Note: in the literature this is called the “Cognitive Process” scale see this handout from Iowa State University.
Note: BUG #77 this method currently fails
Note: Right now there is only one activity type supported it is an ASSET BASED ACTIVITY that can be tied to just one asset and that asset can have just one asset content holding the URL.
Note: Right now there is only one asset type is supported it is an asset that points to a URL.
Note: There is a special type for UNKNOWN FORMAT TYPE. that you can use if you don’t know the mime type of the asset.
Note: the list returned right now is NOT complete. It just contains TEXT based format types, we will very siib be adding in types, like MPG for movings and JPG for sound.
The administration of Objective banks is not supported via Handcar at this time.
Later we plan on supporting operations where you can define a new bank, configure it and start using it.
POST |
{objectiveBankBean} to handcar/services/learning/objectivebanks |
Creates an objective bank |
Not implemented |
PUT |
{objectiveBankBean} to handcar/services/learning/objectivebanks |
Updates an objective bank |
Not implemented |
DELETE |
handcar/services/learning/objectivebanks/{objectiveBankId} |
Delete an Objective Bank |
Not implemented |
Objectives come in two types: TOPICs and OUTCOMEs.
You can also find an objective (given an Id even if you do not know the objective bank where it is stored. It is slower because it has to search each supported bank for the specified objective but it works
https://oki-dev.mit.edu/handcar/services/learning/objectives/objective%3A1%40MIT-OEIT
If you have a list of ids for objectives in a bank and you want to fetch them all at once you can do this by specifying BULK in the url then listing the ids as query parameters.
Topics are often nested or organized into a hierarchy so that they have parents and children so that topics may have sub-topics and sub-sub-topics finally ending in specific outcomes. Note: Although this is the typical pattern the model supports outcomes themselves having children.
Note: most objectives have just ONE parent but the contract allows for a topic to fall under multiple parents, for example ROBOTICS might have both COMPUTER SCIENCE and MECHANICAL ENGINEERING as parents.
Objectives can also be organized into chains of pre-REQUISITES. These are objectives that typically must be mastered before attempting to master the current objective.
These are just the objectives in the bank that do not have any REQUISITE objectives defined.
For example: Anti-derivative has three requisites: Function, Derivative, and Differential
Handcar only supports a handful of methods that perform searches across multiple objective banks.
Method |
URL |
Description |
GET |
services/learning |
Gets a usage message |
GET |
handcar/services/learning/objectivebanks |
Get a list of all objective banks |
GET |
handcar/services/learning/objectivebanks/{objectiveBankId} |
Get a particular objective bank by id |
GET |
handcar/services/learning/objectivebanks/{objectiveBankId}/extension |
Fetch a particular objective bank's extension record |
GET |
handcar/services/learning/objectivebanks/{objectiveBankId}/branding |
Fetch a particular objective bank's branding information |
GET |
handcar/services/learning/objectivebanks/{objectiveBankId}/objectives
also can optionally take one or more types as query parameters:
handcar/services/learning/objectivebanks/{objectiveBankId}/objectives?genusTypeId={genusTypeId}
or
handcar/services/learning/objectivebanks/{objectiveBankId}/objectives?genusTypeId={genusTypeId1}&genusTypeId={genusTypeId2} |
Gets a list of all the objectives in the specified bank, optionally restricted by genus type |
GET |
handcar/services/learning/objectivebanks/{objectiveBankId}/objectives/{objectiveId} |
Fetch a particular objective from a bank |
GET |
handcar/services/learning/objectives/{objectiveId} |
Fetch a particular objective without specifying the bank |
GET |
handcar/services/learning/objectivebanks/{objectiveBankId}/objectives/bulk?id={id1}&id={id2}&id={id3} etc.. |
Bulk fetch a bunch of objectives from a bank given a set of ids |
GET |
handcar/services/learning/objectivebanks/{objectiveBankId}/objectives/{objectiveId}/extension |
Fetch a particular objective's EXTENSION record |
GET |
handcar/services/learning/objectivebanks/{objectiveBankId}/objectives/rootids |
Fetch the root objectives ids in the topic hierarchy for this bank |
GET |
handcar/services/learning/objectivebanks/{objectiveBankId}/objectives/roots |
Fetch the root objectives in the topic hierarchy for this bank |
GET |
handcar/services/learning/objectivebanks/{objectiveBankId}/objectives/{objectiveId}/parentids |
Fetch a particular objective's hierarchy parent ids |
GET |
handcar/services/learning/objectivebanks/{objectiveBankId}/objectives/{objectiveId}/parents |
Fetch a particular objective's hierarchy parents. |
GET |
handcar/services/learning/objectivebanks/{objectiveBankId}/objectives/{objectiveId}/childids |
Fetch a particular objective's hierarchy child ids |
GET |
handcar/services/learning/objectivebanks/{objectiveBankId}/objectives/{objectiveId}/children |
Fetch a particular objective's hierarchy children. |
GET |
handcar/services/learning/objectivebanks/{objectiveBankId}/objectives/beginnerids |
Fetch the beginner objectives ids in this objective bank |
GET |
handcar/services/learning/objectivebanks/{objectiveBankId}/objectives/beginners |
Fetch the beginner objectives in this objective bank |
GET |
handcar/services/learning/objectivebanks/{objectiveBankId}/objectives/{objectiveId}/requisiteids |
Fetch a particular objective's immediate requisite ids |
GET |
handcar/services/learning/objectivebanks/{objectiveBankId}/objectives/{objectiveId}/requisites |
Fetch a particular objective's requisites |
GET |
handcar/services/learning/objectivebanks/{objectiveBankId}/objectives/{objectiveId}/dependentids |
Fetch a particular objective's immediate dependent ids |
GET |
handcar/services/learning/objectivebanks/{objectiveBankId}/objectives/{objectiveId}/dependents |
Fetch a particular objective's dependent objectives |
GET |
handcar/services/learning/objectivebanks/{objectiveBankId}/objectives/{objectiveId}/equivalentids |
Fetch a particular objective's equivalent ids |
GET |
handcar/services/learning/objectivebanks/{objectiveBankId}/objectives/{objectiveId}/equivalents |
Fetch a particular objective's equivalent ids |
GET |
handcar/services/learning/objectivebanks/{objectiveBankId}/objectives/{objectiveId}/otherrelationshipids/{relationshipTypeId} |
Fetch the ids of a particular objective's OTHER RELATIONS of a particular relationship type |
GET |
handcar/services/learning/objectivebanks/{objectiveBankId}/objectives/{objectiveId}/otherrelationships/{relationshipTypeId} |
Fetch a particular objective's OTHER RELATIONS of a particular relationship type |
GET |
handcar/services/learning/objectivebanks/{objectiveBankId}/objectives/{objectiveId}/activityids |
Fetch the ids of the activities associated with an objective |
GET |
handcar/services/learning/objectivebanks/{objectiveBankId}/objectives/{objectiveId}/activities |
Fetches the activities associated with an objective |
GET |
handcar/services/learning/objectivebanks/{objectiveBankId}/activities
or handcar/services/learning/objectivebanks/{objectiveBankId}/activities?genustypeid={genusTypeId}
or handcar/services/learning/objectivebanks/{objectiveBankId}/activities?genusTypeId={genusTypeId1}&genusTypeId={genusTypeId2} |
Gets a list of all the objectives in the specified bank, optionally restricted by genus type |
GET |
handcar/services/learning/objectivebanks/{objectiveBankId}/activities/{activityId} |
Fetch a particular activity in a bank |
GET |
handcar/services/learning/activities/{activityId} |
Fetch a particular activity without specifying the bank |
GET |
handcar/services/learning/objectivebanks/{objectiveBankId}/activities/bulk?id={id1}&id={id2}&id={id3} etc.. |
Bulk fetch a bunch of activities in a bank |
GET |
handcar/services/learning/objectivebanks/{objectiveBankId}/activities/{activityId}/extension |
Fetch a particular activity's EXTENSION record |
GET |
handcar/services/learning/objectivebanks/{objectiveBankId}/activities/{activityId}/assetids |
Fetch the ids of the assets associated with an activity |
GET |
handcar/services/learning/objectivebanks/{objectiveBankId}/activities/{activityId}/assets |
Fetches the assets associated with an activity |
GET |
handcar/services/learning/objectivebanks/{objectiveBankId}/assets
or handcar/services/learning/objectivebanks/{objectiveBankId}/assets?genusTypeId={genusTypeId} handcar/services/learning/objectivebanks/{objectiveBankId}/assets?genusTypeId={genusTypeId1}&genusTypeId={genusTypeId2} |
Fetch all the assets in the repository associated with the bank, optionally restricted by genus type |
GET |
handcar/services/learning/objectivebanks/{objectiveBankId}/assets/{assetId} |
Fetch a particular asset from a bank |
GET |
handcar/services/learning/objectivebanks/{objectiveBankId}/assets/{assetId} |
Fetch a particular asset without specifying a bank |
GET |
handcar/services/learning/objectivebanks/{objectiveBankId}/assets/bulk?id={id1}&id={id2}&id={id3} etc.. |
Bulk fetch a bunch of assets from a bank |
GET |
handcar/services/learning/objectivebanks/{objectiveBankId}/asset/{assetId}/branding |
Fetch a particular objective asset's branding information |
GET |
handcar/services/learning/objectivebanks/{objectiveBankId}/assets/{assetId}/extension |
Fetch a particular asset's EXTENSION record |
GET |
handcar/services/learning/objectivebanks/{objectiveBankId}/assets/{assetId}/assetcontent/{assetContentId}/extension |
Fetch a particular asset content's EXTENSION record |
GET |
handcar/services/learning/objectivebanks/{objectiveBankId}/gradesystems/knowledgecategory |
Fetch the Grade System configured for this objective bank's knowledge categories |
GET |
handcar/services/learning/objectivebanks/{objectiveBankId}/gradesystems/cognitiveprocess |
Fetch the Grade System configured for this objective bank's cognitive process ranking |
GET |
handcar/services/learning/objectivebanks/{objectiveBankId}/grades |
Fetch all the grades for either a Knowledge Category or Cognitive Process Grade System in the bank. |
GET |
handcar/services/learning/objectivebanks/{objectiveBankId}/grades/{gradeId} |
Fetch the detailed grade information for a grade in a Knowledge Category or Cognitive Process Grade System for this bank |
GET |
handcar/services/learning/objectivebanks/types/genus |
Gets the list of supported objective bank genus types. |
GET |
handcar/services/learning/types |
Gets the list of all supported types regardless of bank. |
GET |
handcar/services/learning/types/{typeId} |
Get a particular type by id regardless of the bank |
GET |
handcar/services/learning/objectivebanks/{objectiveBankId}/types/genus/objective |
Gets the list of objective genus types. |
GET |
handcar/services/learning/objectivebanks/{objectiveBankId}/types/genus/relationship |
Gets the list of objective relationship genus types. |
GET |
handcar/services/learning/objectivebanks/{objectiveBankId}/types/genus/activity |
Gets the list of genus types for activities for this bank. |
GET |
handcar/services/learning/objectivebanks/{objectiveBankId}/types/genus/asset |
Gets the list of asset types for this bank. |
GET |
handcar/services/learning/objectivebanks/{objectiveBankId}/types/genus/assetcontent |
Gets the list of genus types (mime types) for asset contents for this bank. |
GET |
handcar/services/learning/objectivebanks/{objectiveBankId}/types/accessibility |
Gets the list of accessibility types for asset contents for this bank |
GET |
handcar/services/learning/objectivebanks/{objectiveBankId}/types/languages |
Gets the list of display text language types |
GET |
handcar/services/learning/objectivebanks/{objectiveBankId}/types/languages/default |
Gets the default display text language type |
GET |
handcar/services/learning/objectivebanks/{objectiveBankId}/types/scripts |
Gets the list of Display Text script types. |
GET |
handcar/services/learning/objectivebanks/{objectiveBankId}/types/scripts/default |
Gets the default of Display Text script type. |
GET |
handcar/services/learning/objectivebanks/{objectiveBankId}/types/formats |
Gets the list of display text format types. |
GET |
handcar/services/learning/objectivebanks/{objectiveBankId}/types/formats/default |
Gets the default display text format type |
POST |
{objectiveBankBean} to handcar/services/learning/objectivebanks |
Creates an objective bank |
PUT |
{objectiveBankBean} to handcar/services/learning/objectivebanks |
Updates an objective bank |
DELETE |
handcar/services/learning/objectivebanks/{objectiveBankId} |
Delete an Objective Bank |
POST |
{objectiveBean} to handcar/services/learning/objectivebanks/{objectiveBankId}/objectives |
Creates an objective in an objective in a bank |
PUT |
{objectiveBean} to handcar/services/learning/objectivebanks/{objectiveBankId}/objectives |
Updates an objective |
DELETE |
handcar/services/learning/objectivebanks/{objectiveBankId}/objectives/{objectiveId} |
Delete an Objective |
PUT |
{IdsBean} to handcar/services/learning/objectivebanks/{objectiveBankId}/objectives/{objectiveid}/parentids |
Updates an objective's parent by specifying their ids |
PUT |
{IdsBean} to handcar/services/learning/objectivebanks/{objectiveBankId}/objectives/{objectiveid}/childids |
Updates an objective's children by specifying their ids |
PUT |
{IdsBean} to handcar/services/learning/objectivebanks/{objectiveBankId}/objectives/{objectiveid}/requisiteids |
Updates an objective's requisites by specifying their ids |
PUT |
{IdsBean} to handcar/services/learning/objectivebanks/{objectiveBankId}/objectives/{objectiveid}/childids |
Updates an objective's dependents by specifying their ids |
PUT |
{IdsBean} to handcar/services/learning/objectivebanks/{objectiveBankId}/objectives/{objectiveid}/equivalentids |
Updates an objective's equivalencies by specifying their ids |
PUT |
{IdsBean} to handcar/services/learning/objectivebanks/{objectiveBankId}/objectives/{objectiveid}/otherrelationships/{relationshipTypeId} |
Updates an objective's OTHER RELATIONSHIPS by specifying their ids |
POST |
{activityBean} to handcar/services/learning/objectivebanks/{objectiveBankId}/activities |
Creates an activity associated with an objective in a bank |
POST |
{assetBasedActivityBean} to handcar/services/learning/objectivebanks/{objectiveBankId}/activities/assetbased |
Convenience method to creates both an activity and it's corresponding asset at the same time. |
PUT |
{activityBean} to handcar/services/learning/objectivebanks/{objectiveBankId}/activities |
Updates an activity |
DELETE |
handcar/services/learning/objectivebanks/{objectiveBankId}/activities/{activityId} |
Delete an Activity |
POST |
{assetBean} to handcar/services/learning/objectivebanks/{objectiveBankId}/assets |
Creates an asset associated with a bank |
PUT |
{assetBean} to handcar/services/learning/objectivebanks/{objectiveBankId}/assets |
Updates an asset |
DELETE |
handcar/services/learning/objectivebanks/{objectiveBankId}/assets/{assetId} |
Delete an Asset |
MC3 was created and is supported by MIT’s Office of Digital Learning
[a]Norm Wright:
TODO: insert contact info