Moodle has a number of core APIs that provide tools for Moodle scripts.
They are essential when writing Moodle plugins.
Most-used General APIs¶
These APIs are critical and will be used by nearly every Moodle plugin.
Access API (access)¶
The Access API gives you functions so you can determine what the current user is allowed to do, and it allows modules to extend Moodle with new capabilities.
Data manipulation API (dml)¶
The Data manipulation API allows you to read/write to databases in a consistent and safe way.
File API (files)¶
The File API controls the storage of files in connection to various plugins.
Form API (form)¶
The Form API defines and handles user data via web forms.
Logging API (log)¶
Page API (page)¶
Output API (output)¶
The Output API is used to render the HTML for all parts of the page.
String API (string)¶
The String API is how you get language text strings to use in the user interface. It handles any language translations that might be available.
Upgrade API (upgrade)¶
The Upgrade API is how your module installs and upgrades itself, by keeping track of its own version.
Moodlelib API (core)¶
The Moodlelib API is the central library file of miscellaneous general-purpose Moodle functions. Functions can over the handling of request parameters, configs, user preferences, time, login, mnet, plugins, strings and others. There are plenty of defined constants too.
Other General APIs¶
Admin settings (admin)¶
The Admin settings API deals with providing configuration options for each plugin and Moodle core.
The Availability API controls access to activities and sections.
Backup API (backup)¶
The Backup API defines exactly how to convert course data into XML for backup purposes, and the Restore API describes how to convert it back the other way.
Cache API (cache)¶
The The Moodle Universal Cache (MUC) is the structure for storing cache data within Moodle. Cache_API explains some of what is needed to use a cache in your code.
Calendar API (calendar)¶
The Calendar API allows you to add and modify events in the calendar for user, groups, courses, or the whole site.
Competency API (competency)¶
The Competency API allows you to list and add evidence of competencies to learning plans, learning plan templates, frameworks, courses and activities.
Data definition API (ddl)¶
The Data definition API is what you use to create, change and delete tables and fields in the database during upgrades.
Events API (event)¶
The Event 2 allows to define 「events」 with payload data to be fired whenever you like, and it also allows you to define handlers to react to these events when they happen. This is the recommended form of inter-plugin communication. This also forms the basis for logging in Moodle.
External functions API (external)¶
The External functions API allows you to create fully parametrised methods that can be accessed by external programs (such as Web services).
Lock API (lock)¶
The Lock API lets you synchronise processing between multiple requests, even for separate nodes in a cluster.
Message API (message)¶
The Message API lets you post messages to users. They decide how they want to receive them.
Media API (media)¶
The Media API can be used to embed media items such as audio, video, and Flash.
My profile API¶
The My profile API is used to add things to the profile page.
OAuth 2 API (oauth2)¶
The OAuth 2 API is used to provide a common place to configure and manage external systems using OAuth 2.
Preference API (preference)¶
The Preference API is a simple way to store and retrieve preferences for individual users.
Portfolio API (portfolio)¶
The Portfolio API allows you to add portfolio interfaces on your pages and allows users to package up data to send to their portfolios.
Rating API (rating)¶
The Rating API lets you create AJAX rating interfaces so that users can rate items in your plugin. In an activity module, you may choose to aggregate ratings to form grades.
RSS API (rss)¶
The RSS API allows you to create secure RSS feeds of data in your module.
Search API (search)¶
The Search API allows you to index contents in a search engine and query the search engine for results.
Tag API (tag)¶
The Tag API allows you to store tags (and a tag cloud) to items in your module.
Task API (task)¶
The Task API lets you run jobs in the background. Either once off, or on a regular schedule.
Time API (time)¶
The Time API takes care of translating and displaying times between users in the site.
Testing API (test)¶
The testing API contains the Unit test API (PHPUnit) and Acceptance test API (Acceptance testing). Ideally all new code should have unit tests written FIRST.
Web services API (webservice)¶
The Web services API allows you to expose particular functions (usually external functions) as web services.
Activity module APIs¶
Activity modules are the most important plugin in Moodle. There are several core APIs that service only Activity modules.
Activity completion API (completion)¶
The Activity completion API is to indicate to the system how activities are completed.
Advanced grading API (grading)¶
The Advanced grading API allows you to add more advanced grading interfaces (such as rubrics) that can produce simple grades for the gradebook.
Conditional activities API (condition) - deprecated in 2.7¶
The deprecated Conditional activities API used to provide conditional access to modules and sections in Moodle 2.6 and below. It has been replaced by the Availability API.
Groups API (group)¶
The Groups API allows you to check the current activity group mode and set the current group.
Gradebook API (grade)¶
The Gradebook API allows you to read and write from the gradebook. It also allows you to provide an interface for detailed grading information.
Plagiarism API (plagiarism)¶
The Plagiarism API allows your activity module to send files and data to external services to have them checked for plagiarism.
Question API (question)¶
The Question API (which can be divided into the Question bank API and the Question engine API), can be used by activities that want to use questions from the question bank.