Search moodle.org's
Developer Documentation

See Release Notes
Long Term Support Release

  • Bug fixes for general core bugs in 4.1.x will end 13 November 2023 (12 months).
  • Bug fixes for security issues in 4.1.x will end 10 November 2025 (36 months).
  • PHP version: minimum PHP 7.4.0 Note: minimum PHP version has increased since Moodle 4.0. PHP 8.0.x is supported too.

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