Зачем нужен Moodle API
Web Services API позволяет внешним системам взаимодействовать с Moodle программно: создавать пользователей, зачислять на курсы, получать оценки, создавать курсы. Без API каждое действие требует ручного входа в Moodle.
Включение Web Services в Moodle
- Администрирование → Расширенные возможности → включить «Веб-сервисы»
- Администрирование → Плагины → Веб-сервисы → Управление протоколами → включить REST
- Создать роль с нужными capabilities (moodle/user:create, enrol/manual:enrol и т.д.)
- Создать сервисный аккаунт, назначить роль, получить токен
Основные методы API
Управление пользователями
core_user_create_users— создание пользователейcore_user_get_users— поиск пользователейcore_user_update_users— обновление профилей
Зачисление
enrol_manual_enrol_users— зачислить пользователя на курсenrol_manual_unenrol_users— отчислить
Оценки
gradereport_user_get_grade_items— получить оценки пользователяcore_grades_update_grades— выставить оценку
Пример: зачисление через PHP
$token = 'ваш_токен'; $url = 'https://moodle.example.ru/webservice/rest/server.php'; $params = [ 'wstoken' => $token, 'wsfunction' => 'enrol_manual_enrol_users', 'moodlewsrestformat' => 'json', 'enrolments[0][roleid]' => 5, // студент 'enrolments[0][userid]' => 123, 'enrolments[0][courseid]' => 45, ]; $ch = curl_init($url . '?' . http_build_query($params)); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); $response = json_decode(curl_exec($ch));
Интеграция с сайтом (Next.js, WordPress)
Типовая схема: пользователь оплачивает курс на сайте → backend вызывает Moodle API → создаёт аккаунт и зачисляет → отправляет email с данными для входа. Реализуется за 1–2 дня разработки.
Безопасность токенов
Токен = пароль. Храните только на сервере, никогда не в клиентском коде. Создавайте отдельные токены для разных систем — если одна скомпрометирована, отзываете только её токен. Ограничивайте токен только нужными методами API.
Разработаю интеграцию вашей системы с Moodle через API. Опишите задачу — оценю сроки и стоимость.
Опишите задачу — расскажу, как решить её конкретно в вашем случае. Свяжитесь — разберём вместе.