application/vnd.ims.lti.v2.toolconsumerprofile+json
formatMedia Type | application/vnd.ims.lti.v2.toolconsumerprofile+json |
---|---|
RDF Type | http://purl.imsglobal.org/vocab/lti/v2/lti#ToolConsumerProfile |
JSON-LD | http://purl.imsglobal.org/ctx/lti/v2/ToolConsumerProfile |
IPR and Distribution Notices
Recipients of this document are requested to submit, with their comments, notification of any relevant patent claims or other intellectual property rights of which they may be aware that might be infringed by any implementation of the specification set forth in this document, and to provide supporting documentation.
IMS takes no
position regarding the validity or scope of any intellectual property or other
rights that might be claimed to pertain to the implementation or use of the
technology described in this document or the extent to which any license under
such rights might or might not be available; neither does it represent that it
has made any effort to identify any such rights. Information on IMS's
procedures with respect to rights in IMS specifications can be found at the IMS
Intellectual Property Rights web page: http://www.imsglobal.org/ipr/
Copyright © 2016 IMS Global Learning Consortium. All Rights Reserved.
Use of this
specification to develop products or services is governed by the license with
IMS found on the IMS website: http://www.imsglobal.org/
Permission is granted to all parties to use excerpts from this document as needed in producing requests for proposals.
The limited permissions granted above are perpetual and will not be revoked by IMS or its successors or assigns.
THIS SPECIFICATION IS BEING OFFERED WITHOUT ANY WARRANTY WHATSOEVER, AND IN PARTICULAR, ANY WARRANTY OF NONINFRINGEMENT IS EXPRESSLY DISCLAIMED. ANY USE OF THIS SPECIFICATION SHALL BE MADE ENTIRELY AT THE IMPLEMENTER'S OWN RISK, AND NEITHER THE CONSORTIUM, NOR ANY OF ITS MEMBERS OR SUBMITTERS, SHALL HAVE ANY LIABILITY WHATSOEVER TO ANY IMPLEMENTER OR THIRD PARTY FOR ANY DAMAGES OF ANY NATURE WHATSOEVER, DIRECTLY OR INDIRECTLY, ARISING FROM THE USE OF THIS SPECIFICATION.
© 2016 IMS Global Learning Consortium, Inc.
All Rights Reserved.
The IMS Logo and Learning Tools Interoperability (LTI) are trademarks of the IMS Global
Learning Consortium, Inc. in the United States and/or other countries.
This specification defines a JSON binding for ToolConsumerProfile resources. The Tool Consumer exposes this profile to advertise its capabilities and services offered.
The binding defined in this specification conforms to the JSON-LD conventions [JSON-LD-syntax]. Briefly, JSON-LD adds semantics to a JSON document by associating properties that may appear in a document with well-defined data types through the use of a so-called "context". It is not necessary to understand the mechanics of JSON-LD to render a JSON document that complies with the binding defined by this specification. Indeed, this specification is self-contained in the sense that it provides all the information necessary to render a compliant JSON binding of a ToolConsumerProfile object. On the other hand, readers who have some familiarity with JSON-LD will likely find this specification document easier to digest.
Figure 1 shows the representation of a ToolConsumerProfile resource in the application/vnd.ims.lti.v2.toolconsumerprofile+json
format.
{ "@context" : [ "http://purl.imsglobal.org/ctx/lti/v2/ToolConsumerProfile", { "tcp" : "http://lms.example.com/profile/b6ffa601-ce1d-4549-9ccf-145670a964d4#" } ], "@type" : "ToolConsumerProfile", "@id" : "http://lms.example.com/profile/b6ffa601-ce1d-4549-9ccf-145670a964d4", "lti_version" : "LTI-2p0", "guid" : "b6ffa601-ce1d-4549-9ccf-145670a964d4", "product_instance" : { "guid" : "c86542d5-fde1-4aae-ae18-7018089fddcd", "product_info" : { "product_name" : { "default_value" : "Omega LMS", "key" : "product.name" }, "product_version" : "2.3", "description" : { "default_value" : "Omega LMS is a fictitious Learning Management System", "key" : "product.version" }, "technical_description" : { "default_value" : "LTI 1, 1.1 and 2.0 compliant", "key" : "product.technicalDescription" }, "product_family" : { "code" : "omega", "vendor" : { "code" : "lms.example.com", "vendor_name" : { "default_value" : "LMS Corporation", "key" : "product.vendor.name" }, "description" : { "default_value" : "LMS Corporation is a fictitious vendor of a Learning Management System", "key" : "product.vendor.description" }, "website" : "http://lms.example.com/products/omega", "timestamp" : "2012-03-28T09:08:16-04:00", "contact" : { "email" : "support@lms.example.com" } } } }, "service_owner" : { "@id" : "http://state.university.edu/", "timestamp" : "2012-03-28T09:08:16-04:00", "service_owner_name" : { "default_value" : "State University", "key" : "service_owner.name" }, "description" : { "default_value" : "A fictitious university.", "key" : "service_owner.description" }, "support" : { "email" : "techsupport@university.edu" } }, "service_provider" : { "@id" : "http://yasp.example.com/ServiceProvider", "guid" : "yasp.example.com", "timestamp" : "2012-03-28T09:08:16-04:00", "service_provider_name" : { "default_value" : "Your Application Service Provider", "key" : "service_provider.name" }, "description" : { "default_value" : "YASP is a fictitious application service provider", "key" : "service_provider.description" }, "support" : { "email" : "support@yasp.example.com" } } }, "capability_offered" : [ "basic-lti-launch-request", "Result.autocreate", "Result.sourcedId", "Result.url", "LtiLink.custom.url", "ToolProxyBinding.custom.url", "ToolProxy.custom.url" ], "service_offered" : [ { "@type" : "RestService", "@id" : "tcp:ToolProxy.collection", "endpoint" : "http://lms.example.com/resources/ToolProxy/", "format" : ["application/vnd.ims.lti.v2.toolproxy+json"], "action" : ["POST"] }, { "@type" : "RestService", "@id" : "tcp:ToolProxy.item", "endpoint" : "http://lms.example.com/resources/ToolProxy/{tool_proxy_guid}", "format" : ["application/vnd.ims.lti.v2.toolproxy+json"], "action" : ["GET", "PUT"] }, { "@type" : "RestService", "@id" : "tcp:Result.item", "endpoint" : "http://lms.example.com/resources/Result/{sourcedId}", "format" : ["application/vnd.ims.lis.v2.result+json"], "action" : ["GET", "PUT"] }, { "@type" : "RestService", "@id" : "tcp:LtiLinkSettings", "endpoint" : "http://lms.example.com/resources/links/{link_id}/custom", "format" : ["application/vnd.ims.lti.v2.toolsettings+json", "application/vnd.ims.lti.v2.toolsettings.simple+json"], "action" : ["GET", "PUT"] }, { "@type" : "RestService", "@id" : "tcp:ToolProxyBindingSettings", "endpoint" : "http://lms.example.com/resources/lis/{context_type}/{context_id}/bindings/{vendor_code}/{product_code}/custom", "format" : ["application/vnd.ims.lti.v2.toolsettings+json", "application/vnd.ims.lti.v2.toolsettings.simple+json"], "action" : ["GET", "PUT"] }, { "@type":"RestService", "@id" : "tcp:ToolProxySettings", "endpoint" : "http://lms.example.com/resources/ToolProxy/{tool_proxy_guid}/custom", "format" : ["application/vnd.ims.lti.v2.toolsettings+json", "application/vnd.ims.lti.v2.toolsettings.simple+json"], "action" : ["GET", "PUT"] } ] }
This specification defines the structure of a JSON document using a graphical notation. In this notatation, an object is represented by a box that branches out to other boxes corresponding to the properties of that object, as shown in Figure 2.
Figure 2 is not a complete representation of a ToolConsumerProfile
object because product_instance
is an embedded object. A complete diagram would show branches emanating from product_instance
to reveal its properties, and so on, recursively. For a complete representation, see Figure 6 below.
Each box representing a property specifies the name and type of the property , as shown in Figure 3.
If a property is optional, its box will be decorated with a circle that contains a question mark, as shown in Figure 4.
If a property can have multiple values, then its box in the graphical notation is decorated with a circle that contains a plus sign (+) as shown in Figure 5. In this example, the capability_offered
property may reference more than one Capability
object. Ordinarily, these values are encapsulated within a JSON array, but if it turns out that only one value is present, then the square brackets for the array are optional.
An object within a JSON-LD document may have one of four possible representations:
When an object or enumerable value is to be identified by a simple name, the box representing the corresponding property will be decorated with the #sn hash tag, as shown in Figure 5.
The JSON-LD standard reserves a handful of property names and tokens that have special meaning. These names and tokens, described below, begin with the '@' symbol.
The @id property may identify a so-called blank node by using a CURIE with an underscore as the prefix. The binding of a JSON-LD document MAY include identifiers for blank nodes, but these identifiers are not required.
JSON-LD specifies four other reserved terms (@value, @language, @container, @list). Ordinarily, these terms are not used in the JSON binding for ToolConsumerProfile
objects. However, implementations that extend this specification by including additional properties may utilize these reserved terms in accordance with the rules defined by [JSON-LD-syntax].
In JSON-LD, a context is used to map simple names that appear in a JSON document to URI values for properties or data types in a formal vocabulary (typically an RDF ontology). For example, the standard context [LTI, 14 IG] for a ToolConsumerProfile contains the following rewrite rules (among others):
{ "@context" = { "lti" : "http://purl.imsglobal.org/vocab/lti/v2/lti#", "product_instance" : "lti:product_instance", ... } }
A context may specify that the values of certain object properties must be rendered as URI references. The following snippet presents an example of such a rule.
{ "@context" = { ... "capability_offered" : { "@id" : "lti:capability_offered", "@type" : "@id" } ... }
This rule is an example of type coercion. For more details about the syntax of a JSON-LD context, see [JSON-LD-syntax].
The following list defines the necessary and sufficient conditions for a document to conform to the application/vnd.ims.lti.v2.toolconsumerprofile+json
media type.
@type
property whose value is "ToolConsumerProfile
".@context
property that references one or more JSON-LD contexts (either by URI or by value).@context
property, a non-empty collection MUST always be represented as a JSON array whose values are enclosed in square brackets. Whereas, in general, the JSON-LD syntax specification allows a collection containing a single value to omit the square brackets, the application/vnd.ims.lti.v2.toolconsumerprofile+json
media type requires square brackets for all non-empty collections other than the @context
property.@id
property of a given object is mandatory if the minimum cardinality of that property, as defined by this specification, is greater than zero. The @id
property is optional for all other objects (even if it is not explicitly listed in the set of properties for an object). Conforming implementations SHOULD include the @id
property for all addressable objects.@id
property is mandatory, then the value MUST NOT treat the object as a blank node. In this case, the @id
value MUST NOT be a CURIE with an underscore as the prefix.@type
property and a @context property.@type
property if the object value is a subtype of the declared range of the property.Figure 6 presents a complete graphical representation of the JSON binding for a ToolConsumerProfile object. The subsections following this figure provide details about each object that appears in the JSON binding for a ToolConsumerProfile object.
Capability
instances are enumerable, and they must be referenced by a simple name. The default vocabulary of simple names for instances of the Capability
class are listed in Table 1.
Simple Name | URI / Description |
---|---|
Context.id | http://purl.imsglobal.org/vocab/lti/v2/variable#Context.id Corresponds to the context_id launch parameter. This is the local identifier for the context within the Tool Consumer system. |
Context.label | http://purl.imsglobal.org/vocab/lti/v2/variable#Context.label A short label for the context. Corresponds to the context_label launch parameter. |
Context.org | http://purl.imsglobal.org/vocab/lti/v2/variable#Context.org A URI describing the organisational properties of the context from which a launch request originates (typically a CourseSection); for example, an ldap:// URI such as ldap://host.com:6666/cid=abc123,ou=dept,dc=plainjoe,dc=org. If more than one format of organisational URI is specified, each should be separated with a space. |
Context.title | http://purl.imsglobal.org/vocab/lti/v2/variable#Context.title The title for the context. Corresponds to the context_title launch parameter. |
Context.type | http://purl.imsglobal.org/vocab/lti/v2/variable#Context.type A comma-separated list of URN values that identify the type of context. Corresponds to the context_type launch parameter. |
CourseOffering.academicSession | http://purl.imsglobal.org/vocab/lti/v2/variable#CourseOffering.academicSession The text data that is used to describe the academic session for the course offering.
In the LIS Database, this value corresponds to courseOfferingRecord/courseOffering/defaultCredits/textString |
CourseOffering.credits | http://purl.imsglobal.org/vocab/lti/v2/variable#CourseOffering.credits The default credits set for this Course Offering
In the LIS Database, this value corresponds to courseOfferingRecord/courseOffering/defaultCredits/textString |
CourseOffering.label | http://purl.imsglobal.org/vocab/lti/v2/variable#CourseOffering.label A human readable label for the Course Offering
In the LIS Database, this value corresponds to courseOfferingRecord/courseOffering/label |
CourseOffering.longDescription | http://purl.imsglobal.org/vocab/lti/v2/variable#CourseOffering.longDescription A long description of the Course Offering.
In the LIS Database, this value corresponds to courseOfferingRecord/courseOffering/catalogDescription/longDescription |
CourseOffering.shortDescription | http://purl.imsglobal.org/vocab/lti/v2/variable#CourseOffering.shortDescription A short description of the Course Offering.
In the LIS Database, this value corresponds to courseOfferingRecord/courseOffering/catalogDescription/shortDescription |
CourseOffering.sourcedId | http://purl.imsglobal.org/vocab/lti/v2/variable#CourseOffering.sourcedId The LIS identifier for the Course Offering.
In the LIS Database, this value corresponds to courseOfferingRecord/sourcedId |
CourseOffering.title | http://purl.imsglobal.org/vocab/lti/v2/variable#CourseOffering.title The title of the Course Offering.
In the LIS Database, this value corresponds to courseOfferingRecord/courseOffering/title |
CourseSection.courseNumber | http://purl.imsglobal.org/vocab/lti/v2/variable#CourseSection.courseNumber The course number, such as "Biology 101". In general, this number is not just a numeric value.
In the LIS Database, this value corresponds to courseSectionRecord/courseSection/courseNumber/textString |
CourseSection.credits | http://purl.imsglobal.org/vocab/lti/v2/variable#CourseSection.credits The default credits set for the Course Section.
In the LIS Database, this value corresponds to courseSectionRecord/courseSection/defaultCredits/textString |
CourseSection.dataSource | http://purl.imsglobal.org/vocab/lti/v2/variable#CourseSection.dataSource An identifier for the original source system of the CourseSection object.
In the LIS Database, this value corresponds to courseSectionRecord/courseSection/dataSource |
CourseSection.dept | http://purl.imsglobal.org/vocab/lti/v2/variable#CourseSection.dept The department within which the Course Section is offered.
In the LIS Database, this value corresponds to courseSectionRecord/courseSection/org[type/textString="Dept"]/orgName/textString |
CourseSection.enrollControl.allowed | http://purl.imsglobal.org/vocab/lti/v2/variable#CourseSection.enrollControl.allowed A boolean value that specifies whether the Tool Provider can enroll people in the Course Section. The value false indicates that only the source system can enroll people.
In the LIS Database, this value corresponds to courseSectionRecord/courseSection/enrollControl/enrollAllowed |
CourseSection.enrollControll.accept | http://purl.imsglobal.org/vocab/lti/v2/variable#CourseSection.enrollControll.accept A boolean value that specifies whether the Course Section is accepting enrollments.
In the LIS Database, this value corresponds to courseSectionRecord/courseSection/enrollControl/enrollAccept |
CourseSection.label | http://purl.imsglobal.org/vocab/lti/v2/variable#CourseSection.label A human readable label for the Course Section.
In the LIS Database, this value corresponds to courseSectionRecord/courseSection/label |
CourseSection.longDescription | http://purl.imsglobal.org/vocab/lti/v2/variable#CourseSection.longDescription A long description of the Course Section.
In the LIS Database, this value corresponds to courseSectionRecord/courseSection/catalogDescription/longDescription |
CourseSection.maxNumberofStudents | http://purl.imsglobal.org/vocab/lti/v2/variable#CourseSection.maxNumberofStudents The maximum number of students that can be enrolled in the Course Section.
In the LIS Database, this value corresponds to courseSectionRecord/courseSection/maxNumberofStudents |
CourseSection.numberofStudents | http://purl.imsglobal.org/vocab/lti/v2/variable#CourseSection.numberofStudents The number of students who are enrolled in the Course Section.
In the LIS Database, this value corresponds to courseSectionRecord/courseSection/numberofStudents |
CourseSection.shortDescription | http://purl.imsglobal.org/vocab/lti/v2/variable#CourseSection.shortDescription A short description of the Course Section.
In the LIS Database, this value corresponds to courseSectionRecord/courseSection/catalogDescription/shortDescription |
CourseSection.sourceSectionId | http://purl.imsglobal.org/vocab/lti/v2/variable#CourseSection.sourceSectionId The identifier for the source Course Section from which the target Course Section was cloned.
In the LIS Database, this value corresponds to createCourseSectionFromCourseSectionRequest/sourcedId |
CourseSection.sourcedId | http://purl.imsglobal.org/vocab/lti/v2/variable#CourseSection.sourcedId The LIS identifier for the Course Section
In the LIS Database, this value corresponds to courseSection/sourcedId |
CourseSection.timeFrame.begin | http://purl.imsglobal.org/vocab/lti/v2/variable#CourseSection.timeFrame.begin The date and time when the Course Section becomes available.
In the LIS Database, this value corresponds to courseSectionRecord/courseSection/timeFrame/begin |
CourseSection.timeFrame.end | http://purl.imsglobal.org/vocab/lti/v2/variable#CourseSection.timeFrame.end The date and time after which the Course Section is no longer available.
In the LIS Database, this value corresponds to courseSectionRecord/courseSection/timeFrame/end |
CourseSection.title | http://purl.imsglobal.org/vocab/lti/v2/variable#CourseSection.title The title of the Course Section.
In the LIS Database, this value corresponds to courseSectionRecord/courseSection/title |
CourseTemplate.courseNumber | http://purl.imsglobal.org/vocab/lti/v2/variable#CourseTemplate.courseNumber The course number, such as "Biology 101". In general, this number is not just a numeric value.
In the LIS Database, this value corresponds to courseTemplateRecord/courseTemplate/courseNumber/textString |
CourseTemplate.credits | http://purl.imsglobal.org/vocab/lti/v2/variable#CourseTemplate.credits The default credits set for this Course Template.
In the LIS Database, this value corresponds to courseTemplateRecord/courseTemplate/defaultCredits/textString |
CourseTemplate.label | http://purl.imsglobal.org/vocab/lti/v2/variable#CourseTemplate.label A human readable label used to help identify the Course Template.
In the LIS Database, this value corresponds to courseTemplateRecord/courseTemplate/label/textString |
CourseTemplate.longDescription | http://purl.imsglobal.org/vocab/lti/v2/variable#CourseTemplate.longDescription A long description of the Course Template.
In the LIS Database, this value corresponds to courseTemplateRecord/courseTemplate/catalogDescription/longDescription |
CourseTemplate.shortDescription | http://purl.imsglobal.org/vocab/lti/v2/variable#CourseTemplate.shortDescription A short description of the Course Template.
In the LIS Database, this value corresponds to courseTemplateRecord/courseTemplate/catalogDescription/shortDescription |
CourseTemplate.sourcedId | http://purl.imsglobal.org/vocab/lti/v2/variable#CourseTemplate.sourcedId The LIS identifier for the Course Template.
In the LIS Database, this value corresponds to courseTemplateRecord/sourcedId |
CourseTemplate.title | http://purl.imsglobal.org/vocab/lti/v2/variable#CourseTemplate.title The title of the Course Template.
In the LIS Database, this value corresponds to courseTemplateRecord/courseTemplate/title/textString |
Group.email | http://purl.imsglobal.org/vocab/lti/v2/variable#Group.email An email address used for posting messages to members of the group.
In the LIS Database, this value corresponds to groupRecord/group/email |
Group.enrollControl.accept | http://purl.imsglobal.org/vocab/lti/v2/variable#Group.enrollControl.accept A boolean value that specifies whether the Group is accepting enrollments.
In the LIS Database, this value corresponds to groupRecord/group/enrollControl/enrollAccept |
Group.enrollControl.allowed | http://purl.imsglobal.org/vocab/lti/v2/variable#Group.enrollControl.allowed A boolean value that specifies whether the Tool Provider can enroll people in the Group. The value false indicates that only the source system can enroll people.
In the LIS Database, this value corresponds to groupRecord/group/enrollControl/enrollAllowed |
Group.grouptype | http://purl.imsglobal.org/vocab/lti/v2/variable#Group.grouptype A URI that uniquely identifies the type of group. This convention differs from the LIS convention of using a structured object to describe the type of a group. Ideally, the URI should resolve to JSON-LD document that describes the group type. However, any URI that uniquely identifies the group type in accordance with the rules of the grouptype scheme is acceptable. |
Group.longDescription | http://purl.imsglobal.org/vocab/lti/v2/variable#Group.longDescription A long description of the Group.
In the LIS Database, this value corresponds to groupRecord/group/description/longDescription |
Group.parentId | http://purl.imsglobal.org/vocab/lti/v2/variable#Group.parentId An identifier for the parent group within which the target group is nested.
In the LIS Database, this value corresponds to groupRecord/group/relationship[relation="Parent"]/sourcedId |
Group.shortDescription | http://purl.imsglobal.org/vocab/lti/v2/variable#Group.shortDescription A short description of the Group.
In the LIS Database, this value corresponds to groupRecord/group/description/shortDescription |
Group.sourcedId | http://purl.imsglobal.org/vocab/lti/v2/variable#Group.sourcedId The LIS identifier for the Group.
In the LIS Database, this value corresponds to groupRecord/sourcedId |
Group.timeFrame.begin | http://purl.imsglobal.org/vocab/lti/v2/variable#Group.timeFrame.begin The date and time when access to Group resources begins.
In the LIS Database, this value corresponds to groupRecord/group/timeframe/begin |
Group.timeFrame.end | http://purl.imsglobal.org/vocab/lti/v2/variable#Group.timeFrame.end The date and time when access to Group resources ends.
In the LIS Database, this value corresponds to groupRecord/group/timeframe/end |
Group.url | http://purl.imsglobal.org/vocab/lti/v2/variable#Group.url The web address of the Group.
In the LIS Database, this value corresponds to groupRecord/group/url |
LineItemZZZ.dataSource | http://purl.imsglobal.org/vocab/lti/v2/variable#LineItemZZZ.dataSource An identifier for the original source system of the LineItem record.
In the LIS Database, this value corresponds to lineItemRecord/lineItem/dataSource |
LineItemZZZ.resultValue.max | http://purl.imsglobal.org/vocab/lti/v2/variable#LineItemZZZ.resultValue.max The maximum numeric score that a learner may earn on the assignment associated with this LineItem.
In the LIS Database, this value corresponds to resultValueRecord/resultValue/valueRange/max where resultValueRecord.sourcedId = lineItemRecord/lineItem/resultValueSourcedId |
LineItemZZZ.sourcedId | http://purl.imsglobal.org/vocab/lti/v2/variable#LineItemZZZ.sourcedId The LIS identifier for the LineItem
In the LIS Database, this value corresponds to lineItemRecord/sourcedId |
LineItemZZZ.type | http://purl.imsglobal.org/vocab/lti/v2/variable#LineItemZZZ.type A URI that uniquely identifies the LineItem type. This convention differs from the LIS convention of using a structured object to describe LineItem types. The URI should resolve to a JSON-LD resource that describes the LineItem type. As a best practice the URI should start with a base URL that identifies the LineItemType vocabulary and end with a relative URL for a type within that vocabulary.
In the LIS Database, the LineItem type is given by lineItemRecord/lineItem/lineItemType |
LineItemZZZ.type.displayName | http://purl.imsglobal.org/vocab/lti/v2/variable#LineItemZZZ.type.displayName The display name for the LineItemType.
In the LIS Database, this value corresponds to lineItemTypeRecord/lineItemType/displayName |
LtiLink.custom.url | http://purl.imsglobal.org/vocab/lti/v2/variable#LtiLink.custom.url The endpoint URL for accessing link-level tool settings. |
Membership.collectionSourcedId | http://purl.imsglobal.org/vocab/lti/v2/variable#Membership.collectionSourcedId The LIS identifier for the organizational unit (Course Section, Group, etc.) to which the Membership pertains.
In the LIS Database, this value corresponds to membershipRecord/membership/collectionSourcedId |
Membership.createdTimestamp | http://purl.imsglobal.org/vocab/lti/v2/variable#Membership.createdTimestamp The date and time when the membership role was created. If the Person has more than one role within the organizational unit, then this value is a comma separated list corresponding to the roles listed by the Membership.role variable.
In the LIS Database, this value corresponds to membershipRecord/membership/member/role/dateTime |
Membership.dataSource | http://purl.imsglobal.org/vocab/lti/v2/variable#Membership.dataSource An identifier for the original source system of the Membership record.
In the LIS Database, this value corresponds to membershipRecord/membership/member/role/dataSource |
Membership.personSourcedId | http://purl.imsglobal.org/vocab/lti/v2/variable#Membership.personSourcedId The LIS identifier for the Person associated with the Membership.
In the LIS Database, this value corresponds to membershipRecord/membership/member/personSourcedId |
Membership.role | http://purl.imsglobal.org/vocab/lti/v2/variable#Membership.role A comma separated list of roles that the Person has within the organizational unit.
In the LIS Database, this value corresponds to membershipRecord/membership/member/role/roleType |
Membership.sourcedId | http://purl.imsglobal.org/vocab/lti/v2/variable#Membership.sourcedId The LIS identifier for the Membership.
In the LIS Database, this value corresponds to membershipRecord/sourcedId |
Membership.status | http://purl.imsglobal.org/vocab/lti/v2/variable#Membership.status Indicates if the membership is active or inactive. In accordance with the LIS specification, the value should be either Active or Inactive . If the Person has more than one role within the organizational unit, then this value is a comma separated list, where the values are ordered in correspondence with the roles named by the Membership.role variable.
In the LIS Database, this value corresponds to membershipRecord/membership/member/role/status |
Person.address.country | http://purl.imsglobal.org/vocab/lti/v2/variable#Person.address.country The country within the user's address.
In the LIS Database, this value corresponds to personRecord/person/address/[addressType/instanceValue/text="Preferred"]addressPart /nameValuePair /[instanceName/text="Country"]/instanceValue/text |
Person.address.locality | http://purl.imsglobal.org/vocab/lti/v2/variable#Person.address.locality The city, town, or other locality within the user's address.
In the LIS Database, this value corresponds to personRecord/person/address/[addressType/instanceValue/text="Preferred"]addressPart /nameValuePair /[instanceName/text="Locality"]/instanceValue/text |
Person.address.postcode | http://purl.imsglobal.org/vocab/lti/v2/variable#Person.address.postcode The postal code within the user's address.
In the LIS Database, this value corresponds to personRecord/person/address/[addressType/instanceValue/text="Preferred"]addressPart /nameValuePair /[instanceName/text="Postcode"]/instanceValue/text |
Person.address.statepr | http://purl.imsglobal.org/vocab/lti/v2/variable#Person.address.statepr The state or province within the user's address.
In the LIS Database, this value corresponds to personRecord/person/address/[addressType/instanceValue/text="Preferred"]addressPart /nameValuePair/[instanceName/text="Statepr"]/instanceValue/text |
Person.address.street1 | http://purl.imsglobal.org/vocab/lti/v2/variable#Person.address.street1 The first line of the user's street address.
In the LIS Database, this value corresponds to personRecord/person/address/[addressType/instanceValue/text="Preferred"]addressPart /nameValuePair /[instanceName/text="NonFieldedStreetAddress1"]/instanceValue /text |
Person.address.street2 | http://purl.imsglobal.org/vocab/lti/v2/variable#Person.address.street2 The second line of the user's street address.
In the LIS Database, this value corresponds to personRecord/person/address/[addressType/instanceValue/text="Preferred"] addressPart /nameValuePair[instanceName/text="NonFieldedStreetAddress2"] /instanceValue/text |
Person.address.street3 | http://purl.imsglobal.org/vocab/lti/v2/variable#Person.address.street3 The third line of the user's street address.
In the LIS Database, this value corresponds to personRecord/person/address/[addressType/instanceValue/text="Preferred"]addressPart /nameValuePair /[instanceName/text="NonFieldedStreetAddress3"] /instanceValue/text |
Person.address.street4 | http://purl.imsglobal.org/vocab/lti/v2/variable#Person.address.street4 The fourth line of the user's street address.
In the LIS Database, this value corresponds to personRecord/person/address/[addressType/instanceValue/text="Preferred"]addressPart /nameValuePair /[instanceName/text="NonFieldedStreetAddress4"] /instanceValue/text |
Person.address.timezone | http://purl.imsglobal.org/vocab/lti/v2/variable#Person.address.timezone The user's time zone.
In the LIS Database, this value corresponds to personRecord/person/address/[addressType/instanceValue/text="Preferred"]addressPart /nameValuePair /[instanceName/text="Timezone"]/instanceValue/text |
Person.email.personal | http://purl.imsglobal.org/vocab/lti/v2/variable#Person.email.personal The user's personal email address
In the LIS Database, this value corresponds to person/contactinfo[contactinfoType/instanceValue/text="Email_Personal"]/contactinfoValue /text |
Person.email.primary | http://purl.imsglobal.org/vocab/lti/v2/variable#Person.email.primary The user's primary email address.
In the LIS Database, this value corresponds to personRecord/person/contactinfo[contactinfoType/instanceValue/text="Email_Primary"] /contactinfoValue/text |
Person.name.family | http://purl.imsglobal.org/vocab/lti/v2/variable#Person.name.family The family name of the user.
In the LIS Database, this value corresponds to personRecord/person/name/partName[instanceName/text="Family”]/instanceValue/text |
Person.name.full | http://purl.imsglobal.org/vocab/lti/v2/variable#Person.name.full The full name of the user.
In the LIS Database, this value corresponds to personRecord/person/formname/[formnameType/instanceValue/text="Full"] /formattedName/text |
Person.name.given | http://purl.imsglobal.org/vocab/lti/v2/variable#Person.name.given The given name of the user.
In the LIS Database, this value corresponds to personRecord/person/name/partName[instanceName/text="Given”]/instanceValue/text |
Person.name.middle | http://purl.imsglobal.org/vocab/lti/v2/variable#Person.name.middle The middle name of the user.
In the LIS Database, this value corresponds to personRecord/person/name/partName[instanceName/text="Middle”]/instanceValue/text |
Person.name.prefix | http://purl.imsglobal.org/vocab/lti/v2/variable#Person.name.prefix The prefix for the user's name, such as Dr., Mr., Ms. etc.
In the LIS Database, this value corresponds to personRecord/person/name/partName[instanceName/text="Prefix”]/instanceValue/text |
Person.name.suffix | http://purl.imsglobal.org/vocab/lti/v2/variable#Person.name.suffix The suffix for the user's name, such as Jr., II, etc.
In the LIS Database, this value corresponds to personRecord/person/name/partName[instanceName/text="Suffix”]/instanceValue/text |
Person.phone.home | http://purl.imsglobal.org/vocab/lti/v2/variable#Person.phone.home The user's home phone number
In the LIS Database, this value corresponds to personRecord/person/contactinfo [contactinfoType/instanceValue/text="Telephone_Home"]/contactinfoValue /text |
Person.phone.mobile | http://purl.imsglobal.org/vocab/lti/v2/variable#Person.phone.mobile The user's mobile phone number
In the LIS Database, this value corresponds to personRecord/person/contactinfo[contactinfoType/instanceValue/text="Mobile"] /contactInfoValue/text |
Person.phone.primary | http://purl.imsglobal.org/vocab/lti/v2/variable#Person.phone.primary The user's primary phone number
In the LIS Database, this value corresponds to personRecord/person/contactinfo [contactinfoType/instanceValue/text="Telephone_Primary"]/contactinfoValue /text |
Person.phone.work | http://purl.imsglobal.org/vocab/lti/v2/variable#Person.phone.work The user's work phone number.
In the LIS Database, this value corresponds to personRecord/person/contactinfo [contactinfoType/instanceValue/text="Telephone_Work"]/contactinfoValue /text |
Person.sms | http://purl.imsglobal.org/vocab/lti/v2/variable#Person.sms The number at which the user prefers to receive SMS text messages.
In the LIS Database, this value corresponds to personRecord/person/contactinfo[contactinfoType/instanceValue/text="SMS"] /contactinfoValue/text |
Person.sourcedId | http://purl.imsglobal.org/vocab/lti/v2/variable#Person.sourcedId The LIS identifier for the user.
In the LIS Database, this value corresponds to |
Person.webaddress | http://purl.imsglobal.org/vocab/lti/v2/variable#Person.webaddress The user's web address. This could be a facebook address, a blog, or any other web address linked to the user. The value should be a URL.
In the LIS Database, this value corresponds to personRecord/person/contactinfo[contactinfoType/instanceValue/text="Web-Address"] /contactinfoValue/text |
ResourceLink.description | http://purl.imsglobal.org/vocab/lti/v2/variable#ResourceLink.description A plain text description of the link’s destination, suitable for display alongside the link. |
ResourceLink.id | http://purl.imsglobal.org/vocab/lti/v2/variable#ResourceLink.id This is the local identifier for the resource link within the Tool Consumer system from which the launch occurred. Corresponds to the resource_link_id launch parameter. |
ResourceLink.title | http://purl.imsglobal.org/vocab/lti/v2/variable#ResourceLink.title A plain text title for the resource. |
Result.autocreate | http://purl.imsglobal.org/vocab/lti/v2/capability#Result.autocreate A lin-item in the tool consumer gradebook can be automatically created for any resource links which use the Basic Outcomes or Result services. |
Result.comment | http://purl.imsglobal.org/vocab/lti/v2/variable#Result.comment A comment associated with the outcome which may be made visible to the student. |
Result.createdTimestamp | http://purl.imsglobal.org/vocab/lti/v2/variable#Result.createdTimestamp The date and time when the Result was created.
In the LIS Database, this value corresponds to |
Result.dataSource | http://purl.imsglobal.org/vocab/lti/v2/variable#Result.dataSource An identifier for the original source system of the Result record.
In the LIS Database, this value corresponds to resultRecord/result/dataSource |
Result.resultScore | http://purl.imsglobal.org/vocab/lti/v2/variable#Result.resultScore The score that the learner earned on the assignment or activity to which this Result pertains.
In the LIS Database, this value corresponds to resultRecord/result/resultScore/textString |
Result.sourcedId | http://purl.imsglobal.org/vocab/lti/v2/variable#Result.sourcedId The LIS identifier for the Result resource.
In the LIS Database, this value corresponds to |
Result.status | http://purl.imsglobal.org/vocab/lti/v2/variable#Result.status A URI for the status of the Result. As a best practice, the URI should resolve to a JSON-LD description of the status value or a term in a VDEX file. The vocabulary for Result status values is extensible. The set of standard values includes:
|
Result.url | http://purl.imsglobal.org/vocab/lti/v2/variable#Result.url The URL of the Result resource. Client applications may issue an HTTP request to read, update or delete the resource at this URL. |
ToolProxy.custom.url | http://purl.imsglobal.org/vocab/lti/v2/variable#ToolProxy.custom.url The endpoint URL for accessing system-wide tool settings. |
ToolProxyBinding.custom.url | http://purl.imsglobal.org/vocab/lti/v2/variable#ToolProxyBinding.custom.url The endpoint URL for accessing context-level tool settings. |
User.id | http://purl.imsglobal.org/vocab/lti/v2/variable#User.id Corresponds to the user_id launch parameterfrom the LaunchMixin class. This is the local identifier for the user within the Tool Consumer system. |
User.image | http://purl.imsglobal.org/vocab/lti/v2/variable#User.image The URL for an image of the user suitable for use as a profile picture or avatar. |
User.org | http://purl.imsglobal.org/vocab/lti/v2/variable#User.org A URI describing the user's organisational properties; for example, an ldap:// URI such as ldap://host.com:6666/uid=user,ou=people,dc=example,dc=com. If more than one format of organisational URI is specified, each should be separated with a space. |
User.scope.mentor | http://purl.imsglobal.org/vocab/lti/v2/variable#User.scope.mentor A comma-separated list of user ID values which the current user can access as a mentor. Corresponds to the role_scope_mentor launch parameter. |
User.username | http://purl.imsglobal.org/vocab/lti/v2/variable#User.username The username that identifies the user within the Tool Consumer system. |
{ "email" : "support@lms.example.com" }
Property | Mult | Description | Type |
---|---|---|---|
1 | The email of the primary contact for the associated object. | xs:normalizedString |
HttpMethod
instances are enumerable, and they must be referenced by a simple name. The default vocabulary of simple names for instances of the HttpMethod
class are listed in Table 3.
Simple Name | URI / Description |
---|---|
DELETE | http://purl.imsglobal.org/vocab/lti/v2/lti#DELETE |
GET | http://purl.imsglobal.org/vocab/lti/v2/lti#GET |
POST | http://purl.imsglobal.org/vocab/lti/v2/lti#POST |
PUT | http://purl.imsglobal.org/vocab/lti/v2/lti#PUT |
{ "default_value" : "Omega LMS", "key" : "product.name" }
Property | Mult | Description | Type |
---|---|---|---|
default_value | 0..1 | The default value for the display name. This value is used if (1) the key attribute is undefined, (2) the localization capability is not enabled, or (3) a value for the specified key is not found in the locale-specific resource bundle. | LongName.Type |
key | 0..1 | The key used to lookup the locale-specific value from a resource bundle. | Name.Type |
{ "default_value" : "Omega LMS is a fictitious Learning Management System", "key" : "product.version" }
Property | Mult | Description | Type |
---|---|---|---|
default_value | 0..1 | This is the default value for the text. This default value is used if (1) the key is not specified, (2) the localization capability is not enabled, or (3) the specified key is not found in the locale-specific resource bundle. | Text.Type |
key | 0..1 | If localization is supported then the key identifies a property in the bundle returned by the get-bundle-request message handler. | Name.Type |
ProductFamily
: The collection of all versions of a given product.
ProductInfo
: Encapsulates information about one particular version of a product.
ProductInstance
: Represents one deployed instance of a particular version of a product.
ProductProfile
: Defines a view of a deployed instance of a product. This view may be customized for different integration partners.
Vendor
.{ "code" : "omega", "vendor" : { ... } }
Property | Mult | Description | Type |
---|---|---|---|
code | 1 | A unique identifier for the resource. | Token.Type |
vendor | 1 | The vendor that owns the ProductFamily. | Vendor |
{ "product_name" : { ... }, "product_version" : "2.3", "description" : { ... }, "technical_description" : { ... }, "product_family" : { ... } }
Property | Mult | Description | Type |
---|---|---|---|
product_name | 1 | A name for the product, suitable for display to end users. | LocalizedName |
product_version | 1 | This is the version of the product. | xs:normalizedString |
description | 0..1 | This is a description of the product suitable for display to end-users. | LocalizedText |
technical_description | 0..1 | This is a human readable description of the technical aspects of this product that might be of interest to developers who wish to integrate with this product via LTI. | LocalizedText |
product_family | 1 | An inverse attribute that references the ProductFamily within which this ProductInfo is defined. | ProductFamily |
{ "guid" : "c86542d5-fde1-4aae-ae18-7018089fddcd", "product_info" : { ... }, "service_owner" : { ... }, "service_provider" : { ... } }
Property | Mult | Description | Type |
---|---|---|---|
guid | 1 | A globally unique identifier for the service provider. As a best practice, this value should match an Internet domain name assigned by ICANN, but any globally unique identifier is acceptable. | GUID.Type |
product_info | 1 | This is metadata about the product described in the profile. | ProductInfo |
service_owner | 0..1 | The entity that owns the services provided by this product instance. | ServiceOwner |
service_provider | 0..1 | This is the service provider that hosts the deployed product. | ServiceProvider |
support | 0..1 | Contact information for support on this deployed instance of the product (Tool or ToolConsumer). | Contact |
{ "@type" : "RestService", "@id" : "tcp:ToolProxy.collection", "endpoint" : "http://lms.example.com/resources/ToolProxy/", "format" : [ ... ], "action" : [ ... ] }
Property | Mult | Description | Type |
---|---|---|---|
@id | 1 | The URI that identifies this RestService instance. |
xs:anyURI |
endpoint | 1 | A URI template that defines the REST endpoint for resources that may be accessed via the REST service. The URI template should conform to the syntax in the proposed IETF standard [draft-gregorio-uritemplate-08]. | xs:anyURI |
format | 1..* | The content type (also known as media type) of resources accessed via the endpoint defined by this RestService descriptor. The endpoint of a REST service may support more than one content type if content negotiation is enabled as described in the HTTP 1.1 specification. | xs:normalizedString |
action | 1..* | Specifies an HTTP action that is supported at the REST endpoint. A given endpoint may support more than one action. For example, it is common practice for a collection endpoint to accept POST requests, and a different item endpoint to accept GET, PUT, and DELETE requests. | HttpMethod (Simple Name reference)
|
{ "@id" : "http://state.university.edu/", "timestamp" : "2012-03-28T09:08:16-04:00", "service_owner_name" : { ... }, "description" : { ... }, "support" : { ... } }
Property | Mult | Description | Type |
---|---|---|---|
timestamp | 1 | A timestamp for the ServiceOwner record. This value is useful for determining which record is most current. | xs:dateTime |
service_owner_name | 1 | The name of the service owner, suitable for display to end users. | LocalizedName |
description | 0..1 | A description of the service owner, suitable for display to end-users. | LocalizedText |
{ "@id" : "http://yasp.example.com/ServiceProvider", "guid" : "yasp.example.com", "timestamp" : "2012-03-28T09:08:16-04:00", "service_provider_name" : { ... }, "description" : { ... }, "support" : { ... } }
Property | Mult | Description | Type |
---|---|---|---|
@id | 0..1 | The URI that identifies this ServiceProvider instance. |
xs:anyURI |
guid | 1 | A globally unique identifier for the service provider. As a best practice, this value should match an Internet domain name assigned by ICANN, but any globally unique identifier is acceptable. | GUID.Type |
timestamp | 1 | A timestamp for the ServiceProvider record. This value is useful for determining which record is most current. | xs:dateTime |
service_provider_name | 1 | The name of the service provider, suitable for display to end users. | LocalizedName |
description | 0..1 | A description of the service provider, suitable for display to end-users. | LocalizedText |
support | 0..1 | Contact information for support from a service provider. | Contact |
{ "@context" : [ ... ], "@type" : "ToolConsumerProfile", "@id" : "http://lms.example.com/profile/b6ffa601-ce1d-4549-9ccf-145670a964d4", "lti_version" : "LTI-2p0", "guid" : "b6ffa601-ce1d-4549-9ccf-145670a964d4", "product_instance" : { ... }, "capability_offered" : [ ... ], "service_offered" : [ ... ] }
Property | Mult | Description | Type |
---|---|---|---|
@context | 1..* | This value specifies one or more JSON-LD contexts, either by reference or by value. When multiple contexts are specified, they must be encapsulated within an array. For most implementations, the value will be the single URI for the standard context associated with the
|
JSON-LD Context |
@type | 1 | A simple name identifying the object's type. The standard context [LTI, 14 IG] defines the following simple names that are applicable:
Implementations may use a custom JSON-LD context which defines simple names for additional types that are subtypes of |
owl:Class (Simple Name reference)
|
@id | 0..1 | The URI that identifies this ToolConsumerProfile instance. |
xs:anyURI |
lti_version | 1 | The identifier for an LTI version that the version supports. A given product (Tool or Tool Consumer) may support multiple versions, but only one version is selected for use in the integration contract. | xs:normalizedString |
guid | 1 | A globally unique identifier for the service provider. As a best practice, this value should match an Internet domain name assigned by ICANN, but any globally unique identifier is acceptable. | GUID.Type |
product_instance | 1 | An inverse attribute which references the ProductInstance within which this ProductProfile is defined. | ProductInstance |
capability_offered | * | A capability offered by the Tool Consumer to its integration partners. | Capability (Simple Name reference)
|
service_offered | * | The descriptor for a service offered by the product (Tool or Tool Consumer). | RestService |
{ "code" : "lms.example.com", "vendor_name" : { ... }, "description" : { ... }, "website" : "http://lms.example.com/products/omega", "timestamp" : "2012-03-28T09:08:16-04:00", "contact" : { ... } }
Property | Mult | Description | Type |
---|---|---|---|
@id | 0..1 | The URI that identifies this Vendor instance. |
xs:anyURI |
code | 1 | A unique identifier for the resource. | Token.Type |
vendor_name | 1 | Defines a human readable name for the Vendor. The name should be suitable for display in management screens within the Tool Provider system. | LocalizedName |
description | 0..1 | This is a human-readable description of the Vendor. | LocalizedText |
website | 0..1 | This is the URL of the vendor. | xs:anyURI |
timestamp | 1 | A timestamp for the Vendor record. This value is useful for determining which record is most current. | xs:dateTime |
contact | 0..1 | Contact information for this Vendor. | Contact |
Restriction Base | http://www.w3.org/2001/XMLSchema#NCName |
---|---|
pattern | \S* |
maxLength | 4096 |
Restriction Base | http://www.w3.org/2001/XMLSchema#normalizedString |
---|---|
maxLength | 128 |
Restriction Base | http://www.w3.org/2001/XMLSchema#NCName |
---|---|
pattern | \S* |
maxLength | 64 |
Restriction Base | http://www.w3.org/2001/XMLSchema#string |
---|---|
maxLength | 1024 |
Restriction Base | http://www.w3.org/2001/XMLSchema#token |
---|---|
pattern | \S* |
maxLength | 64 |
Title: | ToolConsumerProfile JSON Binding in the application/vnd.ims.lti.v2.toolconsumerprofile+json format |
---|---|
Editor: | Stephen Vickers (IMS Global) |
Version: | 2.0 |
Version Date: | 10 September 2015 |
Release: | Final Release |
Status: | IMS Final Release |
Purpose: | This document is made available for review and comment by the public community at large. |
The following list of individuals contributed to the authoring of this document:
Craig Dunk | D2L | Padraig O'hiceadha | HMH |
Viktor Haag | D2L | Charles Severance | IMS Global |
Brad Humphrey | Instructure | Colin Smythe | IMS Global |
Greg McFall | Pearson | Matt Stoelting | Cengage |
Mark McKell | IMS Global | John Tibbetts | Vitalsource |
Bracken Mosbacker | Lumen Learning | Claude Vervoort | Cengage |
Lance Neumann | Blackboard | Stephen Vickers | IMS Global |