Skip to main content

Moodle LMS

Moodle is a free, open-source Learning Management System (LMS) used by universities, schools, and corporate training programs worldwide. It supports richly structured courses, enrolments, grade and competency tracking, quizzes and assignments, and collaboration via forums and groups. Its REST web services API exposes courses, users, grades, assignments, quiz attempts, enrolments, groups, badges, and calendar events.

Moodle LMS icon

Power end-to-end data operations for your Moodle LMS API with Nexla. Our bi-directional Moodle LMS connector is purpose-built for Moodle LMS, making it simple to ingest data, sync it across systems, and deliver it anywhere — all with no coding required. Nexla turns API-sourced data into ready-to-use, reusable data products and makes it easy to send data to Moodle LMS or any other destination. With comprehensive monitoring, lineage tracking, and access controls, Nexla keeps your Moodle LMS workflows fast, secure, and fully governed.

Features

Type: API

SourceDestination

  • Seamless API Integration: Connect to any endpoint as source or destination without coding, with automatic data product creation
  • Visual Composition & Chaining: Build complex integrations using visual templates, chain API calls, and compose workflows with data validation and filtering
  • API Proxy: Expose curated slices of your data securely with a secure and customizable API proxy that validates and transforms data on the fly
  • Request optimization with intelligent batching, retry, and caching to minimize API calls and costs

Prerequisites

Nexla connects to Moodle LMS through its REST web services API. Before creating a credential in Nexla, you must enable web services on your Moodle instance and obtain either a pre-generated token or the credentials needed to generate one at runtime.

Enable Web Services on Your Moodle Instance

Web services must be enabled by a Moodle site administrator before any external API access is possible.

  1. Log in to your Moodle instance as a site administrator.

  2. Navigate to Site administration > Advanced features.

  3. Check the Enable web services checkbox and click Save changes.

  4. Navigate to Site administration > Plugins > Web services > Manage protocols.

  5. Enable the REST protocol by clicking the eye icon in the Enable column next to REST, then click Save changes.

Create or Identify a Service Account User

Moodle's web services require API calls to be associated with a specific user account. Nexla recommends using a dedicated service account rather than a personal admin account.

  1. Navigate to Site administration > Users > Add a new user.

  2. Fill in the required fields: Username, First name, Surname, Email address, and Password. Use a strong password and note it for later.

  3. Set the Authentication method to Manual accounts.

  4. Click Create user to save the new service account.

Create an External Service and Add Functions

An external service defines which API functions are exposed and which users are authorized to call them.

  1. Navigate to Site administration > Plugins > Web services > External services.

  2. Click Add to create a new external service.

  3. Enter a Name (e.g., Nexla Integration) and a Short name (e.g., nexla_integration). Note the short name, as it is required for the Username & Password authentication method.

  4. Ensure both Enabled and Authorised users only are checked, then click Add service.

  5. On the External services page, click Functions next to your new service.

  6. Add all required API functions by searching for and selecting them. At a minimum, add core_webservice_get_site_info (used to validate the connection). Add additional functions corresponding to the Moodle LMS endpoints you plan to use with Nexla.

  7. Return to the External services page and click Authorised users next to your service.

  8. Search for and add the service account user created above.

Obtain Your Token

Moodle supports two token approaches, corresponding to the two credential types available in Nexla:

Option A — Pre-Generated Token (recommended for simplicity):

  1. Navigate to Site administration > Plugins > Web services > Manage tokens.

  2. Click Add to create a new token.

  3. Select the service account user in the User field and select your external service in the Service field.

  4. Optionally set an expiry date in the Valid until field.

  5. Click Save changes. The generated token will be displayed on the Manage tokens page — copy and store it securely, as this is the value you will enter in Nexla.

Option B — Username & Password (Auto Token):

With this method, Nexla automatically exchanges the service account username and password for a token at runtime by calling Moodle's /login/token.php endpoint. No manual token generation is required, but you must provide the service account Username, Password, and the Service Shortname of your external service.

For additional security, Moodle tokens can be assigned an expiry date. If you use a pre-generated token with an expiry, you will need to generate a new token and update the Nexla credential before the existing token expires. The Username & Password method avoids this by obtaining a fresh token automatically at runtime.

Authenticate

Credentials required

Exchanges username and password for a wstoken via /login/token.php. Token is cached and re-used for all API calls.

FieldRequiredSecretDescription
Site URLYesNoBase URL of your Moodle instance, e.g. https://lms.yourorg.com (no trailing slash).
UsernameYesNoService account username. Must be enabled on the web service in Moodle admin.
PasswordYesYesPassword for the Moodle service account. Use HTTPS to protect credentials in transit.
Service ShortnameNoNoWeb service shortname in Moodle (Site admin > Plugins > Web services > External services). Default: moodle_mobile_app.

Create a credential in Nexla

  1. To create a new Moodle LMS credential, after selecting the data source/destination type, click the Add Credential tile to open the Add New Credential overlay.

  2. Enter a name for the credential in the Credential Name field and a short, meaningful description in the Credential Description field.

  3. Nexla supports two authentication methods for Moodle LMS. Select the method that matches how you obtained your token in the prerequisites section.

Moodle LMS Authentication Methods

Nexla automatically exchanges your Moodle service account username and password for a web service token at runtime by calling the Moodle /login/token.php endpoint. The token is cached and reused for all API calls. This method requires the service account user to be authorized on the named external service.

  1. Enter the base URL of your Moodle instance in the **Site URL** field. This should be the root URL without a trailing slash — for example, `https://lms.yourorganization.com`. All API calls will be made relative to this URL.
  2. Enter the username of the Moodle service account in the **Username** field. This must be the username of a user who is authorized on the external service you configured in the prerequisites.
  3. Enter the password of the Moodle service account in the **Password** field. The password is transmitted over HTTPS to Moodle's `/login/token.php` endpoint and is not stored in plain text by Nexla.
  4. Enter the short name of the Moodle external service in the **Service Shortname** field. This is the value you set when creating the external service in Moodle — for example, `nexla_integration`. The default value `moodle_mobile_app` refers to Moodle's built-in mobile app service, which can be used if it has been enabled and the service account authorized on it.
  1. Once all of the relevant steps in the above sections have been completed, click the Save button at the bottom of the overlay to save the configured credential. The newly added credential will now appear in a tile on the Authenticate screen during data source/destination creation and can be selected for use with a new data source or destination.

Use as a data source

To create a new data flow, navigate to the Integrate section, and click the New Data Flow button. Select the Moodle LMS connector tile, then select the credential that will be used to connect to the Moodle instance, and click Next; or, create a new Moodle LMS credential for use in this flow.

Endpoint templates

Nexla provides pre-built templates that can be used to rapidly configure data sources to ingest data from common Moodle LMS REST API endpoints. Each template is pre-configured for the corresponding Moodle web service function, making data source setup easy and efficient. Select the endpoint from which this source will fetch data from the Endpoint pulldown menu. Available endpoint templates are listed in the expandable boxes below.

Get Site Info

Returns metadata about the Moodle site, the installed Moodle version, and information about the authenticated user. This endpoint is commonly used to validate that a credential is working correctly and to discover the capabilities of the connected Moodle instance.

  • No additional configuration parameters are required. Select this endpoint and click Test to verify connectivity and retrieve site metadata.

This endpoint calls the core_webservice_get_site_info Moodle web service function. Confirm that this function is added to your external service in Moodle admin before using this endpoint.

Get Courses

Retrieves all courses in the Moodle instance with full course metadata, including short name, full name, category, format, start/end dates, and summary. Supports pagination for large course catalogues. Use this endpoint when you need a complete inventory of courses for reporting or synchronization.

  • Enter the number of courses to return per page in the Page Size field. The default value is 100. Nexla automatically advances through pages until all courses are retrieved.

This endpoint calls core_course_get_courses. For large Moodle instances with thousands of courses, a page size of 100 is recommended to balance throughput and API load.

Get Courses by Field

Retrieves courses filtered by a specific field. Use this endpoint when you need to fetch a targeted subset of courses rather than the full catalogue — for example, all courses in a particular category or a single course by its short name.

  • Select the field to filter courses by from the Filter Field dropdown. Available options are:

    • Category ID — filters by the numeric Moodle category ID
    • Course ID — retrieves a single course by its numeric Moodle ID
    • Short Name — filters by the course short name (case-sensitive)
    • ID Number — filters by the administrator-assigned ID number field
  • Enter the value to match in the Filter Value field. This field is required. For example, to retrieve all courses in category 5, select Category ID and enter 5.

Course category IDs and course IDs can be found in the Moodle admin interface under Site administration > Courses > Manage courses and categories, or by running the Get Courses or Get Course Categories endpoint first.

Get Course Categories

Returns all course categories defined in the Moodle instance, including their hierarchy (parent/child relationships), names, descriptions, and the number of courses in each category. Use this endpoint to build category trees or enrich course data with category metadata.

  • No additional configuration parameters are required. Select this endpoint and click Test to retrieve all categories.

Get Course Contents

Returns the sections and activity modules (resources, assignments, quizzes, forums, labels, etc.) for a specified course. Use this endpoint to audit course structure, extract learning activity metadata, or feed content inventories into downstream systems.

  • Enter the numeric Moodle course ID in the Course ID field. This field is required. The course ID can be found in the URL when viewing a course in Moodle (e.g., https://lms.example.com/course/view.php?id=42 — the course ID is 42).

This endpoint calls core_course_get_contents. The authenticated service account must be enrolled in the course or have site-level course viewing permissions to retrieve its contents.

Get Users

Searches for and returns users matching a specified field-value criterion. Use this endpoint to retrieve user profiles for reporting, synchronization with HR systems, or to look up users before performing enrolment operations.

  • Select the user field to search by from the Search Field dropdown. Available options are:

    • Email — match by email address (default)
    • Username — match by Moodle username
    • ID Number — match by the administrator-assigned ID number
    • First Name — match by first name
    • Last Name — match by last name
  • Enter the value to match in the Search Value field. Use % as a wildcard to match all users or perform partial matches (e.g., entering % in the Email field retrieves all users with any email address).

This endpoint calls core_user_get_users. For retrieving all users, set Search Field to Email and Search Value to %. The service account must have the moodle/user:viewdetails capability.

Get Users by Field

Returns an exact-match list of users for a specific field value. Unlike the Get Users endpoint (which supports wildcards), this endpoint performs a strict exact match and is suited for programmatic lookups where you know the precise identifier.

  • Select the field to look up by from the Field dropdown. Available options are:

    • User ID — exact match by numeric Moodle user ID
    • ID Number — exact match by administrator-assigned ID number
    • Username — exact match by Moodle username
    • Email — exact match by email address
  • Enter the exact value to look up in the Field Value field. This field is required.

Get Enrolled Users

Returns all users enrolled in a specific course, including their role assignments, enrolment method, and enrolment timestamps. Use this endpoint to track who is enrolled in a course for compliance reporting or to synchronize enrolment data with external HR or student information systems.

  • Enter the numeric Moodle course ID in the Course ID field. This field is required.
  • Enter the number of users to return per page in the Page Size field. The default is 100. Nexla automatically paginates through all enrolled users.

This endpoint calls core_enrol_get_enrolled_users. The service account must have enrolment viewing permissions for the specified course.

Get User Course Enrolments

Returns all courses that a specific user is enrolled in. Use this endpoint to build per-learner dashboards, track individual learning journeys, or identify which courses a user has access to.

  • Enter the numeric Moodle user ID in the User ID field. This field is required. User IDs can be retrieved using the Get Users or Get Users by Field endpoint.

Get Grade Items

Returns grade items and user grades for a specified course. Each record contains grade item definitions (name, maximum grade, weight) along with the earned grade for each user. Use this endpoint to extract detailed grading data for analytics, dashboards, or LRS integration.

  • Enter the numeric Moodle course ID in the Course ID field. This field is required.
  • Enter a numeric Moodle user ID in the User ID field to filter results to a specific user, or leave the value as 0 to retrieve grades for all enrolled users in the course.

This endpoint calls gradereport_user_get_grade_items. The response groups grade items by user — each record in the returned Nexset represents one user's complete grade report for the course.

Get Course Grades Overview

Returns the final course-level grade for a specific user across all courses they are enrolled in. Use this endpoint to generate per-learner progress summaries or feed overall course grades into external reporting systems.

  • Enter the numeric Moodle user ID in the User ID field. This field is required.

Get Assignments

Returns all assignments for a specified course (or all accessible courses), including assignment names, due dates, submission type settings, grade settings, and configuration details. Use this endpoint to audit assignment structures or synchronize assignment metadata with external systems.

  • Enter the numeric Moodle course ID in the Course ID field to limit results to a single course. Set the value to 0 or leave it at the default to retrieve assignments from all courses accessible to the service account.

This endpoint calls mod_assign_get_assignments. The data path extracts assignments nested within each course object, so each returned record represents a single assignment.

Get Assignment Submissions

Returns student submissions for a given assignment, including submission status, timestamps, plugin data (e.g., file or online text submissions), and grading information. Use this endpoint for tracking submission compliance, analyzing submission patterns, or feeding submission data into grading workflows.

  • Enter the numeric Moodle assignment ID in the Assignment ID field. This field is required. Assignment IDs can be obtained from the Get Assignments endpoint.
  • Optionally filter submissions by status using the Submission Status Filter dropdown:

    • All — returns all submissions regardless of status (default)
    • Draft — returns only submissions saved as drafts
    • Submitted — returns only submissions that have been finalized
    • New — returns only submissions with no student activity yet

Get Quizzes by Courses

Returns quizzes in one or more specified courses, including quiz name, timing settings (open/close dates), grading method, number of attempts allowed, and other configuration details. Use this endpoint to audit quiz availability or synchronize quiz metadata with external assessment platforms.

  • Enter the numeric Moodle course ID in the Course ID field to retrieve quizzes for a specific course. Set the value to 0 to retrieve quizzes from all courses accessible to the service account.

Get Quiz Attempts

Returns attempt records for a specific quiz, including each attempt's score, start time, finish time, duration, and completion state. Use this endpoint to analyze learner quiz performance, identify struggling participants, or feed attempt data into learning analytics dashboards.

  • Enter the numeric Moodle quiz ID in the Quiz ID field. This field is required. Quiz IDs can be found from the Get Quizzes by Courses endpoint or in the Moodle course admin interface.
  • Optionally enter a numeric Moodle user ID in the User ID field to filter attempts to a specific learner, or leave it as 0 to retrieve attempts for all users.
  • Select the attempt completion state to filter by from the Attempt Status dropdown:

    • All — returns all attempts regardless of state (default)
    • Finished — returns only completed attempts
    • Unfinished — returns only in-progress attempts

Get Activity Completion Status

Returns the completion status for every activity in a course for a specific user, including whether each activity has been completed, the completion date, and the completion condition used. Use this endpoint to track per-learner progress through course activities and identify incomplete requirements.

  • Enter the numeric Moodle course ID in the Course ID field. This field is required.
  • Enter the numeric Moodle user ID in the User ID field. This field is required.

Activity completion tracking must be enabled on the Moodle site (Site administration > Advanced features > Enable completion tracking) and for the specific course for data to be returned by this endpoint.

Get Course Completion Status

Returns the overall course completion status for a specific user in a given course, including whether the course is complete, the completion date, and the list of individual completion criteria and their statuses. Use this endpoint to power completion dashboards, trigger downstream workflows on course completion, or generate compliance reports.

  • Enter the numeric Moodle course ID in the Course ID field. This field is required.
  • Enter the numeric Moodle user ID in the User ID field. This field is required.

Get Groups

Returns all groups defined within a specific course, including group name, description, enrolment key, and member count. Use this endpoint to synchronize Moodle group memberships with external collaboration tools or reporting systems.

  • Enter the numeric Moodle course ID in the Course ID field. This field is required.

Get Group Members

Returns the user IDs of all members belonging to a specific group. Use this endpoint together with the Get Groups endpoint to build a complete picture of group membership within a course.

  • Enter the numeric Moodle group ID in the Group ID field. This field is required. Group IDs can be retrieved using the Get Groups endpoint.

Get Forums by Courses

Returns forums in one or more courses, including forum name, type, subscription settings, discussion count, and post count. Use this endpoint to monitor forum activity levels, audit forum configurations, or feed forum metadata into engagement analytics.

  • Enter the numeric Moodle course ID in the Course ID field. Set the value to 0 to retrieve forums from all courses accessible to the service account.

Get Forum Discussions

Returns discussions in a forum with pagination, sorted by last post time. Each record includes the discussion subject, author, creation date, last reply date, and reply count. Use this endpoint to analyze forum engagement, extract discussion content for moderation, or feed communication data into analytics platforms.

  • Enter the numeric Moodle forum ID in the Forum ID field. This field is required. Forum IDs can be obtained from the Get Forums by Courses endpoint.
  • Enter the number of discussions to return per page in the Page Size field. The default is 50. Nexla automatically paginates until all discussions are retrieved.

Get Calendar Events

Returns calendar events (course events, site events, and user events) within a specified date range. Use this endpoint to synchronize Moodle events with external calendaring systems, build event-based notifications, or analyze scheduling patterns.

  • Enter the start of the date range as a Unix timestamp in the Time Start (Unix) field. The default value {now-30} represents 30 days before the current date. Unix timestamps can be generated using standard date/time conversion tools.
  • Enter the end of the date range as a Unix timestamp in the Time End (Unix) field. The default value {now} represents the current date and time.

Unix timestamps are the number of seconds elapsed since January 1, 1970 (UTC). For example, 2024-01-01T00:00:00Z corresponds to the Unix timestamp 1704067200. Many date/time converters are freely available online to generate Unix timestamps from human-readable dates.

Get User Badges

Returns badges awarded to a specific user, including the badge name, description, criteria, issue date, and issuer. Use this endpoint to track achievement and gamification data, synchronize badges with external HR systems, or power learner recognition dashboards.

  • Enter the numeric Moodle user ID in the User ID field. This field is required.
  • Optionally enter a numeric Moodle course ID in the Course ID field to filter badges issued within a specific course. Set the value to 0 to retrieve all badges across all courses for the user.

Get Competencies by Course

Returns the competency framework items linked to a specific course. Competencies in Moodle are skills or learning outcomes that can be tracked and evidenced. Use this endpoint to extract competency structures for skills gap analysis or integration with competency management systems.

  • Enter the numeric Moodle course ID in the Course ID field. This field is required.

Moodle's competency features must be enabled on the site (Site administration > Advanced features > Enable competencies) for this endpoint to return data.

Get User Competencies

Returns competency evidence and proficiency ratings for a specific user in a specific course. Each record includes the competency definition, the user's current proficiency rating, evidence items, and the date last modified. Use this endpoint to power skills tracking dashboards or feed learner competency data into talent management systems.

  • Enter the numeric Moodle user ID in the User ID field. This field is required.
  • Enter the numeric Moodle course ID in the Course ID field. This field is required.

Once the selected endpoint template has been configured, click the Test button to the right of the endpoint selection menu to retrieve a sample of the data that will be fetched. Sample data will be displayed in the Endpoint Test Result panel on the right, allowing you to verify that the source is configured correctly before saving.

Manual configuration

Moodle LMS data sources can also be manually configured to ingest data from any valid Moodle REST web service endpoint. Select the Advanced tab at the top of the configuration screen, and follow the instructions in Connect to Any API to configure the API method, endpoint URL, date/time and lookup macros, path to data, metadata, and request headers.

All Moodle REST API calls are made as POST requests to https://<your-moodle-domain>/webservice/rest/server.php over HTTPS, with the function name, token, and parameters supplied in the request body rather than the URL. Moodle web service responses frequently wrap the relevant data array within a top-level object (e.g., {"users": [...]} or {"courses": [...]}), so setting Path to Data correctly (e.g., $.users[*], $.courses[*].assignments[*]) is important for proper record extraction. Additional request headers are typically not required, since authentication is handled via the wstoken parameter in the request body.

Once all of the relevant settings have been configured, click the Create button in the upper right corner of the screen to save and create the new Moodle LMS data source. Nexla will now begin ingesting data from the configured endpoint and will organize any data that it finds into one or more Nexsets.

Use as a destination

Click the + icon on the Nexset that will be sent to the Moodle LMS destination, and select the Send to Destination option from the menu. Select the Moodle LMS connector from the list of available destination connectors, then select the credential that will be used to connect to the Moodle instance, and click Next; or, create a new Moodle LMS credential for use in this flow.

Endpoint templates

Nexla provides pre-built templates that can be used to rapidly configure destinations to send data to common Moodle LMS write endpoints. Select the endpoint to which data will be sent from the Endpoint pulldown menu. Then, click on the template in the list below to expand it, and follow the instructions to configure additional endpoint settings.

Create Users

Creates new Moodle user accounts from records in the Nexset. Use this endpoint to provision users in Moodle from an HR system, student information system, or any external user directory. Each record in the Nexset should represent one user to be created.

  • Ensure each record in the Nexset includes the required Moodle user fields. At a minimum, each record must contain the following:

    • username — unique Moodle username (lowercase, no spaces)
    • password — initial password (must meet Moodle's password policy)
    • firstname — user's first name
    • lastname — user's last name
    • email — unique email address
  • Optional fields such as idnumber, city, country, lang, timezone, description, and custom profile fields can also be included in each record. Refer to the Moodle Web Services documentation for the full list of supported user fields.
  • No additional endpoint-level configuration parameters are required. Nexla sends one user record per API call to the core_user_create_users web service function.

Moodle's core_user_create_users function enforces your site's password policy and will reject user records with passwords that do not meet the minimum requirements. Ensure passwords in the source data comply with the Moodle site's password policy before running this flow.

Update Users

Updates existing Moodle user profile fields from records in the Nexset. Use this endpoint to synchronize user profile changes from an authoritative source (such as an HR system or directory) into Moodle. Each record in the Nexset represents one user to be updated.

  • Each record in the Nexset must include the id field containing the numeric Moodle user ID of the user to be updated. This field is required for Moodle to identify which user account to modify.
  • Include only the fields that should be updated in each record. Moodle will update only the fields present in the request and leave all other fields unchanged.
  • Updatable fields include firstname, lastname, email, username, idnumber, city, country, lang, timezone, description, and custom profile fields.

To retrieve the numeric Moodle user IDs needed for updates, use the Moodle LMS Get Users or Get Users by Field source endpoint first to build a lookup mapping external identifiers to Moodle user IDs.

Enrol Users

Manually enrols users into a course with a specified role. Use this endpoint to programmatically enrol learners in courses based on records from an HR system, registration platform, or other external system. Each record in the Nexset should represent one enrolment action.

  • Each record in the Nexset must include the following fields:

    • roleid — numeric Moodle role ID for the enrolment
    • userid — numeric Moodle user ID of the user to enrol
    • courseid — numeric Moodle course ID of the course to enrol the user in
  • Alternatively, set the Role ID configuration parameter at the endpoint level to apply a single role to all enrolments in this flow. Available role options are:

    • Student (5) — standard learner role (default)
    • Teacher (3) — editing teacher with full course management
    • Non-editing teacher (4) — teacher with grading access but no course editing
    • Manager (1) — site manager role
  • Optionally include timestart and timeend fields as Unix timestamps to define the enrolment period. If omitted, the enrolment will have no time restriction.

This endpoint uses Moodle's manual enrolment plugin (enrol_manual_enrol_users). The manual enrolment method must be enabled on the target course in Moodle for enrolments to succeed. Confirm this under the course settings in Course administration > Users > Enrolment methods.

Unenrol Users

Removes user enrolments from a course. Use this endpoint to programmatically unenrol learners when they leave an organization, complete a program, or when enrolment records in an authoritative source are revoked. Each record in the Nexset should represent one unenrolment action.

  • Each record in the Nexset must include the following fields:

    • userid — numeric Moodle user ID of the user to unenrol
    • courseid — numeric Moodle course ID of the course from which the user will be unenrolled
  • No additional endpoint-level configuration parameters are required. Nexla sends one unenrolment record per API call to the enrol_manual_unenrol_users web service function.
Important

Unenrolling a user from a course in Moodle permanently removes their access to all course content and may affect their grade data visibility. Verify that the unenrolment records in the source Nexset are accurate before activating this flow.

Create Courses

Creates new courses in Moodle from records in the Nexset. Use this endpoint to provision courses programmatically from an external course catalogue, curriculum management system, or migration source. Each record in the Nexset represents one course to be created.

  • Each record in the Nexset must include the following required fields:

    • fullname — the full display name of the course
    • shortname — a unique short name for the course (no spaces, used in URLs)
    • categoryid — the numeric Moodle category ID under which the course will be created
  • Optional fields such as summary, format (e.g., topics, weeks), startdate (Unix timestamp), enddate (Unix timestamp), visible (0 or 1), and idnumber can also be included. Refer to the Moodle Web Services documentation for the full list of supported course creation fields.

Course short names must be unique across the entire Moodle site. If a short name collision occurs, the API call will fail for that record. Review your source data for duplicate short names before activating this flow.

Manual configuration

Moodle LMS destinations can also be manually configured to send data to any valid Moodle REST web service write endpoint. Select the Advanced tab at the top of the configuration screen, and follow the instructions in Connect to Any API to configure the API method, data format, endpoint URL, request headers, attribute exclusions, record batching, and response webhooks.

All Moodle REST write functions use POST with JSON content, and the endpoint URL must include the function name, token, and response format as query parameters: https://<your-moodle-domain>/webservice/rest/server.php?wstoken=<your-token>&wsfunction=<function_name>&moodlewsrestformat=json. Moodle's bulk write functions (such as core_user_create_users) accept arrays of records in a single call, so enabling record batching can significantly improve throughput. Enabling the response webhook lets you capture the response from each call — for example, the newly assigned Moodle IDs for created users or courses.

Save & activate

Once all endpoint settings have been configured, click the Done button in the upper right corner of the screen to save and create the destination. To begin sending data to the configured Moodle LMS endpoint, open the destination resource menu, and select Activate.

The Nexset data will not be sent to Moodle LMS until the destination is activated. Destinations can be activated immediately or at a later time, providing full control over data movement.