Search moodle.org's
Developer Documentation

See Release Notes

  • Bug fixes for general core bugs in 4.2.x will end 22 April 2024 (12 months).
  • Bug fixes for security issues in 4.2.x will end 7 October 2024 (18 months).
  • PHP version: minimum PHP 8.0.0 Note: minimum PHP version has increased since Moodle 4.1. PHP 8.1.x is supported too.

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