Hey there, fellow code wrangler! Ready to dive into the world of LearnWorlds API integration? This guide will walk you through the process of building a robust integration using Python. LearnWorlds API is a powerful tool that allows you to interact with the platform programmatically, opening up a world of possibilities for customization and automation. Let's get cracking!
Before we jump in, make sure you've got:
requests
libraryIf you're missing any of these, no worries! A quick pip install or a visit to your LearnWorlds dashboard will sort you out.
First things first, let's get our environment ready:
pip install requests
Now, let's set up our API authentication:
import requests API_KEY = 'your_api_key_here' SCHOOL_URL = 'https://your_school.learnworlds.com' headers = { 'Authorization': f'Bearer {API_KEY}', 'Content-Type': 'application/json' }
Let's start with a simple GET request to test the waters:
response = requests.get(f'{SCHOOL_URL}/api/v2/users', headers=headers) if response.status_code == 200: users = response.json() print(f"Found {len(users)} users") else: print(f"Error: {response.status_code}")
Now that we've got the basics down, let's explore some core functionalities:
def create_user(email, username, password): data = { 'email': email, 'username': username, 'password': password } response = requests.post(f'{SCHOOL_URL}/api/v2/users', headers=headers, json=data) return response.json() new_user = create_user('[email protected]', 'newuser', 'securepassword123') print(f"Created user: {new_user['id']}")
def get_courses(): response = requests.get(f'{SCHOOL_URL}/api/v2/courses', headers=headers) return response.json() courses = get_courses() for course in courses: print(f"Course: {course['title']}")
def enroll_user(user_id, course_id): data = {'user_id': user_id, 'course_id': course_id} response = requests.post(f'{SCHOOL_URL}/api/v2/enrollments', headers=headers, json=data) return response.json() enrollment = enroll_user(new_user['id'], courses[0]['id']) print(f"Enrolled user in course: {enrollment['id']}")
LearnWorlds supports webhooks for real-time event notifications. Here's how you can set one up:
def create_webhook(event_type, target_url): data = { 'event_type': event_type, 'target_url': target_url } response = requests.post(f'{SCHOOL_URL}/api/v2/webhooks', headers=headers, json=data) return response.json() webhook = create_webhook('user.created', 'https://your-webhook-endpoint.com') print(f"Created webhook: {webhook['id']}")
Always be prepared for API hiccups:
def api_request(method, endpoint, data=None): url = f'{SCHOOL_URL}/api/v2/{endpoint}' try: response = requests.request(method, url, headers=headers, json=data) response.raise_for_status() return response.json() except requests.exceptions.HTTPError as err: if err.response.status_code == 429: print("Rate limit exceeded. Waiting before retrying...") time.sleep(60) return api_request(method, endpoint, data) else: print(f"HTTP error occurred: {err}") except Exception as err: print(f"An error occurred: {err}")
Always test your API calls:
import unittest class TestLearnWorldsAPI(unittest.TestCase): def test_get_users(self): users = get_users() self.assertIsInstance(users, list) self.assertTrue(len(users) > 0) if __name__ == '__main__': unittest.main()
Let's put it all together with a simple application:
def enrollment_tracker(): courses = get_courses() for course in courses: enrollments = get_course_enrollments(course['id']) print(f"Course: {course['title']}") print(f"Total Enrollments: {len(enrollments)}") print("---") enrollment_tracker()
And there you have it! You're now equipped to build powerful integrations with LearnWorlds API using Python. Remember, this is just scratching the surface - there's a whole world of possibilities waiting for you to explore.
Keep experimenting, stay curious, and happy coding!
For more in-depth information, check out the LearnWorlds API documentation.