=== 4.5 Onwards ===

This file has been replaced by UPGRADING.md. See MDL-81125 for further information.

===
This files describes API changes in the lti code.

=== 4.3 ===

* The `lti_libxml_disable_entity_loader` method is deprecated, as it is no longer required from PHP 8.0
* The `mod_lti_mod_form` constructor will now throw an exception if called without passing a typeid as manual configuration of
  instances is now unsupported.
* The `lti_get_lti_types_by_course` method is deprecated. Please use mod_lti\local\types_helper::get_lti_types_by_course instead.
* The capability `mod/lti:addmanualinstance` is now deprecated. Since manual instance creation is no longer supported, there is no
  substitute for this capability.

=== 4.2 ===

* get_jwt_claim_mappings() function has been added to service_base class. It allows a service subplugin to be
  compatible with LTI 1.3 by exposing its 1.1 custom parameters to LTI 1.3 claim mapping.
* The `serialise_tool_proxy` method, deprecated since 3.10, has been removed and can no longer be used

=== 4.1 ===

* The callback get_shortcuts() is now removed. Please use get_course_content_items and get_all_content_items instead.
* Services can now implement the override_endpoint function to replace the launch url and/or the custom parameters.

=== 3.10 ===

* Select Content supports multiple, allowing a tool to return more than one link at a time.
  Parameter multiple in function lti_build_content_item_selection_request() is now set to true.
* Deprecated unused function after external function, 'get_tool_proxies()', was refactored:
    - serialise_tool_proxy()

=== 3.8 ===

* The following functions have been finally deprecated and can not be used anymore:
    * lti_scale_used()

=== 3.7 ===

* Deprecated functions to add support for LTI 1 tools to access services:
    - mod_lti\local\ltiservice\service_base->check_tool_proxy()
    - mod_lti\local\ltiservice\service_base->check_type()
    - mod_lti\local\ltiservice\resource_base->check_tool_proxy()
    - mod_lti\local\ltiservice\resource_base->check_type()
    - mod_lti_edit_types_form->get_lti_advantage_services()
  replaced by:
    - mod_lti\local\ltiservice\service_base->check_tool()
    - mod_lti\local\ltiservice\resource_base->check_tool()
    - mod_lti_edit_types_form->get_lti_services()
* Deprecated unused function:
    - mod_lti\local\ltiservice\service_base->get_configuration_parameter_names()
* Deprecated functions to simplify implementation of LTI scopes for accessing services:
    - mod_lti\local\ltiservice\resource_base->get_permissions()
    - ltiservice_gradebookservices\local\resources\lineitem\get_permissions()
    - ltiservice_gradebookservices\local\resources\lineitems\get_permissions()
    - ltiservice_gradebookservices\local\resources\results\get_permissions()
    - ltiservice_gradebookservices\local\resources\scores\get_permissions()
    - ltiservice_memberships\local\resources\contextmemberships\get_permissions()
    replaced by:
    - mod_lti\local\ltiservice\service_base->get_permitted_scopes()
    - ltiservice_gradebookservices\local\service\gradebookservices->get_permitted_scopes()
    - ltiservice_memberships\local\service\memberships\->get_permitted_scopes()
* Deprecated function to remove definition as static:
    - ltiservice_memberships\local\service\memberships\get_users_json()
    replaced by:
    - ltiservice_memberships\local\service\memberships\get_members_json()

=== 3.4 ===

* The following functions, previously used (exclusively) by upgrade steps are not available
  anymore because of the upgrade cleanup performed for this version. See MDL-57432 for more info:
    - mod_lti_upgrade_custom_separator()

=== 3.2 ===

* Support for LTI ContentItem message type.
* New function lti_build_content_item_selection_request() for building an LTI ContentItemSelectionRequest.
* New Select content button in External tool configuration page that lets the user configure an external tool by fetching tool
  configuration content from the preconfigured tool's content selection interface.

=== 3.1 ===

* When requesting a grade from the outcome service, and empty grade will now be returned as
  an empty grade in accordance with the spec. Previously a grade of 0 would be returned.

=== 3.0 ===

* Function lti_view (locallib.php) was renamed to lti_launch_tool.
  A new and different lti_view function was created in the module lib.php containing the code
  for launching events and update the completion status for the module.


=== 2.8 ===

* Support for LTI 2 added, including extensible services implemented as ltiservice plugins.
* Function sendOAuthBodyPOST removed from OAuthBody.php because it was not being used.
* The field 'grade' in the table {lti} is now an integer rather than a numeric to bring it
  in line with the 'grade' field in other activities.

=== 2.7 ===

* mod_lti\event\unknown_service_api_called now has less data stored in 'other'
  but everything is still available for event observers via method get_message_data()
