APIs & Integration
Overview
APIs & Integration covers the developer-facing interfaces for integrating with Open edX — REST APIs, the Open edX Events framework (OEP-41), Open edX Filters/Hooks (OEP-50), and the event bus infrastructure. These are the primary tools developers use to build on top of the platform without modifying its core.
Together, the REST APIs, events, and filters form a layered integration model: REST APIs for synchronous data exchange, events for async notifications, and filters for intercepting and modifying platform behavior.
Current State (2026)
• REST APIs: `edx-platform` exposes REST APIs for enrollment, courses, grades, users, and more; versioned at `/api/[service]/v[N]/`
• Open edX Events (OEP-41): `openedx-events` defines `AsyncSignal` events; emitted at key platform moments (enrollment, login, course publish); can be consumed locally or via event bus
• Open edX Filters (OEP-50): `openedx-filters` provides pipeline-based hooks; Django plugins register filter steps to intercept and modify platform behavior
• Event bus: `event-bus-kafka` or `event-bus-redis` bridges Open edX Events to external consumers; enables microservice integration
• API versioning: APIs versioned; breaking changes require new API version; `edx-drf-extensions` standardizes auth, pagination
Architecture
• REST API pattern: Django REST Framework (DRF); JWT authentication via `edx-drf-extensions`; consistent pagination and error formats
• Event emission: `openedx-events` `AsyncSignal` emitted via Django signals in platform code; `event-routing-backends` routes to ClickHouse, Kafka, etc.
• Filter pipeline: `openedx-filters` registers Python callables; platform code calls filter at hook points; callables can modify or abort actions
• Event bus: Kafka/Redis bridge converts Django signals to serialized events; external consumers subscribe to topics
History
Origin
• Year introduced: 2013+ (REST APIs gradually added; events/filters are newer)
• Initial implementation: Django views with JSON responses; gradually formalized into DRF-based REST APIs
• Context: External developers (edX partners, community) needed programmatic access; REST APIs emerged from that need
Key Milestones
REST APIs formally added to `edx-platform`
OEP-41 (Events) proposed
`openedx-events` developed
OEP-50 (Filters/Hooks) and `openedx-filters`
Event bus (Kafka/Redis) implementation
Open Questions
- ?Who authored OEP-41 (Events) and what was the design process?
- ?Who authored OEP-50 (Filters/Hooks) and how does it differ from Django signals?
- ?Why was Kafka chosen as the event bus backend? What were the alternatives considered?
- ?How do the REST APIs handle backward compatibility across major releases?
- ?What are the most commonly used APIs by third-party integrators?
- ?How does the event schema versioning work across `openedx-events`?