org.imsglobal.lti.BasicLTIConstants Maven / Gradle / Ivy
Show all versions of basiclti-util Show documentation
/*
* Copyright (c) 2008 IMS GLobal Learning Consortium
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
* implied. See the License for the specific language governing
* permissions and limitations under the License.
*/
package org.imsglobal.lti;
public class BasicLTIConstants {
/**
* context_id=8213060-006f-27b2066ac545
*
* This is an opaque identifier that uniquely identifies the context that
* contains the link being launched.
*/
public static final String CONTEXT_ID = "context_id";
/**
* context_label=SI182
*
* A label for the context - intended to fit in a column.
*/
public static final String CONTEXT_LABEL = "context_label";
/**
* context_title=Design of Personal Environments
*
* A title of the context - it should be about the length of a line.
*/
public static final String CONTEXT_TITLE = "context_title";
/**
* context_type=CourseSection
*
* This string is a comma-separated list of URN values that identify the type
* of context. At a minimum, the list MUST include a URN value drawn from the
* LIS vocabulary (see Appendix A). The assumed namespace of these URNs is the
* LIS vocabulary so TCs can use the handles when the intent is to refer to an
* LIS context type. If the TC wants to include a context type from another
* namespace, a fully-qualified URN should be used.
*/
public static final String CONTEXT_TYPE = "context_type";
public static final String CONTEXT_TYPE_COURSE_OFFERING = "CourseOffering";
public static final String CONTEXT_TYPE_COURSE_SECTION = "CourseSection";
public static final String CONTEXT_TYPE_COURSE_TEMPLATE = "CourseTemplate";
public static final String CONTEXT_TYPE_GROUP = "Group";
/**
* ext_param=value
*
* Systems can add their own values to the launch but should prefix
* any extensions with "ext_".
*/
public static final String EXTENSION_PREFIX = "ext_";
/**
* custom_keyname=value
*
* The creator of a Basic LTI link can add custom key/value parameters to a
* launch which are to be included with the launch of the Basic LTI link. The
* Common Cartridge section below describes how these parameters are
* represented when storing custom parameters in a Common Cartridge.
*
* When there are custom name / value parameters in the launch, a POST
* parameter is included for each custom parameter. The parameter names are
* mapped to lower case and any character that is neither a number nor letter
* in a parameter name is replaced with an "underscore". So if a custom entry
* was as follows:
*
* Review:Chapter=1.2.56
*
* Would map to: custom_review_chapter=1.2.56
*
* Creators of Basic LTI links would be well served to limit their parameter
* names to lower case and to use no punctuation other than underscores. If
* these custom parameters are included in the Basic LTI link, the TC must
* include them in the launch data or the TP may fail to function.
*/
public static final String CUSTOM_PREFIX = "custom_";
/**
* Parameters with the OAuth prefix are also acceptible.
*/
public static final String OAUTH_PREFIX = "oauth_";
/**
* launch_presentation_document_target=iframe
*
* The value should be either 'frame', 'iframe' or 'window'. This field
* communicates the kind of browser window/frame where the TC has launched the
* tool.
*/
public static final String LAUNCH_PRESENTATION_DOCUMENT_TARGET = "launch_presentation_document_target";
/**
* launch_presentation_height=240
*
* The height of the window or frame where the content from the tool will be
* displayed.
*/
public static final String LAUNCH_PRESENTATION_HEIGHT = "launch_presentation_height";
/**
* launch_presentation_locale=en_US_variant
*
* Language, country and variant separated by underscores. Language is the
* lower-case, two-letter code as defined by ISO-639 (list of codes available
* at http://www.ics.uci.edu/pub/ietf/http/related/iso639.txt). Country is the
* upper-case, two-letter code as defined by ISO-3166 (list of codes available
* at http://www.chemie.fu- berlin.de/diverse/doc/ISO_3166.html). Country and
* variant codes are optional.
*/
public static final String LAUNCH_PRESENTATION_LOCALE = "launch_presentation_locale";
/**
* launch_presentation_return_url=http://lmsng.school.edu/portal/123/page/988/
*
* Fully qualified URL where the TP can redirect the user back to the TC interface. This
* URL can be used once the TP is finished or if the TP cannot start or has some
* technical difficulty. In the case of an error, the TP may add a parameter called
* lti_errormsg that includes some detail as to the nature of the error. The
* lti_errormsg value should make sense if displayed to the user. If the tool has
* displayed a message to the end user and only wants to give the TC a message to log,
* use the parameter lti_errorlog instead of lti_errormsg. If the tool is terminating
* normally, and wants a message displayed to the user it can include a text message as
* the lti_msg parameter to the return URL. If the tool is terminating normally and
* wants to give the TC a message to log, use the parameter lti_log. This data should be
* sent on the URL as a GET - so the TP should take care to keep the overall length of
* the parameters small enough to fit within the limitations of a GET request.
*/
public static final String LAUNCH_PRESENTATION_RETURN_URL = "launch_presentation_return_url";
/**
* launch_presentation_width=320
*
* The width of the window or frame where the content from the tool will be
* displayed.
*/
public static final String LAUNCH_PRESENTATION_WIDTH = "launch_presentation_width";
/**
* launch_presentation_css_url=http://www.toolconsumer.url/path/to/lti.css
*
* This points to a fully qualified URL for a CSS which can be used to style the tool.
* There are no officially defined CSS classes for this file, but the Consumer can
* apply styles to paragraphs, body, and the various HTML elements. It is up to the
* tool as to whether this CSS is used or not, and in what order this is included relative
* to the tool-specific CSS.
*/
public static final String LAUNCH_PRESENTATION_CSS_URL = "launch_presentation_css_url";
/**
* [email protected]
*
* These fields contain information about the user account that is performing
* this launch. The names of these data items are taken from LIS. The precise
* meaning of the content in these fields is defined by LIS.
*/
public static final String LIS_PERSON_CONTACT_EMAIL_PRIMARY = "lis_person_contact_email_primary";
/**
* lis_person_name_family=Public
*
* These fields contain information about the user account that is performing
* this launch. The names of these data items are taken from LIS. The precise
* meaning of the content in these fields is defined by LIS.
*/
public static final String LIS_PERSON_NAME_FAMILY = "lis_person_name_family";
/**
* lis_person_name_full=Jane Q. Public
*
* These fields contain information about the user account that is performing
* this launch. The names of these data items are taken from LIS. The precise
* meaning of the content in these fields is defined by LIS.
*/
public static final String LIS_PERSON_NAME_FULL = "lis_person_name_full";
/**
* lis_person_name_given=Jane
*
* These fields contain information about the user account that is performing
* this launch. The names of these data items are taken from LIS. The precise
* meaning of the content in these fields is defined by LIS.
*/
public static final String LIS_PERSON_NAME_GIVEN = "lis_person_name_given";
/**
* lis_person_sourcedid=school.edu:user
*
* This field contains the LIS identifier for the user account that is
* performing this launch. The example syntax of "school:user"
* is not the required format – lis_person_sourcedid is simply a
* unique identifier (i.e., a normalized string). This field
* is optional and its content and meaning are defined by LIS.
*/
public static final String LIS_PERSON_SOURCEDID = "lis_person_sourcedid";
/**
* lis_course_offering_sourcedid=school.edu:SI182-F08
* lis_course_section_sourcedid=school.edu:SI182-001-F08
*
* These fields contain LIS course identifiers associated with the
* context of this launch. These fields are optional and their
* content and meaning are defined by LIS.
*/
public static final String LIS_COURSE_OFFERING_SOURCEDID = "lis_course_offering_sourcedid";
public static final String LIS_COURSE_SECTION_SOURCEDID = "lis_course_section_sourcedid";
/**
* lis_outcome_service_url=http://lmsng.school.edu/service/ltiout/
*
* This field should be no more than 1023 characters long and the TP
* should assume that the URL might change from launch to launch and
* allow for the fact that a TC might change their service URL from
* launch to launch and only use the most recent value for this
* parameter. The service URL may support various operations / services.
* The TC will respond with a response of 'unimplemented' for services
* it does not support.
*/
public static final String LIS_OUTCOME_SERVICE_URL = "lis_outcome_service_url";
/**
* lis_result_sourcedid=83873872987329873264783687634
*
* This field contains an identifier that indicates the LIS Result
* Identifier (if any) associated with this launch. This field is
* optional and its content and meaning is defined by LIS.
*/
public static final String LIS_RESULT_SOURCEDID = "lis_result_sourcedid";
/**
* lti_message_type=basic-lti-launch-request
*
* This indicates that this is a Basic LTI Launch Message. This allows a TP to
* accept a number of different LTI message types at the same launch URL. This
* parameter is required.
*/
public static final String LTI_MESSAGE_TYPE = "lti_message_type";
public static final String LTI_MESSAGE_TYPE_TOOLPROXYREGISTRATIONREQUEST = "ToolProxyRegistrationRequest";
public static final String LTI_MESSAGE_TYPE_TOOLPROXY_RE_REGISTRATIONREQUEST = "ToolProxyReregistrationRequest";
public static final String LTI_MESSAGE_TYPE_BASICLTILAUNCHREQUEST = "basic-lti-launch-request";
/**
* lti_version=LTI-1p0
*
* This indicates which version of the specification is being used for this
* particular message. This parameter is required.
*/
public static final String LTI_VERSION = "lti_version";
public static final String LTI_VERSION_1 = "LTI-1p0";
public static final String LTI_VERSION_2 = "LTI-2p0";
/**
* tool_consumer_info_product_family_code=desire2learn
*
* In order to better assist tools in using extensions and also making their user
* interface fit into the TC's user interface that they are being called from,
* each TC is encouraged to include the this parameter. Possible example values
* for this field might be:
*
* learn
* desire2learn
* sakai
* eracer
* olat
* webct
* This parameter is optional but recommended.
*/
public static final String TOOL_CONSUMER_INFO_PRODUCT_FAMILY_CODE = "tool_consumer_info_product_family_code";
/**
* tool_consumer_info_version=9.2.4
*
* This field should have a major release number followed by a period. The format of the minor release is flexible. Possible vaues for this field might be:
*
* 9.1.7081
* 2.8-01
* 7.1
* 8
* The Tool Provider should be flexible when parsing this field. This parameter is optional but recommended.
*/
public static final String TOOL_CONSUMER_INFO_VERSION = "tool_consumer_info_version";
/**
* resource_link_id=88391-e1919-bb3456
*
* This is an opaque unique identifier that the TC guarantees will be unique
* within the TC for every placement of the link. If the tool / activity is
* placed multiple times in the same context, each of those placements will be
* distinct. This value will also change if the item is exported from one
* system or context and imported into another system or context. This
* parameter is required.
*/
public static final String RESOURCE_LINK_ID = "resource_link_id";
/**
* resource_link_title=My Weekly Wiki
*
* A title for the resource. This is the clickable text that appears
* in the link. This parameter is recommended.
*/
public static final String RESOURCE_LINK_TITLE = "resource_link_title";
/**
* resource_link_description=…
*
* A plain text description of the link’s destination, suitable for
* display alongside the link. Typically no more than several lines
* long. This parameter is optional.
*/
public static final String RESOURCE_LINK_DESCRIPTION = "resource_link_description";
/**
* roles=Instructor,Student
*
* A comma-separated list of URN values for roles. If this list is non-empty,
* it should contain at least one role from the LIS System Role, LIS
* Institution Role, or LIS Context Role vocabularies (See Appendix A). The
* assumed namespace of these URNs is the LIS vocabulary of LIS Context Roles
* so TCs can use the handles when the intent is to refer to an LIS context
* role. If the TC wants to include a role from another namespace, a
* fully-qualified URN should be used. Usage of roles from non-LIS
* vocabularies is discouraged as it may limit interoperability. This
* parameter is recommended.
*/
public static final String ROLES = "roles";
/**
* tc_profile_url=http://...
*
* This URL specifies the address where the Tool Provider can retrieve
* the Tool Consumer Profile. This URL must be retrievable by a GET
* request by the Tool Provider. If the URL is protected from retrieval
* in general, the Tool Consumer must append the necessary parameters to
* allow the Tool Provider to retrieve the URL with nothing more than
* a GET request. It is legal for this URL to contain a security token
* that is changed for each ToolProxyRegistrationRequest so the Tool
* Provider must retrieve the tc_profile_url on each request.
*/
public static final String TC_PROFILE_URL = "tc_profile_url";
/**
* [email protected]
*
* An email contact for the TC instance.
*/
public static final String TOOL_CONSUMER_INSTANCE_CONTACT_EMAIL = "tool_consumer_instance_contact_email";
/**
* tool_consumer_instance_description=University of School (LMSng)
*
* This is a user visible field - it should be about the length of a line.
*/
public static final String TOOL_CONSUMER_INSTANCE_DESCRIPTION = "tool_consumer_instance_description";
// global settings
/**
* tool_consumer_instance_guid=lmsng.school.edu
*
* This is a key to be used when setting a TC-wide password. The TP uses this
* as a key to look up the TC-wide secret when validating a message. A common
* practice is to use the DNS of the organization or the DNS of the TC
* instance. If the organization has multiple TC instances, then the best
* practice is to prefix the domain name with a locally unique identifier for
* the TC instance. This parameter is recommended.
*/
public static final String TOOL_CONSUMER_INSTANCE_GUID = "tool_consumer_instance_guid";
/**
* tool_consumer_instance_name=SchoolU
*
* This is a user visible field - it should be about the length of a column.
*/
public static final String TOOL_CONSUMER_INSTANCE_NAME = "tool_consumer_instance_name";
/**
* Missing from implementation guide. Needs documentation. Not required, but
* "tasty".
*/
public static final String TOOL_CONSUMER_INSTANCE_URL = "tool_consumer_instance_url";
/**
* user_id=0ae836b9-7fc9-4060-006f-27b2066ac545
*
* Uniquely identifies the user. This should not contain any identifying
* information for the user. Best practice is that this field should be a
* TC-generated long-term "primary key" to the user record - not the logical
* key. This parameter is recommended.
*/
public static final String USER_ID = "user_id";
/**
* user_image=http://my.sakai.org/direct/profile/0ae836b9-7fc9-4060-006f-27b2066ac545/image
*
* This attribute specifies the URI for an image of the user who launched this request.
* This image is suitable for use as a "profile picture" or an avatar representing the user.
* It is expected to be a relatively small graphic image file using a widely supported image
* format (i.e. PNG, JPG, or GIF) with a square aspect ratio. This parameter is optional.
*/
public static final String USER_IMAGE = "user_image";
/**
* ext_sakai_provider_eid=jsmith26
*
* If set, this will signal that the external application has provided an eid which
* should be used preferentially. Many external applications will not have access to a user's uuid
* in Sakai, so this allows integrations with those systems.
* This parameter is optional and is unique to the Sakai Basic LTI provider.
*/
public static final String EXT_SAKAI_PROVIDER_EID = "ext_sakai_provider_eid";
/**
* ext_sakai_provider_displayid=john.smith
*
* If set, this will indicate to an external application that the user is normally
* known by this ID and when displaying the ID to the user this ID should be used instead of the
* user_id and ext_sakai_provider_eid.
* This parameter is optional and is unique to the Sakai Basic LTI provider.
*/
public static final String EXT_SAKAI_PROVIDER_DISPLAYID = "ext_sakai_provider_displayid";
/**
* Utility array useful for validating property names when building launch
* data.
*/
public static final String[] validPropertyNames = { CONTEXT_ID,
CONTEXT_LABEL, CONTEXT_TITLE, CONTEXT_TYPE,
LAUNCH_PRESENTATION_DOCUMENT_TARGET, LAUNCH_PRESENTATION_HEIGHT,
LAUNCH_PRESENTATION_LOCALE, LAUNCH_PRESENTATION_RETURN_URL,
LAUNCH_PRESENTATION_WIDTH, LIS_PERSON_CONTACT_EMAIL_PRIMARY,
LAUNCH_PRESENTATION_CSS_URL,
TOOL_CONSUMER_INFO_PRODUCT_FAMILY_CODE,
TOOL_CONSUMER_INFO_VERSION,
LIS_PERSON_NAME_FAMILY, LIS_PERSON_NAME_FULL, LIS_PERSON_NAME_GIVEN,
LIS_PERSON_SOURCEDID, LIS_COURSE_OFFERING_SOURCEDID,
LIS_COURSE_SECTION_SOURCEDID,
LIS_OUTCOME_SERVICE_URL, LIS_RESULT_SOURCEDID,
LTI_MESSAGE_TYPE, LTI_VERSION, RESOURCE_LINK_ID,
RESOURCE_LINK_TITLE, RESOURCE_LINK_DESCRIPTION, ROLES,
TC_PROFILE_URL,
TOOL_CONSUMER_INSTANCE_CONTACT_EMAIL, TOOL_CONSUMER_INSTANCE_DESCRIPTION,
TOOL_CONSUMER_INSTANCE_GUID, TOOL_CONSUMER_INSTANCE_NAME,
TOOL_CONSUMER_INSTANCE_URL, USER_ID, USER_IMAGE };
/**
* The default site type to use if a site needs to be created. Can be overriden in sakai.properties or as part of the launch.
* This contains a number of preconfigured roles, so that the IMS role vocabulary can be used.
* See BLTI-151
*/
public static final String NEW_SITE_TYPE = "lti";
}