{"id":21650,"library":"openedx-events","title":"Open edX Events","description":"Open edX Events provides a set of event definitions and utilities for the Hooks Extensions Framework (HEF) in Open edX. Version 11.2.0 is the latest release, with frequent updates. It defines structured events for signaling actions in the Open edX platform.","status":"active","version":"11.2.0","language":"python","source_language":"en","source_url":"https://github.com/openedx/openedx-events","tags":["open-edx","events","hooks-extension-framework"],"install":[{"cmd":"pip install openedx-events","lang":"bash","label":"Install via pip"}],"dependencies":[],"imports":[{"note":"OpenEdxPublicSignal is in the tooling submodule, not top-level.","wrong":"from openedx_events import OpenEdxPublicSignal","symbol":"OpenEdxPublicSignal","correct":"from openedx_events.tooling import OpenEdxPublicSignal"},{"note":"OrgEvents is part of the event_bus submodule.","wrong":"from openedx_events import OrgEvents","symbol":"OrgEvents","correct":"from openedx_events.event_bus import EventBus, OrgEvents"}],"quickstart":{"code":"from openedx_events.tooling import OpenEdxPublicSignal\nfrom openedx_events.learning.data import UserData, CourseData\n\n# Define a custom signal\ncustom_signal = OpenEdxPublicSignal(\n    event_type=\"org.myorg.my.event\",\n    data={\n        \"user\": UserData,\n        \"course\": CourseData,\n    }\n)\n\n# Send the signal\ncustom_signal.send_event(\n    user=UserData(id=1, email=\"user@example.com\"),\n    course=CourseData(course_key=\"course-v1:Org+Course+2025\")\n)","lang":"python","description":"Create and send a custom Open edX event using OpenEdxPublicSignal."},"warnings":[{"fix":"Update imports: `from openedx_events.event_bus import OrgEvents`.","message":"In version 11.0.0, the event_bus module was refactored. `OrgEvents` is now imported from `openedx_events.event_bus` instead of the old location.","severity":"breaking","affected_versions":">=11.0.0"},{"fix":"Replace `EVENT_ORDER_CREATED` with `ORDER_CREATED` in event data.","message":"The `EVENT_ORDER_CREATED` event type was deprecated in 10.0.0; use `ORDER_CREATED` instead.","severity":"deprecated","affected_versions":">=10.0.0"},{"fix":"Use a fully qualified event type with at least three segments separated by dots.","message":"When defining a custom signal, the event_type must follow the convention `org.your_org.your_event` or it may be rejected by the event bus.","severity":"gotcha","affected_versions":"all"}],"env_vars":null,"last_verified":"2026-04-27T00:00:00.000Z","next_check":"2026-07-26T00:00:00.000Z","problems":[{"fix":"Use: `from openedx_events.tooling import OpenEdxPublicSignal`","cause":"The symbol is not top-level; it's in the tooling submodule.","error":"ImportError: cannot import name 'OpenEdxPublicSignal' from 'openedx_events'"},{"fix":"Use: `from openedx_events.event_bus import OrgEvents`","cause":"OrgEvents is located in the event_bus submodule.","error":"AttributeError: module 'openedx_events' has no attribute 'OrgEvents'"}],"ecosystem":"pypi","meta_description":null,"install_score":null,"install_tag":null,"quickstart_score":null,"quickstart_tag":null}