Skip to content
Menu
DevSecOps Now!!!
  • About
  • Certifications
  • Contact
  • Courses
  • DevSecOps Consulting
  • DevSecOps Tools
  • Training
  • Tutorials
DevSecOps Now!!!

How to Create Moodle API Token for OneMembership Cohort Integration

Posted on June 11, 2026

Limited Time Offer!

For Less Than the Cost of a Starbucks Coffee, Access All DevOpsSchool Videos on YouTube Unlimitedly.
Master DevOps, SRE, DevSecOps Skills!

Enroll Now

Moodle web services are designed for external systems to call Moodle APIs. Moodle provides a full web service framework for external integrations.


Step 1: Login as Moodle Admin

Open Moodle admin panel:

https://www.yourdomain.xyz

Login with admin account.


Step 2: Enable Web Services

Go to:

Site administration > Advanced features

Enable:

Enable web services

Save changes.


Step 3: Enable REST Protocol

Go to:

Site administration > Server > Web services > Manage protocols

Enable:

REST protocol

REST is needed because your Laravel project will call Moodle like this:

/webservice/rest/server.php

Step 4: Create Custom External Service

Go to:

Site administration > Server > Web services > External services

Click:

Add new custom service

Fill:

Name: DS Enroll Moodle Integration
Short name: ds_enroll_moodle_integration
Enabled: Yes
Authorised users only: Yes

Save it.


Step 5: Add Required Moodle API Functions

Open your created service:

DS Enroll Moodle Integration

Click:

Functions > Add functions

Add these functions:

core_user_get_users_by_field
core_user_create_users
core_cohort_add_cohort_members

Purpose:

FunctionUse
core_user_get_users_by_fieldFind Moodle user by email
core_user_create_usersCreate Moodle user if email does not exist
core_cohort_add_cohort_membersAdd Moodle user to OneMembership cohort

Step 6: Create Moodle API User

Create a dedicated user for API integration.

Go to:

Site administration > Users > Accounts > Add a new user

Example:

Username: ds-enroll-api
Email: useremail@gmail.xyz
First name: DS Enroll
Last name: API
Authentication method: Manual accounts

Set a strong password.

For quick testing, assign this user a role with enough permission, such as Manager. Later, you can create a restricted custom role.


Step 7: Add User to External Service

Go to:

Site administration > Server > Web services > External services

Open:

DS Enroll Moodle Integration

Click:

Authorised users

Add this user:

ds-enroll-api

Step 8: Create Moodle Token

Go to:

Site administration > Server > Web services > Manage tokens

Click:

Add

Select:

User: ds-enroll-api
Service: DS Enroll Moodle Integration

Optional but recommended:

IP restriction: your ds-enroll-ms server public IP
Valid until: optional expiry date

Click:

Save changes

Copy the token immediately.

Moodle documentation says tokens can be created from Site administration > Server > Web services > Manage tokens, then selecting the user and service. (Moodle Docs) Moodle also notes that web service tokens are read-once, so if you lose it, you need to create a new one. (Moodle Docs)


Step 9: Add Token in ds-enroll-ms .env

In your Laravel project:

MOODLE_BASE_URL=https://www.yourdomain.xyz
MOODLE_TOKEN=paste_token_here
MOODLE_ONEMEMBERSHIP_COHORT_ID=123

Never put this token in:

Blade file
JavaScript
GitHub
API response
Frontend code
Log file

Step 10: Test Token with Curl

Test user lookup by email:

curl -X POST "https://www.yourdomain.xyz/webservice/rest/server.php" \
  -d "wstoken=YOUR_MOODLE_TOKEN" \
  -d "wsfunction=core_user_get_users_by_field" \
  -d "moodlewsrestformat=json" \
  -d "field=email" \
  -d "values[0]=test@example.com"

If token is working and user does not exist, response may be:

[]

If token/service/permission is wrong, you may get:

{
  "exception": "webservice_access_exception",
  "errorcode": "accessexception",
  "message": "Access control exception"
}

Step 11: Test Cohort Add API

After you get Moodle user ID, test:

curl -X POST "https://www.yourdomain.xyz/webservice/rest/server.php" \
  -d "wstoken=YOUR_MOODLE_TOKEN" \
  -d "wsfunction=core_cohort_add_cohort_members" \
  -d "moodlewsrestformat=json" \
  -d "members[0][cohorttype][type]=id" \
  -d "members[0][cohorttype][value]=123" \
  -d "members[0][usertype][type]=id" \
  -d "members[0][usertype][value]=MOODLE_USER_ID"

Here:

123 = OneMembership cohort ID
MOODLE_USER_ID = Moodle numeric user ID

Required Checklist

Before giving token to Claude/code, confirm these are done:

[ ] Web services enabled
[ ] REST protocol enabled
[ ] Custom external service created
[ ] Required functions added
[ ] API user created
[ ] API user added as authorised user
[ ] Token generated
[ ] Token copied safely
[ ] Token added in ds-enroll-ms .env
[ ] Curl test successful

Final .env values for Claude/code:

MOODLE_BASE_URL=https://www.yourdomain.xyz
MOODLE_TOKEN=your_generated_token
MOODLE_ONEMEMBERSHIP_COHORT_ID=123
Post Views: 20
  • How to Create Moodle API Token
  • Moodle
  • Moodle API Token
Subscribe
Login
Notify of
guest
guest
0 Comments
Oldest
Newest Most Voted
Inline Feedbacks
View all comments
  • How to Create Moodle API Token for OneMembership Cohort Integration
  • Common DevSecOps Implementation Mistakes and How to Fix Them
  • Ultimate DevSecOps Learning Roadmap to Move from DevOps to Cloud Security
  • Complete Tutorial: Fixing Keycloak UDP Socket Exhaustion, DNS Failure, GitHub Resolution Error, and Laravel Guzzle ConnectException on a Single Server
  • Comprehensive Guide to DevSecOps in Modern Software Engineering
  • DevSecOps in Modern Software Engineering: A Comprehensive Guide for Professionals
  • Laravel Posts Installation Guide
  • Strategies to Align DevSecOps With Agile and DevOps Practices
  • How to Fix Laravel Migration Error: Field โ€˜idโ€™ Doesnโ€™t Have a Default Value in the Migrations Table
  • A Practical Guide to Proving DevSecOps Business Value for Engineering Leaders
  • Mastering Secure Software Delivery by Solving DevSecOps Adoption Challenges
  • Operationalizing Security for Faster and Safer Software Deployments
  • DevSecOps Server Security Checklist 2026: 50 Must-Check Points Before Going Live
  • The Complete DevOps Salary Overview for IT Professionals
  • The Modern DevOps Certification Guide: Roadmaps for Every Engineering Role
  • Security Champions in DevSecOps: Responsibilities and Best Practices
  • The DevSecOps Handbook for Shift-Left Security
  • Top DevSecOps Principles for Effective Secure Software Delivery
  • Guide to DevSecOps Maturity Levels for Platform and Security Teams
  • Canada PR CRS Calculator: Express Entry Points System Explained
  • Austria PR Points Calculator: Ultimate Guide to Navigating the Red-White-Red Card System
  • The Essential Guide to Enterprise DevSecOps Implementation
  • How to Set Up Claude Code Agent on a Local Windows Laptop and Use claude Command from Anywhere
  • DevOps and DevSecOps Explained: Bridging the Gap Between Speed and Security
  • Comprehensive Manual on DevOps Methodologies and Cloud Native Engineering
  • The Master Guide to Immigration Points: Calculating Your Path to Canada, Australia, and Beyond
  • How to Skip the Activation Email and Password Reset After Google Login in Keycloak Auto-Link Existing Users in First Broker Login
  • Free SSL Certificate Generation Tutorial for Any Website Using Certbot and Apache
  • The Ultimate Guide to Certified FinOps Professional: Skills, Levels, and Career Impact
  • Certified FinOps Manager: Essential Skills for Modern Cloud Operations

Recent Comments

  1. emmy day on SQLSTATE[42S22]: Column not found: 1054 Unknown column ‘provider’ in ‘field list’
  2. digital banking on Complete Tutorial: Setting Up Laravel Telescope Correctly (Windows + XAMPP + Custom Domain)
  3. SAHIL DHINGRA on How to Uninstall Xampp from your machine when it is not visible in Control panel programs & Feature ?
  4. Abhishek on MySQL: List of Comprehensive List of approach to secure MySQL servers.
  5. Kristina on Best practices to followed in .httacess to avoid DDOS attack?

Archives

  • June 2026
  • May 2026
  • April 2026
  • March 2026
  • February 2026
  • January 2026
  • December 2025
  • November 2025
  • October 2025
  • September 2025
  • August 2025
  • July 2025
  • June 2025
  • May 2025
  • April 2025
  • March 2025
  • February 2025
  • January 2025
  • December 2024
  • November 2024
  • October 2024
  • September 2024
  • August 2024
  • July 2024
  • June 2024
  • May 2024
  • April 2024
  • March 2024
  • February 2024
  • January 2024
  • December 2023
  • November 2023
  • October 2023
  • September 2023
  • August 2023
  • July 2023
  • May 2023
  • April 2023
  • March 2023
  • February 2023
  • January 2023
  • December 2022

Categories

  • Ai
  • AI Blogging
  • AiOps
  • ajax
  • Android Studio
  • Antimalware
  • Antivirus
  • Apache
  • Api
  • API Security
  • Api Testing
  • APK
  • Aws
  • Bike Rental Services
  • ChatGPT
  • Code Linting
  • Composer
  • cPanel
  • Cyber Threat Intelligence
  • Cybersecurity
  • Data Loss Prevention
  • Database
  • dataops
  • Deception Technology
  • DeepSeek
  • Devops
  • DevSecOps
  • DevTools
  • Digital Asset Management
  • Digital Certificates
  • Docker
  • Drupal
  • emulator
  • Encryption Tools
  • Endpoint Security Tools
  • Error
  • facebook
  • Firewalls
  • Flutter
  • git
  • GITHUB
  • Google Antigravity
  • Google play console
  • Google reCAPTCHA
  • Gradle
  • Guest posting
  • health and fitness
  • IDE
  • Identity and Access Management
  • Incident Response
  • Instagram
  • Intrusion Detection and Prevention Systems
  • jobs
  • Joomla
  • Keycloak
  • Laravel
  • Law News
  • Lawyer Discussion
  • Legal Advice
  • Linkedin
  • Linkedin Api
  • Linux
  • Livewire
  • Mautic
  • Medical Tourism
  • MlOps
  • MobaXterm
  • Mobile Device Management
  • Moodle
  • Multi-Factor Authentication
  • MySql
  • Network Traffic Analysis tools
  • Paytm
  • Penetration Testing
  • php
  • PHPMyAdmin
  • Pinterest Api
  • postify
  • Quora
  • SAST
  • SecOps
  • Secure File Transfer Protocol
  • Security Analytics Tools
  • Security Auditing Tools
  • Security Information and Event Management
  • Seo
  • Server Management Tools
  • Single Sign-On
  • Site Reliability Engineering
  • soft 404
  • software
  • SSL
  • SuiteCRM
  • SysOps
  • Threat Model
  • Twitter
  • Twitter Api
  • ubuntu
  • Uncategorized
  • Virtual Host
  • Virtual Private Networks
  • VPNs
  • Vulnerability Assessment Tools
  • Web Application Firewalls
  • Windows Processor
  • Wordpress
  • WSL (Windows Subsystem for Linux)
  • X.com
  • Xampp
  • Youtube
©2026 DevSecOps Now!!! | WordPress Theme: EcoCoded
wpDiscuz