Search moodle.org's
Developer Documentation

See Release Notes

  • Bug fixes for general core bugs in 4.0.x will end 8 May 2023 (12 months).
  • Bug fixes for security issues in 4.0.x will end 13 November 2023 (18 months).
  • PHP version: minimum PHP 7.3.0 Note: the minimum PHP version has increased since Moodle 3.10. PHP 7.4.x is also supported.

Differences Between: [Versions 310 and 400] [Versions 311 and 400] [Versions 39 and 400] [Versions 400 and 401] [Versions 400 and 402] [Versions 400 and 403]

   1  <?php
   2  // This file is part of Moodle - http://moodle.org/
   3  //
   4  // Moodle is free software: you can redistribute it and/or modify
   5  // it under the terms of the GNU General Public License as published by
   6  // the Free Software Foundation, either version 3 of the License, or
   7  // (at your option) any later version.
   8  //
   9  // Moodle is distributed in the hope that it will be useful,
  10  // but WITHOUT ANY WARRANTY; without even the implied warranty of
  11  // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  12  // GNU General Public License for more details.
  13  //
  14  // You should have received a copy of the GNU General Public License
  15  // along with Moodle.  If not, see <http://www.gnu.org/licenses/>.
  16  
  17  
  18  /**
  19   * Core external functions and service definitions.
  20   *
  21   * The functions and services defined on this file are
  22   * processed and registered into the Moodle DB after any
  23   * install or upgrade operation. All plugins support this.
  24   *
  25   * For more information, take a look to the documentation available:
  26   *     - Webservices API: {@link http://docs.moodle.org/dev/Web_services_API}
  27   *     - External API: {@link http://docs.moodle.org/dev/External_functions_API}
  28   *     - Upgrade API: {@link http://docs.moodle.org/dev/Upgrade_API}
  29   *
  30   * @package    core_webservice
  31   * @category   webservice
  32   * @copyright  2009 Petr Skodak
  33   * @license    http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
  34   */
  35  
  36  $functions = array(
  37      'core_auth_confirm_user' => array(
  38          'classname'   => 'core_auth_external',
  39          'methodname'  => 'confirm_user',
  40          'description' => 'Confirm a user account.',
  41          'type'        => 'write',
  42          'ajax'          => true,
  43          'loginrequired' => false,
  44      ),
  45      'core_auth_request_password_reset' => array(
  46          'classname'   => 'core_auth_external',
  47          'methodname'  => 'request_password_reset',
  48          'description' => 'Requests a password reset.',
  49          'type'        => 'write',
  50          'ajax'          => true,
  51          'loginrequired' => false,
  52      ),
  53      'core_auth_is_minor' => array(
  54          'classname'   => 'core_auth_external',
  55          'methodname'  => 'is_minor',
  56          'description' => 'Requests a check if a user is a digital minor.',
  57          'type'        => 'read',
  58          'ajax'          => true,
  59          'loginrequired' => false,
  60      ),
  61      'core_auth_is_age_digital_consent_verification_enabled' => array(
  62          'classname'   => 'core_auth_external',
  63          'methodname'  => 'is_age_digital_consent_verification_enabled',
  64          'description' => 'Checks if age digital consent verification is enabled.',
  65          'type'        => 'read',
  66          'ajax'          => true,
  67          'loginrequired' => false,
  68      ),
  69      'core_auth_resend_confirmation_email' => array(
  70          'classname'   => 'core_auth_external',
  71          'methodname'  => 'resend_confirmation_email',
  72          'description' => 'Resend confirmation email.',
  73          'type'        => 'write',
  74          'ajax'          => true,
  75          'loginrequired' => false,
  76      ),
  77      'core_backup_get_async_backup_progress' => array(
  78          'classname'   => 'core_backup_external',
  79          'classpath' => 'backup/externallib.php',
  80          'methodname'  => 'get_async_backup_progress',
  81          'description' => 'Get the progress of an Asyncronhous backup.',
  82          'type'        => 'read',
  83          'ajax'          => true,
  84          'loginrequired' => true,
  85      ),
  86      'core_backup_get_async_backup_links_backup' => array(
  87          'classname'   => 'core_backup_external',
  88          'classpath' => 'backup/externallib.php',
  89          'methodname'  => 'get_async_backup_links_backup',
  90          'description' => 'Gets the data to use when updating the status table row in the UI for when an async backup completes.',
  91          'type'        => 'read',
  92          'ajax'          => true,
  93          'loginrequired' => true,
  94     ),
  95     'core_backup_get_async_backup_links_restore' => array(
  96          'classname'   => 'core_backup_external',
  97          'classpath' => 'backup/externallib.php',
  98          'methodname'  => 'get_async_backup_links_restore',
  99          'description' => 'Gets the data to use when updating the status table row in the UI for when an async restore completes.',
 100          'type'        => 'read',
 101          'ajax'          => true,
 102          'loginrequired' => true,
 103      ),
 104      'core_backup_get_copy_progress' => array(
 105          'classname'   => 'core_backup_external',
 106          'classpath' => 'backup/externallib.php',
 107          'methodname'  => 'get_copy_progress',
 108          'description' => 'Gets the progress of course copy operations.',
 109          'type'        => 'read',
 110          'ajax'          => true,
 111          'loginrequired' => true,
 112      ),
 113      'core_backup_submit_copy_form' => array(
 114          'classname'   => 'core_backup_external',
 115          'classpath' => 'backup/externallib.php',
 116          'methodname'  => 'submit_copy_form',
 117          'description' => 'Handles ajax submission of course copy form.',
 118          'type'        => 'read',
 119          'ajax'          => true,
 120          'loginrequired' => true,
 121      ),
 122      'core_badges_get_user_badges' => array(
 123          'classname'     => 'core_badges_external',
 124          'methodname'    => 'get_user_badges',
 125          'description'   => 'Returns the list of badges awarded to a user.',
 126          'type'          => 'read',
 127          'capabilities'  => 'moodle/badges:viewotherbadges',
 128          'services'      => array(MOODLE_OFFICIAL_MOBILE_SERVICE),
 129      ),
 130      'core_blog_get_entries' => array(
 131          'classname'   => 'core_blog\external',
 132          'methodname'  => 'get_entries',
 133          'description' => 'Returns blog entries.',
 134          'type'        => 'read',
 135          'services'    => array(MOODLE_OFFICIAL_MOBILE_SERVICE),
 136          'ajax'          => true,
 137          'loginrequired' => false,
 138      ),
 139      'core_blog_view_entries' => array(
 140          'classname'   => 'core_blog\external',
 141          'methodname'  => 'view_entries',
 142          'description' => 'Trigger the blog_entries_viewed event.',
 143          'type'        => 'read',
 144          'services'    => array(MOODLE_OFFICIAL_MOBILE_SERVICE),
 145          'ajax'          => true,
 146          'loginrequired' => false,
 147      ),
 148      'core_calendar_get_calendar_monthly_view' => array(
 149          'classname' => 'core_calendar_external',
 150          'methodname' => 'get_calendar_monthly_view',
 151          'description' => 'Fetch the monthly view data for a calendar',
 152          'classpath' => 'calendar/externallib.php',
 153          'type' => 'read',
 154          'capabilities' => '',
 155          'ajax' => true,
 156          'services' => array(MOODLE_OFFICIAL_MOBILE_SERVICE),
 157      ),
 158      'core_calendar_get_calendar_day_view' => array(
 159          'classname' => 'core_calendar_external',
 160          'methodname' => 'get_calendar_day_view',
 161          'description' => 'Fetch the day view data for a calendar',
 162          'classpath' => 'calendar/externallib.php',
 163          'type' => 'read',
 164          'capabilities' => '',
 165          'ajax' => true,
 166          'services' => array(MOODLE_OFFICIAL_MOBILE_SERVICE),
 167      ),
 168      'core_calendar_get_calendar_upcoming_view' => array(
 169          'classname' => 'core_calendar_external',
 170          'methodname' => 'get_calendar_upcoming_view',
 171          'description' => 'Fetch the upcoming view data for a calendar',
 172          'classpath' => 'calendar/externallib.php',
 173          'type' => 'read',
 174          'capabilities' => '',
 175          'ajax' => true,
 176          'services' => array(MOODLE_OFFICIAL_MOBILE_SERVICE),
 177      ),
 178      'core_calendar_update_event_start_day' => array(
 179          'classname' => 'core_calendar_external',
 180          'methodname' => 'update_event_start_day',
 181          'description' => 'Update the start day (but not time) for an event.',
 182          'classpath' => 'calendar/externallib.php',
 183          'type' => 'write',
 184          'capabilities' => 'moodle/calendar:manageentries, moodle/calendar:manageownentries, moodle/calendar:managegroupentries',
 185          'ajax' => true,
 186          'services' => array(MOODLE_OFFICIAL_MOBILE_SERVICE),
 187      ),
 188      'core_calendar_create_calendar_events' => array(
 189          'classname' => 'core_calendar_external',
 190          'methodname' => 'create_calendar_events',
 191          'description' => 'Create calendar events',
 192          'classpath' => 'calendar/externallib.php',
 193          'type' => 'write',
 194          'capabilities' => 'moodle/calendar:manageentries, moodle/calendar:manageownentries, moodle/calendar:managegroupentries',
 195          'services' => array(MOODLE_OFFICIAL_MOBILE_SERVICE),
 196      ),
 197      'core_calendar_delete_calendar_events' => array(
 198          'classname' => 'core_calendar_external',
 199          'methodname' => 'delete_calendar_events',
 200          'description' => 'Delete calendar events',
 201          'classpath' => 'calendar/externallib.php',
 202          'type' => 'write',
 203          'capabilities' => 'moodle/calendar:manageentries, moodle/calendar:manageownentries, moodle/calendar:managegroupentries',
 204          'ajax' => true,
 205          'services' => array(MOODLE_OFFICIAL_MOBILE_SERVICE),
 206      ),
 207      'core_calendar_get_calendar_events' => array(
 208          'classname' => 'core_calendar_external',
 209          'methodname' => 'get_calendar_events',
 210          'description' => 'Get calendar events',
 211          'classpath' => 'calendar/externallib.php',
 212          'type' => 'read',
 213          'capabilities' => 'moodle/calendar:manageentries, moodle/calendar:manageownentries, moodle/calendar:managegroupentries',
 214          'services' => array(MOODLE_OFFICIAL_MOBILE_SERVICE),
 215      ),
 216      'core_calendar_get_action_events_by_timesort' => array(
 217          'classname' => 'core_calendar_external',
 218          'methodname' => 'get_calendar_action_events_by_timesort',
 219          'description' => 'Get calendar action events by tiemsort',
 220          'classpath' => 'calendar/externallib.php',
 221          'type' => 'read',
 222          'capabilities' => 'moodle/calendar:manageentries, moodle/calendar:manageownentries, moodle/calendar:managegroupentries',
 223          'ajax' => true,
 224          'services' => array(MOODLE_OFFICIAL_MOBILE_SERVICE),
 225      ),
 226      'core_calendar_get_action_events_by_course' => array(
 227          'classname' => 'core_calendar_external',
 228          'methodname' => 'get_calendar_action_events_by_course',
 229          'description' => 'Get calendar action events by course',
 230          'classpath' => 'calendar/externallib.php',
 231          'type' => 'read',
 232          'capabilities' => 'moodle/calendar:manageentries, moodle/calendar:manageownentries, moodle/calendar:managegroupentries',
 233          'ajax' => true,
 234          'services' => array(MOODLE_OFFICIAL_MOBILE_SERVICE),
 235      ),
 236      'core_calendar_get_action_events_by_courses' => array(
 237          'classname' => 'core_calendar_external',
 238          'methodname' => 'get_calendar_action_events_by_courses',
 239          'description' => 'Get calendar action events by courses',
 240          'classpath' => 'calendar/externallib.php',
 241          'type' => 'read',
 242          'capabilities' => 'moodle/calendar:manageentries, moodle/calendar:manageownentries, moodle/calendar:managegroupentries',
 243          'ajax' => true,
 244          'services' => array(MOODLE_OFFICIAL_MOBILE_SERVICE),
 245      ),
 246      'core_calendar_get_calendar_event_by_id' => array(
 247          'classname' => 'core_calendar_external',
 248          'methodname' => 'get_calendar_event_by_id',
 249          'description' => 'Get calendar event by id',
 250          'classpath' => 'calendar/externallib.php',
 251          'type' => 'read',
 252          'capabilities' => 'moodle/calendar:manageentries, moodle/calendar:manageownentries, moodle/calendar:managegroupentries',
 253          'ajax' => true,
 254          'services' => array(MOODLE_OFFICIAL_MOBILE_SERVICE),
 255      ),
 256      'core_calendar_submit_create_update_form' => array(
 257          'classname' => 'core_calendar_external',
 258          'methodname' => 'submit_create_update_form',
 259          'description' => 'Submit form data for event form',
 260          'classpath' => 'calendar/externallib.php',
 261          'type' => 'write',
 262          'capabilities' => 'moodle/calendar:manageentries, moodle/calendar:manageownentries, moodle/calendar:managegroupentries',
 263          'ajax' => true,
 264          'services' => array(MOODLE_OFFICIAL_MOBILE_SERVICE),
 265      ),
 266      'core_calendar_get_calendar_access_information' => array(
 267          'classname' => 'core_calendar_external',
 268          'methodname' => 'get_calendar_access_information',
 269          'description' => 'Convenience function to retrieve some permissions/access information for the given course calendar.',
 270          'classpath' => 'calendar/externallib.php',
 271          'type' => 'read',
 272          'services' => array(MOODLE_OFFICIAL_MOBILE_SERVICE),
 273      ),
 274      'core_calendar_get_allowed_event_types' => array(
 275          'classname' => 'core_calendar_external',
 276          'methodname' => 'get_allowed_event_types',
 277          'description' => 'Get the type of events a user can create in the given course.',
 278          'classpath' => 'calendar/externallib.php',
 279          'type' => 'read',
 280          'services' => array(MOODLE_OFFICIAL_MOBILE_SERVICE),
 281      ),
 282      'core_calendar_get_timestamps' => [
 283          'classname'     => 'core_calendar_external',
 284          'methodname'    => 'get_timestamps',
 285          'description'   => 'Fetch unix timestamps for given date times.',
 286          'classpath' => 'calendar/externallib.php',
 287          'type'          => 'read',
 288          'ajax'          => true,
 289      ],
 290      'core_calendar_get_calendar_export_token' => [
 291          'classname'     => 'core_calendar\external\export\token',
 292          'description'   => 'Return the auth token required for exporting a calendar.',
 293          'type'          => 'read',
 294          'services'      => array(MOODLE_OFFICIAL_MOBILE_SERVICE),
 295      ],
 296      'core_calendar_delete_subscription' => [
 297          'classname' => 'core_calendar\external\subscription\delete',
 298          'description' => 'Delete the calendar subscription',
 299          'type' => 'write',
 300          'ajax' => true
 301      ],
 302      'core_cohort_add_cohort_members' => array(
 303          'classname' => 'core_cohort_external',
 304          'methodname' => 'add_cohort_members',
 305          'classpath' => 'cohort/externallib.php',
 306          'description' => 'Adds cohort members.',
 307          'type' => 'write',
 308          'capabilities' => 'moodle/cohort:assign'
 309      ),
 310      'core_cohort_create_cohorts' => array(
 311          'classname' => 'core_cohort_external',
 312          'methodname' => 'create_cohorts',
 313          'classpath' => 'cohort/externallib.php',
 314          'description' => 'Creates new cohorts.',
 315          'type' => 'write',
 316          'capabilities' => 'moodle/cohort:manage'
 317      ),
 318      'core_cohort_delete_cohort_members' => array(
 319          'classname' => 'core_cohort_external',
 320          'methodname' => 'delete_cohort_members',
 321          'classpath' => 'cohort/externallib.php',
 322          'description' => 'Deletes cohort members.',
 323          'type' => 'write',
 324          'capabilities' => 'moodle/cohort:assign'
 325      ),
 326      'core_cohort_delete_cohorts' => array(
 327          'classname' => 'core_cohort_external',
 328          'methodname' => 'delete_cohorts',
 329          'classpath' => 'cohort/externallib.php',
 330          'description' => 'Deletes all specified cohorts.',
 331          'type' => 'write',
 332          'capabilities' => 'moodle/cohort:manage'
 333      ),
 334      'core_cohort_get_cohort_members' => array(
 335          'classname' => 'core_cohort_external',
 336          'methodname' => 'get_cohort_members',
 337          'classpath' => 'cohort/externallib.php',
 338          'description' => 'Returns cohort members.',
 339          'type' => 'read',
 340          'capabilities' => 'moodle/cohort:view'
 341      ),
 342      'core_cohort_search_cohorts' => array(
 343          'classname' => 'core_cohort_external',
 344          'methodname' => 'search_cohorts',
 345          'classpath' => 'cohort/externallib.php',
 346          'description' => 'Search for cohorts.',
 347          'type' => 'read',
 348          'ajax' => true,
 349          'capabilities' => 'moodle/cohort:view'
 350      ),
 351      'core_cohort_get_cohorts' => array(
 352          'classname' => 'core_cohort_external',
 353          'methodname' => 'get_cohorts',
 354          'classpath' => 'cohort/externallib.php',
 355          'description' => 'Returns cohort details.',
 356          'type' => 'read',
 357          'capabilities' => 'moodle/cohort:view'
 358      ),
 359      'core_cohort_update_cohorts' => array(
 360          'classname' => 'core_cohort_external',
 361          'methodname' => 'update_cohorts',
 362          'classpath' => 'cohort/externallib.php',
 363          'description' => 'Updates existing cohorts.',
 364          'type' => 'write',
 365          'capabilities' => 'moodle/cohort:manage'
 366      ),
 367      'core_comment_get_comments' => array(
 368          'classname' => 'core_comment_external',
 369          'methodname' => 'get_comments',
 370          'description' => 'Returns comments.',
 371          'type' => 'read',
 372          'capabilities' => 'moodle/comment:view',
 373          'services' => array(MOODLE_OFFICIAL_MOBILE_SERVICE),
 374      ),
 375      'core_comment_add_comments' => array(
 376          'classname' => 'core_comment_external',
 377          'methodname' => 'add_comments',
 378          'description' => 'Adds a comment or comments.',
 379          'type' => 'write',
 380          'services' => array(MOODLE_OFFICIAL_MOBILE_SERVICE),
 381      ),
 382      'core_comment_delete_comments' => array(
 383          'classname' => 'core_comment_external',
 384          'methodname' => 'delete_comments',
 385          'description' => 'Deletes a comment or comments.',
 386          'type' => 'write',
 387          'services' => array(MOODLE_OFFICIAL_MOBILE_SERVICE),
 388      ),
 389      'core_completion_get_activities_completion_status' => array(
 390          'classname' => 'core_completion_external',
 391          'methodname' => 'get_activities_completion_status',
 392          'description' => 'Return the activities completion status for a user in a course.',
 393          'type' => 'read',
 394          'services' => array(MOODLE_OFFICIAL_MOBILE_SERVICE),
 395      ),
 396      'core_completion_get_course_completion_status' => array(
 397          'classname' => 'core_completion_external',
 398          'methodname' => 'get_course_completion_status',
 399          'description' => 'Returns course completion status.',
 400          'type' => 'read',
 401          'capabilities' => 'report/completion:view',
 402          'services' => array(MOODLE_OFFICIAL_MOBILE_SERVICE),
 403      ),
 404      'core_completion_mark_course_self_completed' => array(
 405          'classname' => 'core_completion_external',
 406          'methodname' => 'mark_course_self_completed',
 407          'description' => 'Update the course completion status for the current user (if course self-completion is enabled).',
 408          'type' => 'write',
 409          'services' => array(MOODLE_OFFICIAL_MOBILE_SERVICE),
 410      ),
 411      'core_completion_update_activity_completion_status_manually' => array(
 412          'classname' => 'core_completion_external',
 413          'methodname' => 'update_activity_completion_status_manually',
 414          'description' => 'Update completion status for the current user in an activity, only for activities with manual tracking.',
 415          'type' => 'write',
 416          'services' => array(MOODLE_OFFICIAL_MOBILE_SERVICE),
 417          'ajax' => true,
 418      ),
 419      'core_completion_override_activity_completion_status' => array(
 420          'classname'     => 'core_completion_external',
 421          'methodname'    => 'override_activity_completion_status',
 422          'description'   => 'Update completion status for a user in an activity by overriding it.',
 423          'type'          => 'write',
 424          'capabilities'  => 'moodle/course:overridecompletion',
 425          'ajax'          => true,
 426      ),
 427      'core_course_create_categories' => array(
 428          'classname' => 'core_course_external',
 429          'methodname' => 'create_categories',
 430          'classpath' => 'course/externallib.php',
 431          'description' => 'Create course categories',
 432          'type' => 'write',
 433          'capabilities' => 'moodle/category:manage'
 434      ),
 435      'core_course_create_courses' => array(
 436          'classname' => 'core_course_external',
 437          'methodname' => 'create_courses',
 438          'classpath' => 'course/externallib.php',
 439          'description' => 'Create new courses',
 440          'type' => 'write',
 441          'capabilities' => 'moodle/course:create, moodle/course:visibility'
 442      ),
 443      'core_course_delete_categories' => array(
 444          'classname' => 'core_course_external',
 445          'methodname' => 'delete_categories',
 446          'classpath' => 'course/externallib.php',
 447          'description' => 'Delete course categories',
 448          'type' => 'write',
 449          'capabilities' => 'moodle/category:manage'
 450      ),
 451      'core_course_delete_courses' => array(
 452          'classname' => 'core_course_external',
 453          'methodname' => 'delete_courses',
 454          'classpath' => 'course/externallib.php',
 455          'description' => 'Deletes all specified courses',
 456          'type' => 'write',
 457          'capabilities' => 'moodle/course:delete'
 458      ),
 459      'core_course_delete_modules' => array(
 460          'classname' => 'core_course_external',
 461          'methodname' => 'delete_modules',
 462          'classpath' => 'course/externallib.php',
 463          'description' => 'Deletes all specified module instances',
 464          'type' => 'write',
 465          'capabilities' => 'moodle/course:manageactivities'
 466      ),
 467      'core_course_duplicate_course' => array(
 468          'classname' => 'core_course_external',
 469          'methodname' => 'duplicate_course',
 470          'classpath' => 'course/externallib.php',
 471          'description' => 'Duplicate an existing course (creating a new one).',
 472          'type' => 'write',
 473          'capabilities' => 'moodle/backup:backupcourse, moodle/restore:restorecourse, moodle/course:create'
 474      ),
 475      'core_course_get_categories' => array(
 476          'classname' => 'core_course_external',
 477          'methodname' => 'get_categories',
 478          'classpath' => 'course/externallib.php',
 479          'description' => 'Return category details',
 480          'type' => 'read',
 481          'capabilities' => 'moodle/category:viewhiddencategories',
 482          'services' => array(MOODLE_OFFICIAL_MOBILE_SERVICE),
 483      ),
 484      'core_course_get_contents' => array(
 485          'classname' => 'core_course_external',
 486          'methodname' => 'get_course_contents',
 487          'classpath' => 'course/externallib.php',
 488          'description' => 'Get course contents',
 489          'type' => 'read',
 490          'capabilities' => 'moodle/course:update, moodle/course:viewhiddencourses',
 491          'services' => array(MOODLE_OFFICIAL_MOBILE_SERVICE),
 492      ),
 493      'core_course_get_course_module' => array(
 494          'classname' => 'core_course_external',
 495          'methodname' => 'get_course_module',
 496          'classpath' => 'course/externallib.php',
 497          'description' => 'Return information about a course module',
 498          'type' => 'read',
 499          'services' => array(MOODLE_OFFICIAL_MOBILE_SERVICE),
 500      ),
 501      'core_course_get_course_module_by_instance' => array(
 502          'classname' => 'core_course_external',
 503          'methodname' => 'get_course_module_by_instance',
 504          'classpath' => 'course/externallib.php',
 505          'description' => 'Return information about a given module name and instance id',
 506          'type' => 'read',
 507          'services' => array(MOODLE_OFFICIAL_MOBILE_SERVICE),
 508      ),
 509      'core_course_get_module' => array(
 510          'classname'   => 'core_course_external',
 511          'methodname'  => 'get_module',
 512          'classpath'   => 'course/externallib.php',
 513          'description' => 'Returns html with one activity module on course page',
 514          'type'        => 'read',
 515          'ajax'        => true,
 516      ),
 517      'core_courseformat_get_state' => [
 518          'classname'     => 'core_courseformat\external\get_state',
 519          'description'   => 'Get the current course state.',
 520          'type'          => 'read',
 521          'ajax'          => true,
 522      ],
 523      'core_courseformat_update_course' => [
 524          'classname'     => 'core_courseformat\external\update_course',
 525          'methodname'    => 'execute',
 526          'description'   => 'Update course contents.',
 527          'type'          => 'write',
 528          'ajax'          => true,
 529          'capabilities'  => 'moodle/course:sectionvisibility, moodle/course:activityvisibility',
 530      ],
 531      'core_course_edit_module' => array(
 532          'classname'   => 'core_course_external',
 533          'methodname'  => 'edit_module',
 534          'classpath'   => 'course/externallib.php',
 535          'description' => 'Performs an action on course module (change visibility, duplicate, delete, etc.)',
 536          'type'        => 'write',
 537          'ajax'        => true,
 538      ),
 539      'core_course_edit_section' => array(
 540          'classname'   => 'core_course_external',
 541          'methodname'  => 'edit_section',
 542          'classpath'   => 'course/externallib.php',
 543          'description' => 'Performs an action on course section (change visibility, set marker, delete)',
 544          'type'        => 'write',
 545          'ajax'        => true,
 546      ),
 547      'core_course_get_courses' => array(
 548          'classname' => 'core_course_external',
 549          'methodname' => 'get_courses',
 550          'classpath' => 'course/externallib.php',
 551          'description' => 'Return course details',
 552          'type' => 'read',
 553          'capabilities' => 'moodle/course:view, moodle/course:update, moodle/course:viewhiddencourses',
 554          'ajax' => true,
 555          'services' => array(MOODLE_OFFICIAL_MOBILE_SERVICE),
 556      ),
 557      'core_course_import_course' => array(
 558          'classname' => 'core_course_external',
 559          'methodname' => 'import_course',
 560          'classpath' => 'course/externallib.php',
 561          'description' => 'Import course data from a course into another course. Does not include any user data.',
 562          'type' => 'write',
 563          'capabilities' => 'moodle/backup:backuptargetimport, moodle/restore:restoretargetimport'
 564      ),
 565      'core_course_search_courses' => array(
 566          'classname' => 'core_course_external',
 567          'methodname' => 'search_courses',
 568          'classpath' => 'course/externallib.php',
 569          'description' => 'Search courses by (name, module, block, tag)',
 570          'type' => 'read',
 571          'ajax' => true,
 572          'services' => array(MOODLE_OFFICIAL_MOBILE_SERVICE),
 573      ),
 574      'core_course_update_categories' => array(
 575          'classname' => 'core_course_external',
 576          'methodname' => 'update_categories',
 577          'classpath' => 'course/externallib.php',
 578          'description' => 'Update categories',
 579          'type' => 'write',
 580          'capabilities' => 'moodle/category:manage',
 581      ),
 582      'core_course_update_courses' => array(
 583          'classname' => 'core_course_external',
 584          'methodname' => 'update_courses',
 585          'classpath' => 'course/externallib.php',
 586          'description' => 'Update courses',
 587          'type' => 'write',
 588          'capabilities' => 'moodle/course:update, moodle/course:changecategory, moodle/course:changefullname, '
 589              . 'moodle/course:changeshortname, moodle/course:changeidnumber, moodle/course:changesummary, moodle/course:visibility'
 590      ),
 591      'core_course_view_course' => array(
 592          'classname' => 'core_course_external',
 593          'methodname' => 'view_course',
 594          'classpath' => 'course/externallib.php',
 595          'description' => 'Log that the course was viewed',
 596          'type' => 'write',
 597          'services' => array(MOODLE_OFFICIAL_MOBILE_SERVICE),
 598      ),
 599      'core_course_get_user_navigation_options' => array(
 600          'classname' => 'core_course_external',
 601          'methodname' => 'get_user_navigation_options',
 602          'classpath' => 'course/externallib.php',
 603          'description' => 'Return a list of navigation options in a set of courses that are avaialable or not for the current user.',
 604          'type' => 'read',
 605          'services' => array(MOODLE_OFFICIAL_MOBILE_SERVICE),
 606      ),
 607      'core_course_get_user_administration_options' => array(
 608          'classname' => 'core_course_external',
 609          'methodname' => 'get_user_administration_options',
 610          'classpath' => 'course/externallib.php',
 611          'description' => 'Return a list of administration options in a set of courses that are avaialable or not for the current
 612                              user.',
 613          'type' => 'read',
 614          'services' => array(MOODLE_OFFICIAL_MOBILE_SERVICE),
 615      ),
 616      'core_course_get_courses_by_field' => array(
 617          'classname' => 'core_course_external',
 618          'methodname' => 'get_courses_by_field',
 619          'classpath' => 'course/externallib.php',
 620          'description' => 'Get courses matching a specific field (id/s, shortname, idnumber, category)',
 621          'type' => 'read',
 622          'services' => array(MOODLE_OFFICIAL_MOBILE_SERVICE),
 623      ),
 624      'core_course_check_updates' => array(
 625          'classname' => 'core_course_external',
 626          'methodname' => 'check_updates',
 627          'classpath' => 'course/externallib.php',
 628          'description' => 'Check if there is updates affecting the user for the given course and contexts.',
 629          'type' => 'read',
 630          'ajax' => true,
 631          'services' => array(MOODLE_OFFICIAL_MOBILE_SERVICE),
 632      ),
 633      'core_course_get_updates_since' => array(
 634          'classname' => 'core_course_external',
 635          'methodname' => 'get_updates_since',
 636          'classpath' => 'course/externallib.php',
 637          'description' => 'Check if there are updates affecting the user for the given course since the given time stamp.',
 638          'type' => 'read',
 639          'ajax' => true,
 640          'services' => array(MOODLE_OFFICIAL_MOBILE_SERVICE),
 641      ),
 642      'core_course_get_enrolled_courses_by_timeline_classification' => array(
 643          'classname' => 'core_course_external',
 644          'methodname' => 'get_enrolled_courses_by_timeline_classification',
 645          'classpath' => 'course/externallib.php',
 646          'description' => 'List of enrolled courses for the given timeline classification (past, inprogress, or future).',
 647          'type' => 'read',
 648          'ajax' => true,
 649          'services' => array(MOODLE_OFFICIAL_MOBILE_SERVICE),
 650      ),
 651      'core_course_get_enrolled_courses_with_action_events_by_timeline_classification' => array(
 652          'classname' => '\core_course\external\get_enrolled_courses_with_action_events_by_timeline_classification',
 653          'methodname' => 'execute',
 654          'classpath' => '',
 655          'description' => 'List of enrolled courses with action events in a given timeframe, for the given timeline classification.',
 656          'type' => 'read',
 657          'ajax' => true,
 658          'services' => array(MOODLE_OFFICIAL_MOBILE_SERVICE),
 659      ),
 660      'core_course_get_recent_courses' => array(
 661          'classname' => 'core_course_external',
 662          'methodname' => 'get_recent_courses',
 663          'classpath' => 'course/externallib.php',
 664          'description' => 'List of courses a user has accessed most recently.',
 665          'type' => 'read',
 666          'ajax' => true,
 667          'services' => array(MOODLE_OFFICIAL_MOBILE_SERVICE),
 668      ),
 669      'core_course_set_favourite_courses' => array(
 670          'classname' => 'core_course_external',
 671          'methodname' => 'set_favourite_courses',
 672          'classpath' => 'course/externallib.php',
 673          'description' => 'Add a list of courses to the list of favourite courses.',
 674          'type' => 'read',
 675          'ajax' => true,
 676          'services' => array(MOODLE_OFFICIAL_MOBILE_SERVICE),
 677      ),
 678      'core_course_get_enrolled_users_by_cmid' => array(
 679          'classname' => 'core_course_external',
 680          'methodname' => 'get_enrolled_users_by_cmid',
 681          'classpath' => 'course/externallib.php',
 682          'description' => 'List users by course module id, filter by group and active enrolment status.',
 683          'type' => 'read',
 684          'ajax' => true,
 685      ),
 686      'core_course_add_content_item_to_user_favourites' => array(
 687          'classname' => 'core_course_external',
 688          'methodname' => 'add_content_item_to_user_favourites',
 689          'classpath' => 'course/externallib.php',
 690          'description' => 'Adds a content item (activity, resource or their subtypes) to the favourites for the user.',
 691          'type' => 'write',
 692          'ajax' => true,
 693      ),
 694      'core_course_remove_content_item_from_user_favourites' => array(
 695          'classname' => 'core_course_external',
 696          'methodname' => 'remove_content_item_from_user_favourites',
 697          'classpath' => 'course/externallib.php',
 698          'description' => 'Removes a content item (activity, resource or their subtypes) from the favourites for the user.',
 699          'type' => 'write',
 700          'ajax' => true,
 701      ),
 702      'core_course_get_course_content_items' => array(
 703          'classname' => 'core_course_external',
 704          'methodname' => 'get_course_content_items',
 705          'classpath' => 'course/externallib.php',
 706          'description' => 'Fetch all the content items (activities, resources and their subtypes) for the activity picker',
 707          'type' => 'read',
 708          'ajax' => true,
 709      ),
 710      'core_course_get_activity_chooser_footer' => array(
 711          'classname' => 'core_course_external',
 712          'methodname' => 'get_activity_chooser_footer',
 713          'classpath' => 'course/externallib.php',
 714          'description' => 'Fetch the data for the activity chooser footer.',
 715          'type' => 'read',
 716          'ajax' => true,
 717      ),
 718      'core_course_toggle_activity_recommendation' => array(
 719          'classname' => 'core_course_external',
 720          'methodname' => 'toggle_activity_recommendation',
 721          'classpath' => 'course/externallib.php',
 722          'description' => 'Adds or removes an activity as a recommendation in the activity chooser.',
 723          'type' => 'write',
 724          'ajax' => true,
 725      ),
 726      'core_enrol_get_course_enrolment_methods' => array(
 727          'classname' => 'core_enrol_external',
 728          'methodname' => 'get_course_enrolment_methods',
 729          'classpath' => 'enrol/externallib.php',
 730          'description' => 'Get the list of course enrolment methods',
 731          'type' => 'read',
 732          'services' => array(MOODLE_OFFICIAL_MOBILE_SERVICE),
 733      ),
 734      'core_enrol_get_enrolled_users' => array(
 735          'classname' => 'core_enrol_external',
 736          'methodname' => 'get_enrolled_users',
 737          'classpath' => 'enrol/externallib.php',
 738          'description' => 'Get enrolled users by course id.',
 739          'type' => 'read',
 740          'capabilities' => 'moodle/user:viewdetails, moodle/user:viewhiddendetails, moodle/course:useremail, moodle/user:update, '
 741              . 'moodle/site:accessallgroups',
 742          'services' => array(MOODLE_OFFICIAL_MOBILE_SERVICE),
 743      ),
 744      'core_enrol_get_enrolled_users_with_capability' => array(
 745          'classname' => 'core_enrol_external',
 746          'methodname' => 'get_enrolled_users_with_capability',
 747          'classpath' => 'enrol/externallib.php',
 748          'description' => 'For each course and capability specified, return a list of the users that are enrolled in the course
 749                                    and have that capability',
 750          'type' => 'read',
 751      ),
 752      'core_enrol_get_potential_users' => array(
 753          'classname' => 'core_enrol_external',
 754          'methodname' => 'get_potential_users',
 755          'classpath' => 'enrol/externallib.php',
 756          'description' => 'Get the list of potential users to enrol',
 757          'ajax' => true,
 758          'type' => 'read',
 759          'capabilities' => 'moodle/course:enrolreview'
 760      ),
 761      'core_enrol_search_users' => [
 762          'classname' => 'core_enrol_external',
 763          'methodname' => 'search_users',
 764          'classpath' => 'enrol/externallib.php',
 765          'description' => 'Search within the list of course participants',
 766          'ajax' => true,
 767          'type' => 'read',
 768          'capabilities' => 'moodle/course:viewparticipants',
 769          'services' => array(MOODLE_OFFICIAL_MOBILE_SERVICE),
 770      ],
 771      'core_enrol_get_users_courses' => array(
 772          'classname' => 'core_enrol_external',
 773          'methodname' => 'get_users_courses',
 774          'classpath' => 'enrol/externallib.php',
 775          'description' => 'Get the list of courses where a user is enrolled in',
 776          'type' => 'read',
 777          'capabilities' => 'moodle/course:viewparticipants',
 778          'services' => array(MOODLE_OFFICIAL_MOBILE_SERVICE),
 779      ),
 780      'core_enrol_submit_user_enrolment_form' => array(
 781          'classname' => 'core_enrol_external',
 782          'methodname' => 'submit_user_enrolment_form',
 783          'classpath' => 'enrol/externallib.php',
 784          'description' => 'Submit form data for enrolment form',
 785          'type' => 'write',
 786          'ajax' => true,
 787      ),
 788      'core_enrol_unenrol_user_enrolment' => array(
 789          'classname' => 'core_enrol_external',
 790          'methodname' => 'unenrol_user_enrolment',
 791          'classpath' => 'enrol/externallib.php',
 792          'description' => 'External function that unenrols a given user enrolment',
 793          'type' => 'write',
 794          'ajax' => true,
 795      ),
 796      'core_fetch_notifications' => array(
 797          'classname' => 'core_external',
 798          'methodname' => 'fetch_notifications',
 799          'classpath' => 'lib/external/externallib.php',
 800          'description' => 'Return a list of notifications for the current session',
 801          'type' => 'read',
 802          'loginrequired' => false,
 803          'ajax' => true,
 804          'readonlysession' => false, // Fetching removes from stack.
 805      ),
 806      'core_session_touch' => array(
 807          'classname' => 'core\session\external',
 808          'methodname' => 'touch_session',
 809          'description' => 'Keep the users session alive',
 810          'type' => 'read',
 811          'loginrequired' => true,
 812          'ajax' => true,
 813      ),
 814      'core_session_time_remaining' => array(
 815          'classname' => 'core\session\external',
 816          'methodname' => 'time_remaining',
 817          'description' => 'Count the seconds remaining in this session',
 818          'type' => 'read',
 819          'loginrequired' => true,
 820          'ajax' => true,
 821      ),
 822      'core_files_get_files' => array(
 823          'classname' => 'core_files_external',
 824          'methodname' => 'get_files',
 825          'description' => 'browse moodle files',
 826          'type' => 'read',
 827          'classpath' => 'files/externallib.php',
 828          'services' => array(MOODLE_OFFICIAL_MOBILE_SERVICE),
 829      ),
 830      'core_files_upload' => array(
 831          'classname' => 'core_files_external',
 832          'methodname' => 'upload',
 833          'description' => 'upload a file to moodle',
 834          'type'        => 'write',
 835          'classpath'   => 'files/externallib.php',
 836      ),
 837      'core_files_delete_draft_files' => array(
 838          'classname' => 'core_files\external\delete\draft',
 839          'description' => 'Delete the indicated files (or directories) from a user draft file area.',
 840          'type'        => 'write',
 841          'services' => array(MOODLE_OFFICIAL_MOBILE_SERVICE),
 842      ),
 843      'core_files_get_unused_draft_itemid' => array(
 844          'classname' => 'core_files\external\get\unused_draft',
 845          'description' => 'Generate a new draft itemid for the current user.',
 846          'type'        => 'write',
 847          'services' => array(MOODLE_OFFICIAL_MOBILE_SERVICE),
 848      ),
 849      'core_form_get_filetypes_browser_data' => array(
 850          'classname' => 'core_form\external',
 851          'methodname' => 'get_filetypes_browser_data',
 852          'classpath' => '',
 853          'description' => 'Provides data for the filetypes element browser.',
 854          'type' => 'read',
 855          'loginrequired' => false,
 856          'ajax' => true,
 857      ),
 858      'core_form_dynamic_form' => array(
 859          'classname' => 'core_form\external\dynamic_form',
 860          'description' => 'Process submission of a dynamic (modal) form',
 861          'type' => 'write',
 862          'ajax' => true,
 863      ),
 864      'core_get_component_strings' => array(
 865          'classname' => 'core_external',
 866          'methodname' => 'get_component_strings',
 867          'classpath' => 'lib/external/externallib.php',
 868          'description' => 'Return all raw strings (with {$a->xxx}), for a specific component ' .
 869              '- similar to core get_component_strings(), call',
 870          'type' => 'read',
 871          'loginrequired' => false,
 872          'ajax' => true,
 873          'services' => array(MOODLE_OFFICIAL_MOBILE_SERVICE),
 874      ),
 875      'core_get_fragment' => array(
 876          'classname' => 'core_external',
 877          'methodname' => 'get_fragment',
 878          'classpath' => 'lib/external/externallib.php',
 879          'description' => 'Return a fragment for inclusion, such as a JavaScript page.',
 880          'type' => 'read',
 881          'ajax' => true,
 882      ),
 883      'core_get_string' => array(
 884          'classname' => 'core_external',
 885          'methodname' => 'get_string',
 886          'classpath' => 'lib/external/externallib.php',
 887          'description' => 'Return a translated string - similar to core get_string(), call',
 888          'type' => 'read',
 889          'loginrequired' => false,
 890          'ajax' => true,
 891      ),
 892      'core_get_strings' => array(
 893          'classname' => 'core_external',
 894          'methodname' => 'get_strings',
 895          'classpath' => 'lib/external/externallib.php',
 896          'description' => 'Return some translated strings - like several core get_string(), calls',
 897          'type' => 'read',
 898          'loginrequired' => false,
 899          'ajax' => true,
 900      ),
 901      'core_get_user_dates' => array(
 902          'classname' => 'core_external',
 903          'methodname' => 'get_user_dates',
 904          'classpath' => 'lib/external/externallib.php',
 905          'description' => 'Return formatted timestamps',
 906          'type' => 'read',
 907          'ajax' => true,
 908      ),
 909      'core_grades_update_grades' => array(
 910          'classname' => 'core_grades_external',
 911          'methodname' => 'update_grades',
 912          'description' => 'Update a grade item and associated student grades.',
 913          'type' => 'write',
 914      ),
 915      'core_grades_grader_gradingpanel_point_fetch' => [
 916          'classname' => 'core_grades\\grades\\grader\\gradingpanel\\point\\external\\fetch',
 917          'description' => 'Fetch the data required to display the grader grading panel for simple grading, ' .
 918              'creating the grade item if required',
 919          'type' => 'write',
 920          'ajax' => true,
 921          'services' => [MOODLE_OFFICIAL_MOBILE_SERVICE],
 922      ],
 923      'core_grades_grader_gradingpanel_point_store' => [
 924          'classname' => 'core_grades\\grades\\grader\\gradingpanel\\point\\external\\store',
 925          'description' => 'Store the data required to display the grader grading panel for simple grading',
 926          'type' => 'write',
 927          'ajax' => true,
 928          'services' => [MOODLE_OFFICIAL_MOBILE_SERVICE],
 929      ],
 930      'core_grades_grader_gradingpanel_scale_fetch' => [
 931          'classname' => 'core_grades\\grades\\grader\\gradingpanel\\scale\\external\\fetch',
 932          'description' => 'Fetch the data required to display the grader grading panel for scale-based grading, ' .
 933              'creating the grade item if required',
 934          'type' => 'write',
 935          'ajax' => true,
 936          'services' => [MOODLE_OFFICIAL_MOBILE_SERVICE],
 937      ],
 938      'core_grades_grader_gradingpanel_scale_store' => [
 939          'classname' => 'core_grades\\grades\\grader\\gradingpanel\\scale\\external\\store',
 940          'description' => 'Store the data required to display the grader grading panel for scale-based grading',
 941          'type' => 'write',
 942          'ajax' => true,
 943          'services' => [MOODLE_OFFICIAL_MOBILE_SERVICE],
 944      ],
 945      'core_grades_create_gradecategory' => array (
 946          'classname' => 'core_grades_external',
 947          'methodname' => 'create_gradecategory',
 948          'description' => '** DEPRECATED ** Please do not call this function any more. Use core_grades_create_gradecategories.
 949                                       Create a grade category inside a course gradebook.',
 950          'type' => 'write',
 951          'capabilities' => 'moodle/grade:manage',
 952      ),
 953      'core_grades_create_gradecategories' => array (
 954          'classname' => 'core_grades\external\create_gradecategories',
 955          'description' => 'Create grade categories inside a course gradebook.',
 956          'type' => 'write',
 957          'capabilities' => 'moodle/grade:manage',
 958      ),
 959      'core_grading_get_definitions' => array(
 960          'classname' => 'core_grading_external',
 961          'methodname' => 'get_definitions',
 962          'description' => 'Get grading definitions',
 963          'type' => 'read',
 964      ),
 965      'core_grading_get_gradingform_instances' => array(
 966          'classname' => 'core_grading_external',
 967          'methodname' => 'get_gradingform_instances',
 968          'description' => 'Get grading form instances',
 969          'type' => 'read',
 970      ),
 971      'core_grading_save_definitions' => array(
 972          'classname' => 'core_grading_external',
 973          'methodname' => 'save_definitions',
 974          'description' => 'Save grading definitions',
 975          'type' => 'write',
 976      ),
 977      'core_group_add_group_members' => array(
 978          'classname' => 'core_group_external',
 979          'methodname' => 'add_group_members',
 980          'classpath' => 'group/externallib.php',
 981          'description' => 'Adds group members.',
 982          'type' => 'write',
 983          'capabilities' => 'moodle/course:managegroups',
 984      ),
 985      'core_group_assign_grouping' => array(
 986          'classname' => 'core_group_external',
 987          'methodname' => 'assign_grouping',
 988          'classpath' => 'group/externallib.php',
 989          'description' => 'Assing groups from groupings',
 990          'type' => 'write',
 991      ),
 992      'core_group_create_groupings' => array(
 993          'classname' => 'core_group_external',
 994          'methodname' => 'create_groupings',
 995          'classpath' => 'group/externallib.php',
 996          'description' => 'Creates new groupings',
 997          'type' => 'write',
 998      ),
 999      'core_group_create_groups' => array(
1000          'classname' => 'core_group_external',
1001          'methodname' => 'create_groups',
1002          'classpath' => 'group/externallib.php',
1003          'description' => 'Creates new groups.',
1004          'type' => 'write',
1005          'capabilities' => 'moodle/course:managegroups'
1006      ),
1007      'core_group_delete_group_members' => array(
1008          'classname' => 'core_group_external',
1009          'methodname' => 'delete_group_members',
1010          'classpath' => 'group/externallib.php',
1011          'description' => 'Deletes group members.',
1012          'type' => 'write',
1013          'capabilities' => 'moodle/course:managegroups'
1014      ),
1015      'core_group_delete_groupings' => array(
1016          'classname' => 'core_group_external',
1017          'methodname' => 'delete_groupings',
1018          'classpath' => 'group/externallib.php',
1019          'description' => 'Deletes all specified groupings.',
1020          'type' => 'write',
1021      ),
1022      'core_group_delete_groups' => array(
1023          'classname' => 'core_group_external',
1024          'methodname' => 'delete_groups',
1025          'classpath' => 'group/externallib.php',
1026          'description' => 'Deletes all specified groups.',
1027          'type' => 'write',
1028          'capabilities' => 'moodle/course:managegroups'
1029      ),
1030      'core_group_get_activity_allowed_groups' => array(
1031          'classname' => 'core_group_external',
1032          'methodname' => 'get_activity_allowed_groups',
1033          'classpath' => 'group/externallib.php',
1034          'description' => 'Gets a list of groups that the user is allowed to access within the specified activity.',
1035          'type' => 'read',
1036          'services' => array(MOODLE_OFFICIAL_MOBILE_SERVICE),
1037      ),
1038      'core_group_get_activity_groupmode' => array(
1039          'classname' => 'core_group_external',
1040          'methodname' => 'get_activity_groupmode',
1041          'classpath' => 'group/externallib.php',
1042          'description' => 'Returns effective groupmode used in a given activity.',
1043          'type' => 'read',
1044          'services' => array(MOODLE_OFFICIAL_MOBILE_SERVICE),
1045      ),
1046      'core_group_get_course_groupings' => array(
1047          'classname' => 'core_group_external',
1048          'methodname' => 'get_course_groupings',
1049          'classpath' => 'group/externallib.php',
1050          'description' => 'Returns all groupings in specified course.',
1051          'type' => 'read',
1052          'services' => array(MOODLE_OFFICIAL_MOBILE_SERVICE),
1053      ),
1054      'core_group_get_course_groups' => array(
1055          'classname' => 'core_group_external',
1056          'methodname' => 'get_course_groups',
1057          'classpath' => 'group/externallib.php',
1058          'description' => 'Returns all groups in specified course.',
1059          'type' => 'read',
1060          'ajax' => true,
1061          'capabilities' => 'moodle/course:managegroups',
1062          'services' => array(MOODLE_OFFICIAL_MOBILE_SERVICE),
1063      ),
1064      'core_group_get_course_user_groups' => array(
1065          'classname' => 'core_group_external',
1066          'methodname' => 'get_course_user_groups',
1067          'classpath' => 'group/externallib.php',
1068          'description' => 'Returns all groups in specified course for the specified user.',
1069          'type' => 'read',
1070          'capabilities' => 'moodle/course:managegroups',
1071          'services' => array(MOODLE_OFFICIAL_MOBILE_SERVICE),
1072      ),
1073      'core_group_get_group_members' => array(
1074          'classname' => 'core_group_external',
1075          'methodname' => 'get_group_members',
1076          'classpath' => 'group/externallib.php',
1077          'description' => 'Returns group members.',
1078          'type' => 'read',
1079          'capabilities' => 'moodle/course:managegroups'
1080      ),
1081      'core_group_get_groupings' => array(
1082          'classname' => 'core_group_external',
1083          'methodname' => 'get_groupings',
1084          'classpath' => 'group/externallib.php',
1085          'description' => 'Returns groupings details.',
1086          'type' => 'read',
1087      ),
1088      'core_group_get_groups' => array(
1089          'classname' => 'core_group_external',
1090          'methodname' => 'get_groups',
1091          'classpath' => 'group/externallib.php',
1092          'description' => 'Returns group details.',
1093          'type' => 'read',
1094          'capabilities' => 'moodle/course:managegroups'
1095      ),
1096      'core_group_unassign_grouping' => array(
1097          'classname' => 'core_group_external',
1098          'methodname' => 'unassign_grouping',
1099          'classpath' => 'group/externallib.php',
1100          'description' => 'Unassing groups from groupings',
1101          'type' => 'write',
1102      ),
1103      'core_group_update_groupings' => array(
1104          'classname' => 'core_group_external',
1105          'methodname' => 'update_groupings',
1106          'classpath' => 'group/externallib.php',
1107          'description' => 'Updates existing groupings',
1108          'type' => 'write',
1109      ),
1110      'core_group_update_groups' => array(
1111          'classname' => 'core_group_external',
1112          'methodname' => 'update_groups',
1113          'classpath' => 'group/externallib.php',
1114          'description' => 'Updates existing groups.',
1115          'type' => 'write',
1116          'capabilities' => 'moodle/course:managegroups'
1117      ),
1118      'core_message_mute_conversations' => array(
1119          'classname' => 'core_message_external',
1120          'methodname' => 'mute_conversations',
1121          'classpath' => 'message/externallib.php',
1122          'description' => 'Mutes a list of conversations',
1123          'type' => 'write',
1124          'ajax' => true,
1125          'services' => array(MOODLE_OFFICIAL_MOBILE_SERVICE),
1126      ),
1127      'core_message_unmute_conversations' => array(
1128          'classname' => 'core_message_external',
1129          'methodname' => 'unmute_conversations',
1130          'classpath' => 'message/externallib.php',
1131          'description' => 'Unmutes a list of conversations',
1132          'type' => 'write',
1133          'ajax' => true,
1134          'services' => array(MOODLE_OFFICIAL_MOBILE_SERVICE),
1135      ),
1136      'core_message_block_user' => array(
1137          'classname' => 'core_message_external',
1138          'methodname' => 'block_user',
1139          'classpath' => 'message/externallib.php',
1140          'description' => 'Blocks a user',
1141          'type' => 'write',
1142          'ajax' => true,
1143          'services' => array(MOODLE_OFFICIAL_MOBILE_SERVICE),
1144      ),
1145      'core_message_get_contact_requests' => array(
1146          'classname' => 'core_message_external',
1147          'methodname' => 'get_contact_requests',
1148          'classpath' => 'message/externallib.php',
1149          'description' => 'Returns contact requests for a user',
1150          'type' => 'read',
1151          'ajax' => true,
1152          'services' => array(MOODLE_OFFICIAL_MOBILE_SERVICE),
1153      ),
1154      'core_message_create_contact_request' => array(
1155          'classname' => 'core_message_external',
1156          'methodname' => 'create_contact_request',
1157          'classpath' => 'message/externallib.php',
1158          'description' => 'Creates a contact request',
1159          'type' => 'write',
1160          'ajax' => true,
1161          'services' => array(MOODLE_OFFICIAL_MOBILE_SERVICE),
1162      ),
1163      'core_message_confirm_contact_request' => array(
1164          'classname' => 'core_message_external',
1165          'methodname' => 'confirm_contact_request',
1166          'classpath' => 'message/externallib.php',
1167          'description' => 'Confirms a contact request',
1168          'type' => 'write',
1169          'ajax' => true,
1170          'services' => array(MOODLE_OFFICIAL_MOBILE_SERVICE),
1171      ),
1172      'core_message_decline_contact_request' => array(
1173          'classname' => 'core_message_external',
1174          'methodname' => 'decline_contact_request',
1175          'classpath' => 'message/externallib.php',
1176          'description' => 'Declines a contact request',
1177          'type' => 'write',
1178          'ajax' => true,
1179          'services' => array(MOODLE_OFFICIAL_MOBILE_SERVICE),
1180      ),
1181      'core_message_get_received_contact_requests_count' => array(
1182          'classname' => 'core_message_external',
1183          'methodname' => 'get_received_contact_requests_count',
1184          'classpath' => 'message/externallib.php',
1185          'description' => 'Gets the number of received contact requests',
1186          'type' => 'read',
1187          'ajax' => true,
1188          'services' => array(MOODLE_OFFICIAL_MOBILE_SERVICE),
1189      ),
1190      'core_message_delete_contacts' => array(
1191          'classname' => 'core_message_external',
1192          'methodname' => 'delete_contacts',
1193          'classpath' => 'message/externallib.php',
1194          'description' => 'Remove contacts from the contact list',
1195          'type' => 'write',
1196          'ajax' => true,
1197          'services' => array(MOODLE_OFFICIAL_MOBILE_SERVICE),
1198      ),
1199      'core_message_delete_conversations_by_id' => array(
1200          'classname' => 'core_message_external',
1201          'methodname' => 'delete_conversations_by_id',
1202          'classpath' => 'message/externallib.php',
1203          'description' => 'Deletes a list of conversations.',
1204          'type' => 'write',
1205          'capabilities' => 'moodle/site:deleteownmessage',
1206          'ajax' => true,
1207          'services' => array(MOODLE_OFFICIAL_MOBILE_SERVICE),
1208      ),
1209      'core_message_delete_message' => array(
1210          'classname' => 'core_message_external',
1211          'methodname' => 'delete_message',
1212          'classpath' => 'message/externallib.php',
1213          'description' => 'Deletes a message.',
1214          'type' => 'write',
1215          'capabilities' => 'moodle/site:deleteownmessage',
1216          'ajax' => true,
1217          'services' => array(MOODLE_OFFICIAL_MOBILE_SERVICE),
1218      ),
1219      'core_message_get_blocked_users' => array(
1220          'classname' => 'core_message_external',
1221          'methodname' => 'get_blocked_users',
1222          'classpath' => 'message/externallib.php',
1223          'description' => 'Retrieve a list of users blocked',
1224          'type' => 'read',
1225          'services' => array(MOODLE_OFFICIAL_MOBILE_SERVICE),
1226      ),
1227      'core_message_data_for_messagearea_search_messages' => array(
1228          'classname' => 'core_message_external',
1229          'methodname' => 'data_for_messagearea_search_messages',
1230          'classpath' => 'message/externallib.php',
1231          'description' => 'Retrieve the template data for searching for messages',
1232          'type' => 'read',
1233          'ajax' => true,
1234          'services' => array(MOODLE_OFFICIAL_MOBILE_SERVICE),
1235      ),
1236      'core_message_message_search_users' => array(
1237          'classname' => 'core_message_external',
1238          'methodname' => 'message_search_users',
1239          'classpath' => 'message/externallib.php',
1240          'description' => 'Retrieve the data for searching for people',
1241          'type' => 'read',
1242          'ajax' => true,
1243          'services' => array(MOODLE_OFFICIAL_MOBILE_SERVICE),
1244      ),
1245      'core_message_get_user_contacts' => array(
1246          'classname' => 'core_message_external',
1247          'methodname' => 'get_user_contacts',
1248          'classpath' => 'message/externallib.php',
1249          'description' => 'Retrieve the contact list',
1250          'type' => 'read',
1251          'ajax' => true,
1252          'services' => array(MOODLE_OFFICIAL_MOBILE_SERVICE),
1253      ),
1254      'core_message_get_conversations' => array(
1255          'classname' => 'core_message_external',
1256          'methodname' => 'get_conversations',
1257          'classpath' => 'message/externallib.php',
1258          'description' => 'Retrieve a list of conversations for a user',
1259          'type' => 'read',
1260          'services' => array(MOODLE_OFFICIAL_MOBILE_SERVICE),
1261          'ajax' => true
1262      ),
1263      'core_message_get_conversation' => array(
1264          'classname' => 'core_message_external',
1265          'methodname' => 'get_conversation',
1266          'classpath' => 'message/externallib.php',
1267          'description' => 'Retrieve a conversation for a user',
1268          'type' => 'read',
1269          'services' => array(MOODLE_OFFICIAL_MOBILE_SERVICE),
1270          'ajax' => true
1271      ),
1272      'core_message_get_conversation_between_users' => array(
1273          'classname' => 'core_message_external',
1274          'methodname' => 'get_conversation_between_users',
1275          'classpath' => 'message/externallib.php',
1276          'description' => 'Retrieve a conversation for a user between another user',
1277          'type' => 'read',
1278          'services' => array(MOODLE_OFFICIAL_MOBILE_SERVICE),
1279          'ajax' => true
1280      ),
1281      'core_message_get_self_conversation' => array(
1282          'classname' => 'core_message_external',
1283          'methodname' => 'get_self_conversation',
1284          'classpath' => 'message/externallib.php',
1285          'description' => 'Retrieve a self-conversation for a user',
1286          'type' => 'read',
1287          'services' => array(MOODLE_OFFICIAL_MOBILE_SERVICE),
1288          'ajax' => true
1289      ),
1290      'core_message_get_messages' => array(
1291          'classname' => 'core_message_external',
1292          'methodname' => 'get_messages',
1293          'classpath' => 'message/externallib.php',
1294          'description' => 'Retrieve a list of messages sent and received by a user (conversations, notifications or both)',
1295          'type' => 'read',
1296          'services' => array(MOODLE_OFFICIAL_MOBILE_SERVICE),
1297          'ajax' => true,
1298      ),
1299      'core_message_get_conversation_counts' => array(
1300          'classname' => 'core_message_external',
1301          'methodname' => 'get_conversation_counts',
1302          'classpath' => 'message/externallib.php',
1303          'description' => 'Retrieve a list of conversation counts, indexed by type.',
1304          'type' => 'read',
1305          'services' => array(MOODLE_OFFICIAL_MOBILE_SERVICE),
1306          'ajax' => true,
1307      ),
1308      'core_message_get_unread_conversation_counts' => array(
1309          'classname' => 'core_message_external',
1310          'methodname' => 'get_unread_conversation_counts',
1311          'classpath' => 'message/externallib.php',
1312          'description' => 'Retrieve a list of unread conversation counts, indexed by type.',
1313          'type' => 'read',
1314          'services' => array(MOODLE_OFFICIAL_MOBILE_SERVICE),
1315          'ajax' => true,
1316      ),
1317      'core_message_get_conversation_members' => array(
1318          'classname' => 'core_message_external',
1319          'methodname' => 'get_conversation_members',
1320          'classpath' => 'message/externallib.php',
1321          'description' => 'Retrieve a list of members in a conversation',
1322          'type' => 'read',
1323          'services' => array(MOODLE_OFFICIAL_MOBILE_SERVICE),
1324          'ajax' => true,
1325      ),
1326      'core_message_get_member_info' => array(
1327          'classname' => 'core_message_external',
1328          'methodname' => 'get_member_info',
1329          'classpath' => 'message/externallib.php',
1330          'description' => 'Retrieve a user message profiles',
1331          'type' => 'read',
1332          'services' => array(MOODLE_OFFICIAL_MOBILE_SERVICE),
1333          'ajax' => true,
1334      ),
1335      'core_message_get_unread_conversations_count' => array(
1336          'classname' => 'core_message_external',
1337          'methodname' => 'get_unread_conversations_count',
1338          'classpath' => 'message/externallib.php',
1339          'description' => 'Retrieve the count of unread conversations for a given user',
1340          'type' => 'read',
1341          'ajax' => true,
1342          'services' => array(MOODLE_OFFICIAL_MOBILE_SERVICE),
1343          'readonlysession' => true, // We don't modify the session.
1344      ),
1345      'core_message_mark_all_notifications_as_read' => array(
1346          'classname' => 'core_message_external',
1347          'methodname' => 'mark_all_notifications_as_read',
1348          'classpath' => 'message/externallib.php',
1349          'description' => 'Mark all notifications as read for a given user',
1350          'type' => 'write',
1351          'ajax' => true,
1352          'services' => array(MOODLE_OFFICIAL_MOBILE_SERVICE),
1353      ),
1354      'core_message_mark_all_conversation_messages_as_read' => array(
1355          'classname' => 'core_message_external',
1356          'methodname' => 'mark_all_conversation_messages_as_read',
1357          'classpath' => 'message/externallib.php',
1358          'description' => 'Mark all conversation messages as read for a given user',
1359          'type' => 'write',
1360          'ajax' => true,
1361          'services' => array(MOODLE_OFFICIAL_MOBILE_SERVICE),
1362      ),
1363      'core_message_mark_message_read' => array(
1364          'classname' => 'core_message_external',
1365          'methodname' => 'mark_message_read',
1366          'classpath' => 'message/externallib.php',
1367          'description' => 'Mark a single message as read, trigger message_viewed event.',
1368          'type' => 'write',
1369          'services' => array(MOODLE_OFFICIAL_MOBILE_SERVICE),
1370          'ajax' => true,
1371      ),
1372      'core_message_mark_notification_read' => array(
1373          'classname' => 'core_message_external',
1374          'methodname' => 'mark_notification_read',
1375          'classpath' => 'message/externallib.php',
1376          'description' => 'Mark a single notification as read, trigger notification_viewed event.',
1377          'type' => 'write',
1378          'services' => array(MOODLE_OFFICIAL_MOBILE_SERVICE),
1379          'ajax' => true,
1380      ),
1381      'core_message_message_processor_config_form' => array(
1382          'classname' => 'core_message_external',
1383          'methodname' => 'message_processor_config_form',
1384          'classpath' => 'message/externallib.php',
1385          'description' => 'Process the message processor config form',
1386          'type' => 'write',
1387          'ajax' => true,
1388          'services' => array(MOODLE_OFFICIAL_MOBILE_SERVICE),
1389      ),
1390      'core_message_get_message_processor' => array(
1391          'classname' => 'core_message_external',
1392          'methodname' => 'get_message_processor',
1393          'classpath' => 'message/externallib.php',
1394          'description' => 'Get a message processor',
1395          'type' => 'read',
1396          'ajax' => true,
1397      ),
1398      'core_message_search_contacts' => array(
1399          'classname' => 'core_message_external',
1400          'methodname' => 'search_contacts',
1401          'classpath' => 'message/externallib.php',
1402          'description' => 'Search for contacts',
1403          'type' => 'read',
1404          'services' => array(MOODLE_OFFICIAL_MOBILE_SERVICE),
1405      ),
1406      'core_message_send_instant_messages' => array(
1407          'classname' => 'core_message_external',
1408          'methodname' => 'send_instant_messages',
1409          'classpath' => 'message/externallib.php',
1410          'description' => 'Send instant messages',
1411          'type' => 'write',
1412          'capabilities' => 'moodle/site:sendmessage',
1413          'ajax' => true,
1414          'services' => array(MOODLE_OFFICIAL_MOBILE_SERVICE),
1415      ),
1416      'core_message_send_messages_to_conversation' => array(
1417          'classname' => 'core_message_external',
1418          'methodname' => 'send_messages_to_conversation',
1419          'classpath' => 'message/externallib.php',
1420          'description' => 'Send messages to an existing conversation between users',
1421          'type' => 'write',
1422          'capabilities' => 'moodle/site:sendmessage',
1423          'ajax' => true,
1424          'services' => array(MOODLE_OFFICIAL_MOBILE_SERVICE),
1425      ),
1426      'core_message_get_conversation_messages' => array(
1427          'classname' => 'core_message_external',
1428          'methodname' => 'get_conversation_messages',
1429          'classpath' => 'message/externallib.php',
1430          'description' => 'Retrieve the conversation messages and relevant member information',
1431          'type' => 'read',
1432          'ajax' => true,
1433          'services' => array(MOODLE_OFFICIAL_MOBILE_SERVICE),
1434      ),
1435      'core_message_unblock_user' => array(
1436          'classname' => 'core_message_external',
1437          'methodname' => 'unblock_user',
1438          'classpath' => 'message/externallib.php',
1439          'description' => 'Unblocks a user',
1440          'type' => 'write',
1441          'ajax' => true,
1442          'services' => array(MOODLE_OFFICIAL_MOBILE_SERVICE),
1443      ),
1444      'core_message_get_user_notification_preferences' => array(
1445          'classname' => 'core_message_external',
1446          'methodname' => 'get_user_notification_preferences',
1447          'classpath' => 'message/externallib.php',
1448          'description' => 'Get the notification preferences for a given user.',
1449          'type' => 'read',
1450          'capabilities' => 'moodle/user:editownmessageprofile',
1451          'services' => array(MOODLE_OFFICIAL_MOBILE_SERVICE),
1452      ),
1453      'core_message_get_user_message_preferences' => array(
1454          'classname' => 'core_message_external',
1455          'methodname' => 'get_user_message_preferences',
1456          'classpath' => 'message/externallib.php',
1457          'description' => 'Get the message preferences for a given user.',
1458          'type' => 'read',
1459          'capabilities' => 'moodle/user:editownmessageprofile',
1460          'services' => array(MOODLE_OFFICIAL_MOBILE_SERVICE),
1461          'ajax' => true
1462      ),
1463      'core_message_set_favourite_conversations' => array(
1464          'classname' => 'core_message_external',
1465          'methodname' => 'set_favourite_conversations',
1466          'classpath' => 'message/externallib.php',
1467          'description' => 'Mark a conversation or group of conversations as favourites/starred conversations.',
1468          'type' => 'write',
1469          'ajax' => true,
1470          'services' => array(MOODLE_OFFICIAL_MOBILE_SERVICE),
1471      ),
1472      'core_message_unset_favourite_conversations' => array(
1473          'classname' => 'core_message_external',
1474          'methodname' => 'unset_favourite_conversations',
1475          'classpath' => 'message/externallib.php',
1476          'description' => 'Unset a conversation or group of conversations as favourites/starred conversations.',
1477          'type' => 'write',
1478          'ajax' => true,
1479          'services' => array(MOODLE_OFFICIAL_MOBILE_SERVICE),
1480      ),
1481      'core_message_delete_message_for_all_users' => array(
1482          'classname' => 'core_message_external',
1483          'methodname' => 'delete_message_for_all_users',
1484          'classpath' => 'message/externallib.php',
1485          'description' => 'Deletes a message for all users.',
1486          'type' => 'write',
1487          'capabilities' => 'moodle/site:deleteanymessage',
1488          'ajax' => true,
1489          'services' => array(MOODLE_OFFICIAL_MOBILE_SERVICE),
1490      ),
1491      'core_message_get_unread_notification_count' => [
1492          'classname'     => '\core_message\external\get_unread_notification_count',
1493          'description'   => 'Get number of unread notifications.',
1494          'type'          => 'read',
1495          'services'      => [MOODLE_OFFICIAL_MOBILE_SERVICE],
1496      ],
1497      'core_notes_create_notes' => array(
1498          'classname' => 'core_notes_external',
1499          'methodname' => 'create_notes',
1500          'classpath' => 'notes/externallib.php',
1501          'description' => 'Create notes',
1502          'type' => 'write',
1503          'ajax' => true,
1504          'capabilities' => 'moodle/notes:manage',
1505          'services' => array(MOODLE_OFFICIAL_MOBILE_SERVICE),
1506      ),
1507      'core_notes_delete_notes' => array(
1508          'classname' => 'core_notes_external',
1509          'methodname' => 'delete_notes',
1510          'classpath' => 'notes/externallib.php',
1511          'description' => 'Delete notes',
1512          'type' => 'write',
1513          'capabilities' => 'moodle/notes:manage',
1514          'services' => array(MOODLE_OFFICIAL_MOBILE_SERVICE),
1515      ),
1516      'core_notes_get_course_notes' => array(
1517          'classname' => 'core_notes_external',
1518          'methodname' => 'get_course_notes',
1519          'classpath' => 'notes/externallib.php',
1520          'description' => 'Returns all notes in specified course (or site), for the specified user.',
1521          'type' => 'read',
1522          'capabilities' => 'moodle/notes:view',
1523          'services' => array(MOODLE_OFFICIAL_MOBILE_SERVICE),
1524      ),
1525      'core_notes_get_notes' => array(
1526          'classname' => 'core_notes_external',
1527          'methodname' => 'get_notes',
1528          'classpath' => 'notes/externallib.php',
1529          'description' => 'Get notes',
1530          'type' => 'read',
1531          'capabilities' => 'moodle/notes:view'
1532      ),
1533      'core_notes_update_notes' => array(
1534          'classname' => 'core_notes_external',
1535          'methodname' => 'update_notes',
1536          'classpath' => 'notes/externallib.php',
1537          'description' => 'Update notes',
1538          'type' => 'write',
1539          'capabilities' => 'moodle/notes:manage'
1540      ),
1541      'core_notes_view_notes' => array(
1542          'classname' => 'core_notes_external',
1543          'methodname' => 'view_notes',
1544          'classpath' => 'notes/externallib.php',
1545          'description' => 'Simulates the web interface view of notes/index.php: trigger events.',
1546          'type' => 'write',
1547          'capabilities' => 'moodle/notes:view',
1548          'services' => array(MOODLE_OFFICIAL_MOBILE_SERVICE),
1549      ),
1550      'core_output_load_template' => array(
1551          'classname' => 'core\output\external',
1552          'methodname' => 'load_template',
1553          'description' => 'Load a template for a renderable',
1554          'type' => 'read',
1555          'loginrequired' => false,
1556          'ajax' => true,
1557      ),
1558      'core_output_load_template_with_dependencies' => array(
1559          'classname' => 'core\output\external',
1560          'methodname' => 'load_template_with_dependencies',
1561          'description' => 'Load a template and its dependencies for a renderable',
1562          'type' => 'read',
1563          'loginrequired' => false,
1564          'ajax' => true,
1565      ),
1566      'core_output_load_fontawesome_icon_map' => array(
1567          'classname' => 'core\output\external',
1568          'methodname' => 'load_fontawesome_icon_map',
1569          'description' => 'Load the mapping of names to icons',
1570          'type' => 'read',
1571          'loginrequired' => false,
1572          'ajax' => true,
1573      ),
1574      'core_output_load_fontawesome_icon_system_map' => array(
1575          'classname' => 'core\external\output\icon_system\load_fontawesome_map',
1576          'description' => 'Load the mapping of moodle pix names to fontawesome icon names',
1577          'type' => 'read',
1578          'loginrequired' => false,
1579          'ajax' => true,
1580      ),
1581      // Question related functions.
1582      'core_question_update_flag' => array(
1583          'classname'     => 'core_question_external',
1584          'methodname'    => 'update_flag',
1585          'description'   => 'Update the flag state of a question attempt.',
1586          'type'          => 'write',
1587          'capabilities'  => 'moodle/question:flag',
1588          'services'      => array(MOODLE_OFFICIAL_MOBILE_SERVICE),
1589      ),
1590      'core_question_submit_tags_form' => array(
1591          'classname'     => 'core_question_external',
1592          'methodname'    => 'submit_tags_form',
1593          'description'   => 'Update the question tags.',
1594          'type'          => 'write',
1595          'ajax' => true,
1596      ),
1597      'core_question_get_random_question_summaries' => array(
1598          'classname' => 'core_question_external',
1599          'methodname' => 'get_random_question_summaries',
1600          'description' => 'Get the random question set for a criteria',
1601          'type' => 'read',
1602          'ajax' => true,
1603      ),
1604      'core_rating_get_item_ratings' => array(
1605          'classname' => 'core_rating_external',
1606          'methodname' => 'get_item_ratings',
1607          'description' => 'Retrieve all the ratings for an item.',
1608          'type' => 'read',
1609          'capabilities' => 'moodle/rating:view',
1610          'services' => array(MOODLE_OFFICIAL_MOBILE_SERVICE),
1611      ),
1612      'core_rating_add_rating' => array(
1613          'classname' => 'core_rating_external',
1614          'methodname' => 'add_rating',
1615          'description' => 'Rates an item.',
1616          'type' => 'write',
1617          'capabilities' => 'moodle/rating:rate',
1618          'services' => array(MOODLE_OFFICIAL_MOBILE_SERVICE),
1619      ),
1620      'core_role_assign_roles' => array(
1621          'classname' => 'core_role_external',
1622          'methodname' => 'assign_roles',
1623          'classpath' => 'enrol/externallib.php',
1624          'description' => 'Manual role assignments.',
1625          'type' => 'write',
1626          'capabilities' => 'moodle/role:assign'
1627      ),
1628      'core_role_unassign_roles' => array(
1629          'classname' => 'core_role_external',
1630          'methodname' => 'unassign_roles',
1631          'classpath' => 'enrol/externallib.php',
1632          'description' => 'Manual role unassignments.',
1633          'type' => 'write',
1634          'capabilities' => 'moodle/role:assign'
1635      ),
1636      'core_search_get_relevant_users' => array(
1637          'classname' => '\core_search\external',
1638          'methodname' => 'get_relevant_users',
1639          'description' => 'Gets relevant users for a search request.',
1640          'type' => 'read',
1641          'ajax' => true
1642      ),
1643      'core_tag_get_tagindex' => array(
1644          'classname' => 'core_tag_external',
1645          'methodname' => 'get_tagindex',
1646          'description' => 'Gets tag index page for one tag and one tag area',
1647          'type' => 'read',
1648          'ajax' => true,
1649          'services' => array(MOODLE_OFFICIAL_MOBILE_SERVICE),
1650      ),
1651      'core_tag_get_tags' => array(
1652          'classname' => 'core_tag_external',
1653          'methodname' => 'get_tags',
1654          'description' => 'Gets tags by their ids',
1655          'type' => 'read',
1656          'ajax' => true,
1657      ),
1658      'core_tag_update_tags' => array(
1659          'classname' => 'core_tag_external',
1660          'methodname' => 'update_tags',
1661          'description' => 'Updates tags',
1662          'type' => 'write',
1663          'ajax' => true,
1664      ),
1665      'core_tag_get_tagindex_per_area' => array(
1666          'classname' => 'core_tag_external',
1667          'methodname' => 'get_tagindex_per_area',
1668          'description' => 'Gets tag index page per different areas.',
1669          'type' => 'read',
1670          'services' => array(MOODLE_OFFICIAL_MOBILE_SERVICE),
1671      ),
1672      'core_tag_get_tag_areas' => array(
1673          'classname' => 'core_tag_external',
1674          'methodname' => 'get_tag_areas',
1675          'description' => 'Retrieves existing tag areas.',
1676          'type' => 'read',
1677          'services' => array(MOODLE_OFFICIAL_MOBILE_SERVICE),
1678      ),
1679      'core_tag_get_tag_collections' => array(
1680          'classname' => 'core_tag_external',
1681          'methodname' => 'get_tag_collections',
1682          'description' => 'Retrieves existing tag collections.',
1683          'type' => 'read',
1684          'services' => array(MOODLE_OFFICIAL_MOBILE_SERVICE),
1685      ),
1686      'core_tag_get_tag_cloud' => array(
1687          'classname' => 'core_tag_external',
1688          'methodname' => 'get_tag_cloud',
1689          'description' => 'Retrieves a tag cloud for the given collection and/or query search.',
1690          'type' => 'read',
1691          'services' => array(MOODLE_OFFICIAL_MOBILE_SERVICE),
1692      ),
1693      'core_update_inplace_editable' => array(
1694          'classname' => 'core_external',
1695          'methodname' => 'update_inplace_editable',
1696          'classpath' => 'lib/external/externallib.php',
1697          'description' => 'Generic service to update title',
1698          'type' => 'write',
1699          'loginrequired' => true,
1700          'ajax' => true,
1701      ),
1702      'core_user_add_user_device' => array(
1703          'classname' => 'core_user_external',
1704          'methodname' => 'add_user_device',
1705          'classpath' => 'user/externallib.php',
1706          'description' => 'Store mobile user devices information for PUSH Notifications.',
1707          'type' => 'write',
1708          'services' => array(MOODLE_OFFICIAL_MOBILE_SERVICE),
1709      ),
1710      'core_user_add_user_private_files' => array(
1711          'classname' => 'core_user_external',
1712          'methodname' => 'add_user_private_files',
1713          'classpath' => 'user/externallib.php',
1714          'description' => 'Copy files from a draft area to users private files area.',
1715          'type' => 'write',
1716          'capabilities' => 'moodle/user:manageownfiles',
1717          'services' => array(MOODLE_OFFICIAL_MOBILE_SERVICE),
1718      ),
1719      'core_user_create_users' => array(
1720          'classname' => 'core_user_external',
1721          'methodname' => 'create_users',
1722          'classpath' => 'user/externallib.php',
1723          'description' => 'Create users.',
1724          'type' => 'write',
1725          'capabilities' => 'moodle/user:create'
1726      ),
1727      'core_user_delete_users' => array(
1728          'classname' => 'core_user_external',
1729          'methodname' => 'delete_users',
1730          'classpath' => 'user/externallib.php',
1731          'description' => 'Delete users.',
1732          'type' => 'write',
1733          'capabilities' => 'moodle/user:delete'
1734      ),
1735      'core_user_get_course_user_profiles' => array(
1736          'classname' => 'core_user_external',
1737          'methodname' => 'get_course_user_profiles',
1738          'classpath' => 'user/externallib.php',
1739          'description' => 'Get course user profiles (each of the profils matching a course id and a user id),.',
1740          'type' => 'read',
1741          'capabilities' => 'moodle/user:viewdetails, moodle/user:viewhiddendetails, moodle/course:useremail, moodle/user:update, '
1742              . 'moodle/site:accessallgroups',
1743          'services' => array(MOODLE_OFFICIAL_MOBILE_SERVICE),
1744      ),
1745      'core_user_get_users' => array(
1746          'classname' => 'core_user_external',
1747          'methodname' => 'get_users',
1748          'classpath' => 'user/externallib.php',
1749          'description' => 'search for users matching the parameters',
1750          'type' => 'read',
1751          'capabilities' => 'moodle/user:viewdetails, moodle/user:viewhiddendetails, moodle/course:useremail, moodle/user:update'
1752      ),
1753      'core_user_get_users_by_field' => array(
1754          'classname' => 'core_user_external',
1755          'methodname' => 'get_users_by_field',
1756          'classpath' => 'user/externallib.php',
1757          'description' => 'Retrieve users\' information for a specified unique field - If you want to do a user search, use '
1758              . 'core_user_get_users() or core_user_search_identity().',
1759          'type' => 'read',
1760          'capabilities' => 'moodle/user:viewdetails, moodle/user:viewhiddendetails, moodle/course:useremail, moodle/user:update',
1761          'ajax' => true,
1762          'services' => array(MOODLE_OFFICIAL_MOBILE_SERVICE),
1763      ),
1764      'core_user_search_identity' => array(
1765          'classname' => '\core_user\external\search_identity',
1766          'description' => 'Return list of users identities matching the given criteria in their name or other identity fields.',
1767          'type' => 'read',
1768          'capabilities' => 'moodle/user:viewalldetails',
1769          'ajax' => true,
1770          'loginrequired' => true,
1771      ),
1772      'core_user_remove_user_device' => array(
1773          'classname' => 'core_user_external',
1774          'methodname' => 'remove_user_device',
1775          'classpath' => 'user/externallib.php',
1776          'description' => 'Remove a user device from the Moodle database.',
1777          'type' => 'write',
1778          'services' => array(MOODLE_OFFICIAL_MOBILE_SERVICE),
1779      ),
1780      'core_user_update_users' => array(
1781          'classname' => 'core_user_external',
1782          'methodname' => 'update_users',
1783          'classpath' => 'user/externallib.php',
1784          'description' => 'Update users.',
1785          'type' => 'write',
1786          'capabilities' => 'moodle/user:update',
1787          'ajax' => true,
1788      ),
1789      'core_user_update_user_preferences' => array(
1790          'classname' => 'core_user_external',
1791          'methodname' => 'update_user_preferences',
1792          'classpath' => 'user/externallib.php',
1793          'description' => 'Update a user\'s preferences',
1794          'type' => 'write',
1795          'capabilities' => 'moodle/user:editownmessageprofile, moodle/user:editmessageprofile',
1796          'ajax' => true,
1797          'services' => array(MOODLE_OFFICIAL_MOBILE_SERVICE),
1798      ),
1799      'core_user_view_user_list' => array(
1800          'classname' => 'core_user_external',
1801          'methodname' => 'view_user_list',
1802          'classpath' => 'user/externallib.php',
1803          'description' => 'Simulates the web-interface view of user/index.php (triggering events),.',
1804          'type' => 'write',
1805          'capabilities' => 'moodle/course:viewparticipants',
1806          'services' => array(MOODLE_OFFICIAL_MOBILE_SERVICE),
1807      ),
1808      'core_user_view_user_profile' => array(
1809          'classname' => 'core_user_external',
1810          'methodname' => 'view_user_profile',
1811          'classpath' => 'user/externallib.php',
1812          'description' => 'Simulates the web-interface view of user/view.php and user/profile.php (triggering events),.',
1813          'type' => 'write',
1814          'capabilities' => 'moodle/user:viewdetails',
1815          'services' => array(MOODLE_OFFICIAL_MOBILE_SERVICE),
1816      ),
1817      'core_user_get_user_preferences' => array(
1818          'classname' => 'core_user_external',
1819          'methodname' => 'get_user_preferences',
1820          'classpath' => 'user/externallib.php',
1821          'description' => 'Return user preferences.',
1822          'type' => 'read',
1823          'ajax' => true,
1824          'services' => array(MOODLE_OFFICIAL_MOBILE_SERVICE),
1825      ),
1826      'core_user_update_picture' => array(
1827          'classname' => 'core_user_external',
1828          'methodname' => 'update_picture',
1829          'classpath' => 'user/externallib.php',
1830          'description' => 'Update or delete the user picture in the site',
1831          'type' => 'write',
1832          'capabilities' => 'moodle/user:editownprofile, moodle/user:editprofile',
1833          'services' => array(MOODLE_OFFICIAL_MOBILE_SERVICE),
1834      ),
1835      'core_user_set_user_preferences' => array(
1836          'classname' => 'core_user_external',
1837          'methodname' => 'set_user_preferences',
1838          'classpath' => 'user/externallib.php',
1839          'description' => 'Set user preferences.',
1840          'type' => 'write',
1841          'capabilities' => 'moodle/site:config',
1842          'ajax' => true,
1843          'services' => array(MOODLE_OFFICIAL_MOBILE_SERVICE),
1844      ),
1845      'core_user_agree_site_policy' => array(
1846          'classname' => 'core_user_external',
1847          'methodname' => 'agree_site_policy',
1848          'classpath' => 'user/externallib.php',
1849          'description' => 'Agree the site policy for the current user.',
1850          'type' => 'write',
1851          'services' => array(MOODLE_OFFICIAL_MOBILE_SERVICE),
1852      ),
1853      'core_user_get_private_files_info' => array(
1854          'classname' => 'core_user_external',
1855          'methodname' => 'get_private_files_info',
1856          'classpath' => 'user/externallib.php',
1857          'description' => 'Returns general information about files in the user private files area.',
1858          'type' => 'read',
1859          'capabilities' => 'moodle/user:manageownfiles',
1860          'services' => array(MOODLE_OFFICIAL_MOBILE_SERVICE),
1861      ),
1862  
1863      // Competencies functions.
1864      'core_competency_create_competency_framework' => array(
1865          'classname'    => 'core_competency\external',
1866          'methodname'   => 'create_competency_framework',
1867          'classpath'    => '',
1868          'description'  => 'Creates new competency frameworks.',
1869          'type'         => 'write',
1870          'capabilities' => 'moodle/competency:competencymanage',
1871          'ajax'         => true,
1872      ),
1873      'core_competency_read_competency_framework' => array(
1874          'classname'    => 'core_competency\external',
1875          'methodname'   => 'read_competency_framework',
1876          'classpath'    => '',
1877          'description'  => 'Load a summary of a competency framework.',
1878          'type'         => 'read',
1879          'capabilities' => 'moodle/competency:competencyview',
1880          'ajax'         => true,
1881      ),
1882      'core_competency_duplicate_competency_framework' => array(
1883          'classname'    => 'core_competency\external',
1884          'methodname'   => 'duplicate_competency_framework',
1885          'classpath'    => '',
1886          'description'  => 'Duplicate a competency framework.',
1887          'type'         => 'write',
1888          'capabilities' => 'moodle/competency:competencymanage',
1889          'ajax'         => true,
1890      ),
1891      'core_competency_delete_competency_framework' => array(
1892          'classname'    => 'core_competency\external',
1893          'methodname'   => 'delete_competency_framework',
1894          'classpath'    => '',
1895          'description'  => 'Delete a competency framework.',
1896          'type'         => 'write',
1897          'capabilities' => 'moodle/competency:competencymanage',
1898          'ajax'         => true,
1899      ),
1900      'core_competency_update_competency_framework' => array(
1901          'classname'    => 'core_competency\external',
1902          'methodname'   => 'update_competency_framework',
1903          'classpath'    => '',
1904          'description'  => 'Update a competency framework.',
1905          'type'         => 'write',
1906          'capabilities' => 'moodle/competency:competencymanage',
1907          'ajax'         => true,
1908      ),
1909      'core_competency_list_competency_frameworks' => array(
1910          'classname'    => 'core_competency\external',
1911          'methodname'   => 'list_competency_frameworks',
1912          'classpath'    => '',
1913          'description'  => 'Load a list of a competency frameworks.',
1914          'type'         => 'read',
1915          'capabilities' => 'moodle/competency:competencyview',
1916          'ajax'         => true,
1917      ),
1918      'core_competency_count_competency_frameworks' => array(
1919          'classname'    => 'core_competency\external',
1920          'methodname'   => 'count_competency_frameworks',
1921          'classpath'    => '',
1922          'description'  => 'Count a list of a competency frameworks.',
1923          'type'         => 'read',
1924          'capabilities' => 'moodle/competency:competencyview',
1925          'ajax'         => true,
1926      ),
1927      'core_competency_competency_framework_viewed' => array(
1928          'classname'    => 'core_competency\external',
1929          'methodname'   => 'competency_framework_viewed',
1930          'classpath'    => '',
1931          'description'  => 'Log event competency framework viewed',
1932          'type'         => 'read',
1933          'capabilities' => 'moodle/competency:competencyview',
1934          'ajax'         => true,
1935      ),
1936      'core_competency_create_competency' => array(
1937          'classname'    => 'core_competency\external',
1938          'methodname'   => 'create_competency',
1939          'classpath'    => '',
1940          'description'  => 'Creates new competencies.',
1941          'type'         => 'write',
1942          'capabilities' => 'moodle/competency:competencymanage',
1943          'ajax'         => true,
1944      ),
1945      'core_competency_read_competency' => array(
1946          'classname'    => 'core_competency\external',
1947          'methodname'   => 'read_competency',
1948          'classpath'    => '',
1949          'description'  => 'Load a summary of a competency.',
1950          'type'         => 'read',
1951          'capabilities' => 'moodle/competency:competencyview',
1952          'ajax'         => true,
1953      ),
1954      'core_competency_competency_viewed' => array(
1955          'classname'    => 'core_competency\external',
1956          'methodname'   => 'competency_viewed',
1957          'classpath'    => '',
1958          'description'  => 'Log event competency viewed',
1959          'type'         => 'read',
1960          'capabilities' => 'moodle/competency:competencyview',
1961          'ajax'         => true,
1962          'services'     => array(MOODLE_OFFICIAL_MOBILE_SERVICE),
1963      ),
1964      'core_competency_delete_competency' => array(
1965          'classname'    => 'core_competency\external',
1966          'methodname'   => 'delete_competency',
1967          'classpath'    => '',
1968          'description'  => 'Delete a competency.',
1969          'type'         => 'write',
1970          'capabilities' => 'moodle/competency:competencymanage',
1971          'ajax'         => true,
1972      ),
1973      'core_competency_update_competency' => array(
1974          'classname'    => 'core_competency\external',
1975          'methodname'   => 'update_competency',
1976          'classpath'    => '',
1977          'description'  => 'Update a competency.',
1978          'type'         => 'write',
1979          'capabilities' => 'moodle/competency:competencymanage',
1980          'ajax'         => true,
1981      ),
1982      'core_competency_list_competencies' => array(
1983          'classname'    => 'core_competency\external',
1984          'methodname'   => 'list_competencies',
1985          'classpath'    => '',
1986          'description'  => 'Load a list of a competencies.',
1987          'type'         => 'read',
1988          'capabilities' => 'moodle/competency:competencyview',
1989          'ajax'         => true,
1990      ),
1991      'core_competency_list_competencies_in_template' => array(
1992          'classname'    => 'core_competency\external',
1993          'methodname'   => 'list_competencies_in_template',
1994          'classpath'    => '',
1995          'description'  => 'Load a list of a competencies for a given template.',
1996          'type'         => 'read',
1997          'capabilities' => 'moodle/competency:competencyview',
1998          'ajax'         => true,
1999      ),
2000      'core_competency_count_competencies' => array(
2001          'classname'    => 'core_competency\external',
2002          'methodname'   => 'count_competencies',
2003          'classpath'    => '',
2004          'description'  => 'Count a list of a competencies.',
2005          'type'         => 'read',
2006          'capabilities' => 'moodle/competency:competencyview',
2007          'ajax'         => true,
2008      ),
2009      'core_competency_count_competencies_in_template' => array(
2010          'classname'    => 'core_competency\external',
2011          'methodname'   => 'count_competencies_in_template',
2012          'classpath'    => '',
2013          'description'  => 'Count a list of a competencies for a given template.',
2014          'type'         => 'read',
2015          'capabilities' => 'moodle/competency:competencyview',
2016          'ajax'         => true,
2017      ),
2018      'core_competency_search_competencies' => array(
2019          'classname'    => 'core_competency\external',
2020          'methodname'   => 'search_competencies',
2021          'classpath'    => '',
2022          'description'  => 'Search a list of a competencies.',
2023          'type'         => 'read',
2024          'capabilities' => 'moodle/competency:competencyview',
2025          'ajax'         => true,
2026      ),
2027      'core_competency_set_parent_competency' => array(
2028          'classname'    => 'core_competency\external',
2029          'methodname'   => 'set_parent_competency',
2030          'classpath'    => '',
2031          'description'  => 'Set a new parent for a competency.',
2032          'type'         => 'write',
2033          'capabilities' => 'moodle/competency:competencymanage',
2034          'ajax'         => true,
2035      ),
2036      'core_competency_move_up_competency' => array(
2037          'classname'    => 'core_competency\external',
2038          'methodname'   => 'move_up_competency',
2039          'classpath'    => '',
2040          'description'  => 'Re-order a competency.',
2041          'type'         => 'write',
2042          'capabilities' => 'moodle/competency:competencymanage',
2043          'ajax'         => true,
2044      ),
2045      'core_competency_move_down_competency' => array(
2046          'classname'    => 'core_competency\external',
2047          'methodname'   => 'move_down_competency',
2048          'classpath'    => '',
2049          'description'  => 'Re-order a competency.',
2050          'type'         => 'write',
2051          'capabilities' => 'moodle/competency:competencymanage',
2052          'ajax'         => true,
2053      ),
2054      'core_competency_list_course_module_competencies' => array(
2055          'classname'    => 'core_competency\external',
2056          'methodname'   => 'list_course_module_competencies',
2057          'classpath'    => '',
2058          'description'  => 'List the competencies in a course module',
2059          'type'         => 'read',
2060          'capabilities' => 'moodle/competency:coursecompetencyview',
2061          'ajax'         => true,
2062      ),
2063      'core_competency_count_course_module_competencies' => array(
2064          'classname'    => 'core_competency\external',
2065          'methodname'   => 'count_course_module_competencies',
2066          'classpath'    => '',
2067          'description'  => 'Count the competencies in a course module',
2068          'type'         => 'read',
2069          'capabilities' => 'moodle/competency:coursecompetencyview',
2070          'ajax'         => true,
2071      ),
2072      'core_competency_list_course_competencies' => array(
2073          'classname'    => 'core_competency\external',
2074          'methodname'   => 'list_course_competencies',
2075          'classpath'    => '',
2076          'description'  => 'List the competencies in a course',
2077          'type'         => 'read',
2078          'capabilities' => 'moodle/competency:coursecompetencyview',
2079          'ajax'         => true,
2080          'services'     => array(MOODLE_OFFICIAL_MOBILE_SERVICE),
2081      ),
2082      'core_competency_count_competencies_in_course' => array(
2083          'classname'    => 'core_competency\external',
2084          'methodname'   => 'count_competencies_in_course',
2085          'classpath'    => '',
2086          'description'  => 'List the competencies in a course',
2087          'type'         => 'read',
2088          'capabilities' => 'moodle/competency:coursecompetencyview',
2089          'ajax'         => true,
2090      ),
2091      'core_competency_count_courses_using_competency' => array(
2092          'classname'    => 'core_competency\external',
2093          'methodname'   => 'count_courses_using_competency',
2094          'classpath'    => '',
2095          'description'  => 'List the courses using a competency',
2096          'type'         => 'read',
2097          'capabilities' => 'moodle/competency:coursecompetencyview',
2098          'ajax'         => true,
2099      ),
2100      'core_competency_add_competency_to_course' => array(
2101          'classname'    => 'core_competency\external',
2102          'methodname'   => 'add_competency_to_course',
2103          'classpath'    => '',
2104          'description'  => 'Add the competency to a course',
2105          'type'         => 'write',
2106          'capabilities' => 'moodle/competency:coursecompetencymanage',
2107          'ajax'         => true,
2108      ),
2109      'core_competency_add_competency_to_template' => array(
2110          'classname'    => 'core_competency\external',
2111          'methodname'   => 'add_competency_to_template',
2112          'classpath'    => '',
2113          'description'  => 'Add the competency to a template',
2114          'type'         => 'write',
2115          'capabilities' => 'moodle/competency:templatemanage',
2116          'ajax'         => true,
2117      ),
2118      'core_competency_remove_competency_from_course' => array(
2119          'classname'    => 'core_competency\external',
2120          'methodname'   => 'remove_competency_from_course',
2121          'classpath'    => '',
2122          'description'  => 'Remove a competency from a course',
2123          'type'         => 'write',
2124          'capabilities' => 'moodle/competency:coursecompetencymanage',
2125          'ajax'         => true,
2126      ),
2127      'core_competency_set_course_competency_ruleoutcome' => array(
2128          'classname'    => 'core_competency\external',
2129          'methodname'   => 'set_course_competency_ruleoutcome',
2130          'classpath'    => '',
2131          'description'  => 'Modify the ruleoutcome value for course competency',
2132          'type'         => 'write',
2133          'capabilities' => 'moodle/competency:coursecompetencymanage',
2134          'ajax'         => true,
2135      ),
2136      'core_competency_remove_competency_from_template' => array(
2137          'classname'    => 'core_competency\external',
2138          'methodname'   => 'remove_competency_from_template',
2139          'classpath'    => '',
2140          'description'  => 'Remove a competency from a template',
2141          'type'         => 'write',
2142          'capabilities' => 'moodle/competency:templatemanage',
2143          'ajax'         => true,
2144      ),
2145      'core_competency_reorder_course_competency' => array(
2146          'classname'    => 'core_competency\external',
2147          'methodname'   => 'reorder_course_competency',
2148          'classpath'    => '',
2149          'description'  => 'Move a course competency to a new relative sort order.',
2150          'type'         => 'write',
2151          'capabilities' => 'moodle/competency:coursecompetencymanage',
2152          'ajax'         => true,
2153      ),
2154      'core_competency_reorder_template_competency' => array(
2155          'classname'    => 'core_competency\external',
2156          'methodname'   => 'reorder_template_competency',
2157          'classpath'    => '',
2158          'description'  => 'Move a template competency to a new relative sort order.',
2159          'type'         => 'write',
2160          'capabilities' => 'moodle/competency:templatemanage',
2161          'ajax'         => true,
2162      ),
2163      'core_competency_create_template' => array(
2164          'classname'    => 'core_competency\external',
2165          'methodname'   => 'create_template',
2166          'classpath'    => '',
2167          'description'  => 'Creates new learning plan templates.',
2168          'type'         => 'write',
2169          'capabilities' => 'moodle/competency:templatemanage',
2170          'ajax'         => true,
2171      ),
2172      'core_competency_duplicate_template' => array(
2173          'classname'    => 'core_competency\external',
2174          'methodname'   => 'duplicate_template',
2175          'classpath'    => '',
2176          'description'  => 'Duplicate learning plan template.',
2177          'type'         => 'write',
2178          'capabilities' => 'moodle/competency:templatemanage',
2179          'ajax'         => true,
2180      ),
2181      'core_competency_read_template' => array(
2182          'classname'    => 'core_competency\external',
2183          'methodname'   => 'read_template',
2184          'classpath'    => '',
2185          'description'  => 'Load a summary of a learning plan template.',
2186          'type'         => 'read',
2187          'capabilities' => 'moodle/competency:templateview',
2188          'ajax'         => true,
2189      ),
2190      'core_competency_delete_template' => array(
2191          'classname'    => 'core_competency\external',
2192          'methodname'   => 'delete_template',
2193          'classpath'    => '',
2194          'description'  => 'Delete a learning plan template.',
2195          'type'         => 'write',
2196          'capabilities' => 'moodle/competency:templatemanage',
2197          'ajax'         => true,
2198      ),
2199      'core_competency_update_template' => array(
2200          'classname'    => 'core_competency\external',
2201          'methodname'   => 'update_template',
2202          'classpath'    => '',
2203          'description'  => 'Update a learning plan template.',
2204          'type'         => 'write',
2205          'capabilities' => 'moodle/competency:templatemanage',
2206          'ajax'         => true,
2207      ),
2208      'core_competency_list_templates' => array(
2209          'classname'    => 'core_competency\external',
2210          'methodname'   => 'list_templates',
2211          'classpath'    => '',
2212          'description'  => 'Load a list of a learning plan templates.',
2213          'type'         => 'read',
2214          'capabilities' => 'moodle/competency:templateview',
2215          'ajax'         => true,
2216      ),
2217      'core_competency_list_templates_using_competency' => array(
2218          'classname'    => 'core_competency\external',
2219          'methodname'   => 'list_templates_using_competency',
2220          'classpath'    => '',
2221          'description'  => 'Load a list of a learning plan templates for a given competency.',
2222          'type'         => 'read',
2223          'capabilities' => 'moodle/competency:templateview',
2224          'ajax'         => true,
2225      ),
2226      'core_competency_count_templates' => array(
2227          'classname'    => 'core_competency\external',
2228          'methodname'   => 'count_templates',
2229          'classpath'    => '',
2230          'description'  => 'Count a list of a learning plan templates.',
2231          'type'         => 'read',
2232          'capabilities' => 'moodle/competency:templateview',
2233          'ajax'         => true,
2234      ),
2235      'core_competency_count_templates_using_competency' => array(
2236          'classname'    => 'core_competency\external',
2237          'methodname'   => 'count_templates_using_competency',
2238          'classpath'    => '',
2239          'description'  => 'Count a list of a learning plan templates for a given competency.',
2240          'type'         => 'read',
2241          'capabilities' => 'moodle/competency:templateview',
2242          'ajax'         => true,
2243      ),
2244      'core_competency_create_plan' => array(
2245          'classname'    => 'core_competency\external',
2246          'methodname'   => 'create_plan',
2247          'classpath'    => '',
2248          'description'  => 'Creates a learning plan.',
2249          'type'         => 'write',
2250          'capabilities' => 'moodle/competency:planmanage',
2251          'ajax'         => true,
2252      ),
2253      'core_competency_update_plan' => array(
2254          'classname'    => 'core_competency\external',
2255          'methodname'   => 'update_plan',
2256          'classpath'    => '',
2257          'description'  => 'Updates a learning plan.',
2258          'type'         => 'write',
2259          'capabilities' => 'moodle/competency:planmanage',
2260          'ajax'         => true,
2261      ),
2262      'core_competency_complete_plan' => array(
2263          'classname'    => 'core_competency\external',
2264          'methodname'   => 'complete_plan',
2265          'classpath'    => '',
2266          'description'  => 'Complete learning plan.',
2267          'type'         => 'write',
2268          'capabilities' => 'moodle/competency:planmanage',
2269          'ajax'         => true,
2270      ),
2271      'core_competency_reopen_plan' => array(
2272          'classname'    => 'core_competency\external',
2273          'methodname'   => 'reopen_plan',
2274          'classpath'    => '',
2275          'description'  => 'Reopen learning plan.',
2276          'type'         => 'write',
2277          'capabilities' => 'moodle/competency:planmanage',
2278          'ajax'         => true,
2279      ),
2280      'core_competency_read_plan' => array(
2281          'classname'    => 'core_competency\external',
2282          'methodname'   => 'read_plan',
2283          'classpath'    => '',
2284          'description'  => 'Load a learning plan.',
2285          'type'         => 'read',
2286          'capabilities' => 'moodle/competency:planviewown',
2287          'ajax'         => true,
2288      ),
2289      'core_competency_delete_plan' => array(
2290          'classname'    => 'core_competency\external',
2291          'methodname'   => 'delete_plan',
2292          'classpath'    => '',
2293          'description'  => 'Delete a learning plan.',
2294          'type'         => 'write',
2295          'capabilities' => 'moodle/competency:planmanage',
2296          'ajax'         => true,
2297      ),
2298      'core_competency_list_user_plans' => array(
2299          'classname'    => 'core_competency\external',
2300          'methodname'   => 'list_user_plans',
2301          'classpath'    => '',
2302          'description'  => 'List a user\'s learning plans.',
2303          'type'         => 'read',
2304          'capabilities' => 'moodle/competency:planviewown',
2305          'ajax'         => true,
2306      ),
2307      'core_competency_list_plan_competencies' => array(
2308          'classname'    => 'core_competency\external',
2309          'methodname'   => 'list_plan_competencies',
2310          'classpath'    => '',
2311          'description'  => 'List the competencies in a plan',
2312          'type'         => 'read',
2313          'capabilities' => 'moodle/competency:planviewown',
2314          'ajax'         => true,
2315      ),
2316      'core_competency_add_competency_to_plan' => array(
2317          'classname'    => 'core_competency\external',
2318          'methodname'   => 'add_competency_to_plan',
2319          'classpath'    => '',
2320          'description'  => 'Add the competency to a learning plan',
2321          'type'         => 'write',
2322          'capabilities' => 'moodle/competency:planmanage',
2323          'ajax'         => true,
2324      ),
2325      'core_competency_remove_competency_from_plan' => array(
2326          'classname'    => 'core_competency\external',
2327          'methodname'   => 'remove_competency_from_plan',
2328          'classpath'    => '',
2329          'description'  => 'Remove the competency from a learning plan',
2330          'type'         => 'write',
2331          'capabilities' => 'moodle/competency:planmanage',
2332          'ajax'         => true,
2333      ),
2334      'core_competency_reorder_plan_competency' => array(
2335          'classname'    => 'core_competency\external',
2336          'methodname'   => 'reorder_plan_competency',
2337          'classpath'    => '',
2338          'description'  => 'Move a plan competency to a new relative sort order.',
2339          'type'         => 'write',
2340          'capabilities' => 'moodle/competency:planmanage',
2341          'ajax'         => true,
2342      ),
2343      'core_competency_plan_request_review' => array(
2344          'classname'    => 'core_competency\external',
2345          'methodname'   => 'plan_request_review',
2346          'classpath'    => '',
2347          'description'  => 'Request for a plan to be reviewed.',
2348          'type'         => 'write',
2349          'capabilities' => 'moodle/competency:planmanagedraft',
2350          'ajax'         => true,
2351      ),
2352      'core_competency_plan_start_review' => array(
2353          'classname'    => 'core_competency\external',
2354          'methodname'   => 'plan_start_review',
2355          'classpath'    => '',
2356          'description'  => 'Start the review of a plan.',
2357          'type'         => 'write',
2358          'capabilities' => 'moodle/competency:planmanage',
2359          'ajax'         => true,
2360      ),
2361      'core_competency_plan_stop_review' => array(
2362          'classname'    => 'core_competency\external',
2363          'methodname'   => 'plan_stop_review',
2364          'classpath'    => '',
2365          'description'  => 'Stop the review of a plan.',
2366          'type'         => 'write',
2367          'capabilities' => 'moodle/competency:planmanage',
2368          'ajax'         => true,
2369      ),
2370      'core_competency_plan_cancel_review_request' => array(
2371          'classname'    => 'core_competency\external',
2372          'methodname'   => 'plan_cancel_review_request',
2373          'classpath'    => '',
2374          'description'  => 'Cancel the review of a plan.',
2375          'type'         => 'write',
2376          'capabilities' => 'moodle/competency:planmanagedraft',
2377          'ajax'         => true,
2378      ),
2379      'core_competency_approve_plan' => array(
2380          'classname'    => 'core_competency\external',
2381          'methodname'   => 'approve_plan',
2382          'classpath'    => '',
2383          'description'  => 'Approve a plan.',
2384          'type'         => 'write',
2385          'capabilities' => 'moodle/competency:planmanage',
2386          'ajax'         => true,
2387      ),
2388      'core_competency_unapprove_plan' => array(
2389          'classname'    => 'core_competency\external',
2390          'methodname'   => 'unapprove_plan',
2391          'classpath'    => '',
2392          'description'  => 'Unapprove a plan.',
2393          'type'         => 'write',
2394          'capabilities' => 'moodle/competency:planmanage',
2395          'ajax'         => true,
2396      ),
2397       'core_competency_template_has_related_data' => array(
2398          'classname'    => 'core_competency\external',
2399          'methodname'   => 'template_has_related_data',
2400          'classpath'    => '',
2401          'description'  => 'Check if a template has related data',
2402          'type'         => 'read',
2403          'capabilities' => 'moodle/competency:templateview',
2404          'ajax'         => true,
2405      ),
2406      'core_competency_get_scale_values' => array(
2407          'classname'    => 'core_competency\external',
2408          'methodname'   => 'get_scale_values',
2409          'classpath'    => '',
2410          'description'  => 'Fetch the values for a specific scale',
2411          'type'         => 'read',
2412          'capabilities' => 'moodle/competency:competencymanage',
2413          'ajax'         => true,
2414          'services'     => array(MOODLE_OFFICIAL_MOBILE_SERVICE),
2415      ),
2416      'core_competency_add_related_competency' => array(
2417          'classname'    => 'core_competency\external',
2418          'methodname'   => 'add_related_competency',
2419          'classpath'    => '',
2420          'description'  => 'Adds a related competency',
2421          'type'         => 'write',
2422          'capabilities' => 'moodle/competency:competencymanage',
2423          'ajax'         => true,
2424      ),
2425      'core_competency_remove_related_competency' => array(
2426          'classname'    => 'core_competency\external',
2427          'methodname'   => 'remove_related_competency',
2428          'classpath'    => '',
2429          'description'  => 'Remove a related competency',
2430          'type'         => 'write',
2431          'capabilities' => 'moodle/competency:competencymanage',
2432          'ajax'         => true,
2433      ),
2434      'core_competency_read_user_evidence' => array(
2435          'classname'    => 'core_competency\external',
2436          'methodname'   => 'read_user_evidence',
2437          'classpath'    => '',
2438          'description'  => 'Read an evidence of prior learning.',
2439          'type'         => 'read',
2440          'capabilities' => 'moodle/competency:userevidenceview',
2441          'ajax'         => true,
2442      ),
2443      'core_competency_delete_user_evidence' => array(
2444          'classname'    => 'core_competency\external',
2445          'methodname'   => 'delete_user_evidence',
2446          'classpath'    => '',
2447          'description'  => 'Delete an evidence of prior learning.',
2448          'type'         => 'write',
2449          'capabilities' => 'moodle/competency:userevidencemanageown',
2450          'ajax'         => true,
2451      ),
2452      'core_competency_create_user_evidence_competency' => array(
2453          'classname'    => 'core_competency\external',
2454          'methodname'   => 'create_user_evidence_competency',
2455          'classpath'    => '',
2456          'description'  => 'Create an evidence of prior learning relationship with a competency.',
2457          'type'         => 'read',
2458          'capabilities' => 'moodle/competency:userevidencemanageown, moodle/competency:competencyview',
2459          'ajax'         => true,
2460      ),
2461      'core_competency_delete_user_evidence_competency' => array(
2462          'classname'    => 'core_competency\external',
2463          'methodname'   => 'delete_user_evidence_competency',
2464          'classpath'    => '',
2465          'description'  => 'Delete an evidence of prior learning relationship with a competency.',
2466          'type'         => 'write',
2467          'capabilities' => 'moodle/competency:userevidencemanageown',
2468          'ajax'         => true,
2469      ),
2470      'core_competency_user_competency_cancel_review_request' => array(
2471          'classname'    => 'core_competency\external',
2472          'methodname'   => 'user_competency_cancel_review_request',
2473          'classpath'    => '',
2474          'description'  => 'Cancel a review request.',
2475          'type'         => 'write',
2476          'capabilities' => 'moodle/competency:userevidencemanageown',
2477          'ajax'         => true,
2478      ),
2479      'core_competency_user_competency_request_review' => array(
2480          'classname'    => 'core_competency\external',
2481          'methodname'   => 'user_competency_request_review',
2482          'classpath'    => '',
2483          'description'  => 'Request a review.',
2484          'type'         => 'write',
2485          'capabilities' => 'moodle/competency:userevidencemanageown',
2486          'ajax'         => true,
2487      ),
2488      'core_competency_user_competency_start_review' => array(
2489          'classname'    => 'core_competency\external',
2490          'methodname'   => 'user_competency_start_review',
2491          'classpath'    => '',
2492          'description'  => 'Start a review.',
2493          'type'         => 'write',
2494          'capabilities' => 'moodle/competency:competencygrade',
2495          'ajax'         => true,
2496      ),
2497      'core_competency_user_competency_stop_review' => array(
2498          'classname'    => 'core_competency\external',
2499          'methodname'   => 'user_competency_stop_review',
2500          'classpath'    => '',
2501          'description'  => 'Stop a review.',
2502          'type'         => 'write',
2503          'capabilities' => 'moodle/competency:competencygrade',
2504          'ajax'         => true,
2505      ),
2506      'core_competency_user_competency_viewed' => array(
2507          'classname'    => 'core_competency\external',
2508          'methodname'   => 'user_competency_viewed',
2509          'classpath'    => '',
2510          'description'  => 'Log the user competency viewed event.',
2511          'type'         => 'read',
2512          'capabilities' => 'moodle/competency:usercompetencyview',
2513          'ajax'         => true,
2514          'services'     => array(MOODLE_OFFICIAL_MOBILE_SERVICE),
2515      ),
2516      'core_competency_user_competency_viewed_in_plan' => array(
2517          'classname'    => 'core_competency\external',
2518          'methodname'   => 'user_competency_viewed_in_plan',
2519          'classpath'    => '',
2520          'description'  => 'Log the user competency viewed in plan event.',
2521          'type'         => 'read',
2522          'capabilities' => 'moodle/competency:usercompetencyview',
2523          'ajax'         => true,
2524          'services'     => array(MOODLE_OFFICIAL_MOBILE_SERVICE),
2525      ),
2526      'core_competency_user_competency_viewed_in_course' => array(
2527          'classname'    => 'core_competency\external',
2528          'methodname'   => 'user_competency_viewed_in_course',
2529          'classpath'    => '',
2530          'description'  => 'Log the user competency viewed in course event',
2531          'type'         => 'read',
2532          'capabilities' => 'moodle/competency:usercompetencyview',
2533          'ajax'         => true,
2534          'services'     => array(MOODLE_OFFICIAL_MOBILE_SERVICE),
2535      ),
2536      'core_competency_user_competency_plan_viewed' => array(
2537          'classname'    => 'core_competency\external',
2538          'methodname'   => 'user_competency_plan_viewed',
2539          'classpath'    => '',
2540          'description'  => 'Log the user competency plan viewed event.',
2541          'type'         => 'read',
2542          'capabilities' => 'moodle/competency:usercompetencyview',
2543          'ajax'         => true,
2544          'services'     => array(MOODLE_OFFICIAL_MOBILE_SERVICE),
2545      ),
2546      'core_competency_grade_competency' => array(
2547          'classname'    => 'core_competency\external',
2548          'methodname'   => 'grade_competency',
2549          'classpath'    => '',
2550          'description'  => 'Grade a competency.',
2551          'type'         => 'write',
2552          'capabilities' => 'moodle/competency:competencygrade',
2553          'ajax'         => true,
2554      ),
2555      'core_competency_grade_competency_in_plan' => array(
2556          'classname'    => 'core_competency\external',
2557          'methodname'   => 'grade_competency_in_plan',
2558          'classpath'    => '',
2559          'description'  => 'Grade a competency from the user plan page.',
2560          'type'         => 'write',
2561          'capabilities' => 'moodle/competency:competencygrade',
2562          'ajax'         => true,
2563      ),
2564      'core_competency_grade_competency_in_course' => array(
2565          'classname'    => 'core_competency\external',
2566          'methodname'   => 'grade_competency_in_course',
2567          'classpath'    => '',
2568          'description'  => 'Grade a competency from the course page.',
2569          'type'         => 'write',
2570          'capabilities' => 'moodle/competency:competencygrade',
2571          'ajax'         => true,
2572          'services'     => array(MOODLE_OFFICIAL_MOBILE_SERVICE),
2573      ),
2574      'core_competency_unlink_plan_from_template' => array(
2575          'classname'    => 'core_competency\external',
2576          'methodname'   => 'unlink_plan_from_template',
2577          'classpath'    => '',
2578          'description'  => 'Unlink a plan form it template.',
2579          'type'         => 'write',
2580          'capabilities' => 'moodle/competency:planmanage',
2581          'ajax'         => true,
2582      ),
2583      'core_competency_template_viewed' => array(
2584          'classname'     => 'core_competency\external',
2585          'methodname'    => 'template_viewed',
2586          'classpath'     => '',
2587          'description'   => 'Log event template viewed',
2588          'type'          => 'read',
2589          'capabilities'  => 'moodle/competency:templateview',
2590          'ajax'          => true,
2591      ),
2592      'core_competency_request_review_of_user_evidence_linked_competencies' => array(
2593          'classname'     => 'core_competency\external',
2594          'methodname'    => 'request_review_of_user_evidence_linked_competencies',
2595          'classpath'     => '',
2596          'description'   => 'Send user evidence competencies in review',
2597          'type'          => 'write',
2598          'capabilities'  => 'moodle/competency:userevidencemanageown',
2599          'ajax'          => true,
2600      ),
2601      'core_competency_update_course_competency_settings' => array(
2602          'classname'     => 'core_competency\external',
2603          'methodname'    => 'update_course_competency_settings',
2604          'classpath'     => '',
2605          'description'   => 'Update the course competency settings',
2606          'type'          => 'write',
2607          'capabilities'  => 'moodle/competency:coursecompetencyconfigure',
2608          'ajax'          => true,
2609      ),
2610      'core_competency_delete_evidence' => array(
2611          'classname'     => 'core_competency\external',
2612          'methodname'    => 'delete_evidence',
2613          'classpath'     => '',
2614          'description'   => 'Delete an evidence',
2615          'type'          => 'write',
2616          'capabilities'  => 'moodle/competency:evidencedelete',
2617          'ajax'          => true,
2618          'services'      => array(MOODLE_OFFICIAL_MOBILE_SERVICE),
2619      ),
2620  
2621      'core_webservice_get_site_info' => array(
2622          'classname' => 'core_webservice_external',
2623          'methodname' => 'get_site_info',
2624          'classpath' => 'webservice/externallib.php',
2625          'description' => 'Return some site info / user info / list web service functions',
2626          'type' => 'read',
2627          'services' => array(MOODLE_OFFICIAL_MOBILE_SERVICE),
2628      ),
2629  
2630      // Blocks functions.
2631      'core_block_get_course_blocks' => array(
2632          'classname'     => 'core_block_external',
2633          'methodname'    => 'get_course_blocks',
2634          'description'   => 'Returns blocks information for a course.',
2635          'type'          => 'read',
2636          'capabilities'  => '',
2637          'services'      => array(MOODLE_OFFICIAL_MOBILE_SERVICE),
2638      ),
2639  
2640      'core_block_get_dashboard_blocks' => array(
2641          'classname'     => 'core_block_external',
2642          'methodname'    => 'get_dashboard_blocks',
2643          'description'   => 'Returns blocks information for the given user dashboard.',
2644          'type'          => 'read',
2645          'capabilities'  => '',
2646          'services'      => array(MOODLE_OFFICIAL_MOBILE_SERVICE),
2647      ),
2648  
2649      'core_block_fetch_addable_blocks' => array(
2650          'classname'     => 'core_block\external\fetch_addable_blocks',
2651          'description'   => 'Returns all addable blocks in a given page.',
2652          'type'          => 'read',
2653          'capabilities'  => 'moodle/site:manageblocks',
2654          'ajax'          => true,
2655          'services'      => array(MOODLE_OFFICIAL_MOBILE_SERVICE),
2656      ),
2657  
2658      // Filters functions.
2659      'core_filters_get_available_in_context' => array(
2660          'classname'   => 'core_filters\external',
2661          'methodname'  => 'get_available_in_context',
2662          'description' => 'Returns the filters available in the given contexts.',
2663          'type'        => 'read',
2664          'services'    => array(MOODLE_OFFICIAL_MOBILE_SERVICE),
2665      ),
2666      'core_customfield_delete_field' => array(
2667          'classname'   => 'core_customfield_external',
2668          'methodname'  => 'delete_field',
2669          'classpath'   => 'customfield/externallib.php',
2670          'description' => 'Deletes an entry',
2671          'type'        => 'write',
2672          'ajax'        => true,
2673      ),
2674      'core_customfield_reload_template' => array(
2675          'classname'   => 'core_customfield_external',
2676          'methodname'  => 'reload_template',
2677          'classpath'   => 'customfield/externallib.php',
2678          'description' => 'Reloads template',
2679          'type'        => 'read',
2680          'ajax'        => true,
2681      ),
2682      'core_customfield_create_category' => array(
2683          'classname'   => 'core_customfield_external',
2684          'methodname'  => 'create_category',
2685          'classpath'   => 'customfield/externallib.php',
2686          'description' => 'Creates a new category',
2687          'type'        => 'write',
2688          'ajax'        => true,
2689      ),
2690      'core_customfield_delete_category' => array(
2691          'classname'   => 'core_customfield_external',
2692          'methodname'  => 'delete_category',
2693          'classpath'   => 'customfield/externallib.php',
2694          'description' => 'Deletes a category',
2695          'type'        => 'write',
2696          'ajax'        => true,
2697      ),
2698      'core_customfield_move_field'   => array(
2699          'classname'   => 'core_customfield_external',
2700          'methodname'  => 'move_field',
2701          'classpath'   => 'customfield/externallib.php',
2702          'description' => 'Drag and drop',
2703          'type'        => 'write',
2704          'ajax'        => true,
2705      ),
2706      'core_customfield_move_category' => array(
2707          'classname'   => 'core_customfield_external',
2708          'methodname'  => 'move_category',
2709          'classpath'   => 'customfield/externallib.php',
2710          'description' => 'Drag and drop categories',
2711          'type'        => 'write',
2712          'ajax'        => true,
2713      ),
2714      'core_h5p_get_trusted_h5p_file' => [
2715          'classname'     => 'core_h5p\external',
2716          'methodname'    => 'get_trusted_h5p_file',
2717          'classpath'     => '',
2718          'description'   => 'Get the H5P file cleaned for Mobile App.',
2719          'type'          => 'read',
2720          'ajax'          => true,
2721          'capabilities'  => '',
2722          'services'      => [MOODLE_OFFICIAL_MOBILE_SERVICE],
2723      ],
2724      'core_table_get_dynamic_table_content' => [
2725          'classname' => 'core_table\external\dynamic\get',
2726          'description' => 'Get the dynamic table content raw html',
2727          'type' => 'read',
2728          'ajax' => true,
2729          'services' => [MOODLE_OFFICIAL_MOBILE_SERVICE],
2730      ],
2731      'core_xapi_statement_post' => [
2732          'classname'     => 'core_xapi\external\post_statement',
2733          'classpath'     => '',
2734          'description'   => 'Post an xAPI statement.',
2735          'type'          => 'write',
2736          'ajax'          => true,
2737          'capabilities'  => '',
2738          'services'      => [MOODLE_OFFICIAL_MOBILE_SERVICE],
2739      ],
2740      'core_contentbank_delete_content' => [
2741          'classname'     => 'core_contentbank\external\delete_content',
2742          'classpath'     => '',
2743          'description'   => 'Delete a content from the content bank.',
2744          'type'          => 'write',
2745          'ajax'          => true,
2746          'capabilities'  => 'moodle/contentbank:deleteanycontent',
2747      ],
2748      'core_contentbank_rename_content' => [
2749          'classname'     => 'core_contentbank\external\rename_content',
2750          'classpath'     => '',
2751          'description'   => 'Rename a content in the content bank.',
2752          'type'          => 'write',
2753          'ajax'          => true,
2754          'capabilities'  => 'moodle/contentbank:manageowncontent',
2755      ],
2756      'core_contentbank_set_content_visibility' => [
2757          'classname'     => 'core_contentbank\external\set_content_visibility',
2758          'classpath'     => '',
2759          'description'   => 'Set the visibility of a content in the content bank.',
2760          'type'          => 'write',
2761          'ajax'          => true,
2762          'capabilities'  => 'moodle/contentbank:manageowncontent',
2763      ],
2764      'core_create_userfeedback_action_record' => [
2765          'classname'     => 'core\external\record_userfeedback_action',
2766          'classpath'     => '',
2767          'description'   => 'Record the action that the user takes in the user feedback notification for future use.',
2768          'type'          => 'write',
2769          'ajax'          => true,
2770          'capabilities'  => '',
2771      ],
2772      'core_payment_get_available_gateways' => [
2773          'classname'   => 'core_payment\external\get_available_gateways',
2774          'description' => 'Get the list of payment gateways that support the given component/area',
2775          'type'        => 'read',
2776          'ajax'        => true,
2777      ],
2778      'core_reportbuilder_filters_reset' => [
2779          'classname'   => 'core_reportbuilder\external\filters\reset',
2780          'description' => 'Reset filters for given report',
2781          'type'        => 'write',
2782          'ajax'        => true,
2783      ],
2784      'core_dynamic_tabs_get_content' => [
2785          'classname'   => 'core\external\dynamic_tabs_get_content',
2786          'description' => 'Returns the content for a dynamic tab',
2787          'type'        => 'read',
2788          'ajax'        => true,
2789      ],
2790      'core_change_editmode' => [
2791          'classname'   => 'core\external\editmode',
2792          'methodname'   => 'change_editmode',
2793          'description' => 'Change the editing mode',
2794          'type'        => 'write',
2795          'ajax'        => true,
2796      ],
2797      'core_reportbuilder_reports_delete' => [
2798          'classname'   => 'core_reportbuilder\external\reports\delete',
2799          'description' => 'Delete report',
2800          'type'        => 'write',
2801          'ajax'        => true,
2802      ],
2803      'core_reportbuilder_reports_get' => [
2804          'classname'   => 'core_reportbuilder\external\reports\get',
2805          'description' => 'Get custom report',
2806          'type'        => 'read',
2807          'ajax'        => true,
2808      ],
2809      'core_reportbuilder_columns_add' => [
2810          'classname'   => 'core_reportbuilder\external\columns\add',
2811          'description' => 'Add column to report',
2812          'type'        => 'write',
2813          'ajax'        => true,
2814      ],
2815      'core_reportbuilder_columns_delete' => [
2816          'classname'   => 'core_reportbuilder\external\columns\delete',
2817          'description' => 'Delete column from report',
2818          'type'        => 'write',
2819          'ajax'        => true,
2820      ],
2821      'core_reportbuilder_columns_reorder' => [
2822          'classname'   => 'core_reportbuilder\external\columns\reorder',
2823          'description' => 'Re-order column within report',
2824          'type'        => 'write',
2825          'ajax'        => true,
2826      ],
2827      'core_reportbuilder_columns_sort_get' => [
2828          'classname'   => 'core_reportbuilder\external\columns\sort\get',
2829          'description' => 'Retrieve column sorting for report',
2830          'type'        => 'read',
2831          'ajax'        => true,
2832      ],
2833      'core_reportbuilder_columns_sort_reorder' => [
2834          'classname'   => 'core_reportbuilder\external\columns\sort\reorder',
2835          'description' => 'Re-order column sorting within report',
2836          'type'        => 'write',
2837          'ajax'        => true,
2838      ],
2839      'core_reportbuilder_columns_sort_toggle' => [
2840          'classname'   => 'core_reportbuilder\external\columns\sort\toggle',
2841          'description' => 'Toggle sorting of column within report',
2842          'type'        => 'write',
2843          'ajax'        => true,
2844      ],
2845      'core_reportbuilder_conditions_add' => [
2846          'classname'   => 'core_reportbuilder\external\conditions\add',
2847          'description' => 'Add condition to report',
2848          'type'        => 'write',
2849          'ajax'        => true,
2850      ],
2851      'core_reportbuilder_conditions_delete' => [
2852          'classname'   => 'core_reportbuilder\external\conditions\delete',
2853          'description' => 'Delete condition from report',
2854          'type'        => 'write',
2855          'ajax'        => true,
2856      ],
2857      'core_reportbuilder_conditions_reorder' => [
2858          'classname'   => 'core_reportbuilder\external\conditions\reorder',
2859          'description' => 'Re-order condition within report',
2860          'type'        => 'write',
2861          'ajax'        => true,
2862      ],
2863      'core_reportbuilder_conditions_reset' => [
2864          'classname'   => 'core_reportbuilder\external\conditions\reset',
2865          'description' => 'Reset conditions for given report',
2866          'type'        => 'write',
2867          'ajax'        => true,
2868      ],
2869      'core_reportbuilder_filters_add' => [
2870          'classname'   => 'core_reportbuilder\external\filters\add',
2871          'description' => 'Add filter to report',
2872          'type'        => 'write',
2873          'ajax'        => true,
2874      ],
2875      'core_reportbuilder_filters_delete' => [
2876          'classname'   => 'core_reportbuilder\external\filters\delete',
2877          'description' => 'Delete filter from report',
2878          'type'        => 'write',
2879          'ajax'        => true,
2880      ],
2881      'core_reportbuilder_filters_reorder' => [
2882          'classname'   => 'core_reportbuilder\external\filters\reorder',
2883          'description' => 'Re-order filter within report',
2884          'type'        => 'write',
2885          'ajax'        => true,
2886      ],
2887      'core_reportbuilder_audiences_delete' => [
2888          'classname'   => 'core_reportbuilder\external\audiences\delete',
2889          'description' => 'Delete audience from report',
2890          'type'        => 'write',
2891          'ajax'        => true,
2892      ],
2893      'core_reportbuilder_schedules_delete' => [
2894          'classname'   => 'core_reportbuilder\external\schedules\delete',
2895          'description' => 'Delete schedule from report',
2896          'type'        => 'write',
2897          'ajax'        => true,
2898      ],
2899      'core_reportbuilder_schedules_send' => [
2900          'classname'   => 'core_reportbuilder\external\schedules\send',
2901          'description' => 'Send report schedule',
2902          'type'        => 'write',
2903          'ajax'        => true,
2904      ],
2905      'core_reportbuilder_schedules_toggle' => [
2906          'classname'   => 'core_reportbuilder\external\schedules\toggle',
2907          'description' => 'Toggle state of report schedule',
2908          'type'        => 'write',
2909          'ajax'        => true,
2910      ],
2911  );
2912  
2913  $services = array(
2914     'Moodle mobile web service'  => array(
2915          'functions' => array(), // Unused as we add the service in each function definition, third party services would use this.
2916          'enabled' => 0,
2917          'restrictedusers' => 0,
2918          'shortname' => MOODLE_OFFICIAL_MOBILE_SERVICE,
2919          'downloadfiles' => 1,
2920          'uploadfiles' => 1
2921      ),
2922  );