Open edX Events Data Attributes

Contents

Open edX Events Data Attributes#

Here are the data classes and attributes available for use when creating new Open edX Events. Review the classes and attributes to understand the data available in your event before creating new data classes.

Note

If you are creating a new data class in a subdomain that is not listed here, please add the new data class to the appropriate new subdomain section.

Learning Subdomain#

Data attributes for events within the architecture subdomain learning.

These attributes follow the form of attr objects specified in OEP-49 data pattern.

class openedx_events.learning.data.BadgeData(uuid: str, user: UserData, template: BadgeTemplateData)[source]#

Data related to a badge object.

uuid#

the UUID of the badge.

Type:

str

user#

user associated with the badge.

Type:

UserData

template#

badge template data.

Type:

BadgeTemplateData

class openedx_events.learning.data.BadgeTemplateData(uuid: str, origin: str, name: str = None, description: str = None, image_url: str = None)[source]#

Data related to a badge template object.

uuid#

UUID of the badge template.

Type:

str

origin#

type of badge template.

Type:

str

name#

badge name.

Type:

str

description#

badge description.

Type:

str

image_url#

badge image url.

Type:

str

class openedx_events.learning.data.CcxCourseData(ccx_course_key: CCXLocator, master_course_key: CourseKey, display_name: str = NOTHING, coach_email: str = NOTHING, start: str = None, end: str = None, max_students_allowed: int = None)[source]#

Represents data for a CCX (Custom Courses for edX) course.

ccx_course_key#

The unique identifier for the CCX course.

Type:

CCXLocator

master_course_key#

The unique identifier for the original course from which the CCX is derived.

Type:

CourseKey

display_name#

The name of the CCX course as it should appear to users.

Type:

str

coach_email#

The email address of the coach (instructor) for the CCX course.

Type:

str

start#

The start date of the CCX course. Defaults to None, indicating no specific start date.

Type:

str, optional

end#

The end date of the CCX course. Defaults to None, indicating no specific end date.

Type:

str, optional

max_students_allowed#

The maximum number of students that can enroll in the CCX course. Defaults to None, indicating no limit.

Type:

int, optional

class openedx_events.learning.data.CcxCoursePassingStatusData(is_passing: bool, user: UserData, course: CcxCourseData)[source]#

Extends CoursePassingStatusData for CCX courses, specifying CCX course data.

This class is used for events where a user’s grade crosses a threshold specifically in a CCX course, providing a custom course attribute suited for CCX course instances.

course#

An instance of CcxCourseData containing details about the CCX course in which the grade threshold was crossed.

Type:

CcxCourseData

All other attributes are inherited from CoursePassingStatusData.
class openedx_events.learning.data.CertificateData(user: UserData, course: CourseData, mode: str, grade: str, download_url: str, name: str, current_status: str, previous_status: str = NOTHING)[source]#

Data related to a certificate object.

This data is based on the GeneratedCertificate data model defined in the certificates app.

user#

user associated with the Certificate.

Type:

UserData

course#

course where the user obtained the certificate.

Type:

CourseData

mode#

course mode associated with the course enrollment.

Type:

str

grade#

user’s grade in this course run.

Type:

str

download_url#

URL where the PDF version of the certificate.

Type:

str

name#

user’s name.

Type:

str

current_status#

current certificate status.

Type:

str

previous_status#

if available, pre-event certificate status.

Type:

str

class openedx_events.learning.data.CohortData(user: UserData, course: CourseData, name: str)[source]#

Attributes defined for cohort membership object.

This data is based on the fields available in the CohortMembership data model defined in the cohorts app.

user#

user assigned to the group.

Type:

UserData

course#

course associated with the course group.

Type:

CourseData

name#

name of the cohort group.

Type:

str

class openedx_events.learning.data.CourseAccessRoleData(user: UserData, org_key: str, course_key: CourseKey, role: str)[source]#

Data related to a user’s access role in a course.

user#

user associated with the CourseAccessRole.

Type:

UserData

course_key#

identifier of the related course object.

Type:

CourseKey

org#

identifier of the organization.

Type:

str

role#

the role of the user in the course.

Type:

str

class openedx_events.learning.data.CourseData(course_key: CourseKey, display_name: str = NOTHING, start: datetime = None, end: datetime = None)[source]#

Data related to a course object.

This data is based on the fields available in the CourseOverview data model defined in the course_overviews app.

course_key#

identifier of the course.

Type:

str

display_name#

display name associated with the course.

Type:

str

start#

start date for the course. Defaults to None.

Type:

datetime

end#

end date for the course. Defaults to None.

Type:

datetime

class openedx_events.learning.data.CourseDiscussionConfigurationData(course_key: CourseKey, provider_type: str, enable_in_context: bool = True, enable_graded_units: bool = False, unit_level_visibility: bool = False, plugin_configuration: dict = {}, contexts: List[DiscussionTopicContext] = NOTHING)[source]#

Data related to a course discussion configuration object.

Course configuration information for discussions. Contains all the metadata needed to configure discussions for a course.

course_key#

identifier of the course to which the discussion belongs.

Type:

str

provider_type#

provider type from discussion settings.

Type:

str

enable_in_context#

indicates whether in-context discussion is enabled for the course

Type:

bool

enable_graded_units#

If enabled, discussion topics will be created for graded units as well.

Type:

bool

unit_level_visibility#

visibility for unit level.

Type:

bool

plugin_configuration#

The plugin configuration data for this context/provider.

Type:

dict

contexts#

contains all the contexts for which discussion is to be enabled.

Type:

List[DiscussionTopicContext]

class openedx_events.learning.data.CourseEnrollmentData(user: UserData, course: CourseData, mode: str, is_active: bool, creation_date: datetime, created_by: UserData = None)[source]#

Data related to a course enrollment object.

This data is based on the fields available in the CourseEnrollment data model defined in the student app.

user#

user associated with the Course Enrollment.

Type:

UserData

course#

course where the user is enrolled in.

Type:

CourseData

mode#

course mode associated with the course enrollment.

Type:

str

is_active#

whether the enrollment is active.

Type:

bool

creation_date#

creation date of the enrollment.

Type:

datetime

created_by#

if available, who created the enrollment.

Type:

UserData

class openedx_events.learning.data.CourseNotificationData(course_key: CourseKey, app_name: str, notification_type: str, content_url: str, content_context: dict = NOTHING, audience_filters: dict = NOTHING)[source]#

Data related to a course notification object.

course_key#

identifier of the Course object.

Type:

str

app_name#

name of the app requesting the course notification.

Type:

str

notification_type#

type of the notification.

Type:

str

content_url#

url of the content the notification will redirect to.

Type:

str

content_context#

additional information related to the content of the notification. Notification content templates are defined in edx-platform here: openedx/edx-platform

Type:

dict

audience_filters#

additional information related to the audience of the notification. We can have different filters on course level, such as roles, enrollments, cohorts etc.

Type:

dict

Example of content_context for a discussion notification:

>>> {
    ...,
    "content_context": {
        "post_title": "Post Title",
        "replier_name": "test_user",
}

Example of audience_filters for a discussion notification (new_discussion_post):

>>> {
    ...,
    "audience_filters": {
        "enrollment": ["verified", "audit"],
        "role": ["discussion admin", "discussion moderator"],
}
class openedx_events.learning.data.CoursePassingStatusData(is_passing: bool, course: CourseData, user: UserData)[source]#

Represents the event data when a user’s grade is updated, indicates if current grade is enough for course passing.

is_passing#

Indicates whether the user’s grade is enough to pass the course.

Type:

bool

user#

An instance of UserData containing information about the user whose grade was updated.

Type:

UserData

course#

An instance of CourseData containing details about the course in which the grade was updated.

Type:

CourseData

class openedx_events.learning.data.DiscussionThreadData(anonymous: bool, anonymous_to_peers: bool, body: str, category_id: int, category_name: str, commentable_id: str, group_id: int, id: int, team_id: int, thread_type: str, title: str, title_truncated: bool, truncated: bool, url: str, user: UserData, course_id: CourseKey, discussion: dict = NOTHING, user_course_roles: List[str] = NOTHING, user_forums_roles: List[str] = NOTHING, options: dict = NOTHING)[source]#

Data related to a discussion thread object, used to represent Forum events such as comments, responses, and threads.

For more details on the data attributes, please see the following documentation: https://docs.openedx.org/en/latest/developers/references/internal_data_formats/tracking_logs/student_event_types.html#edx-forum-thread-created

anonymous#

indicates whether the user is anonymous.

Type:

bool

anonymous_to_peers#

indicates whether the user is anonymous to peers.

Type:

bool

body#

body of the discussion thread.

Type:

str

category_id#

identifier of the category.

Type:

int

category_name#

name of the category.

Type:

str

commentable_id#

identifier of the commentable.

Type:

str

group_id#

identifier of the group.

Type:

int

id#

identifier of the discussion thread.

Type:

int

team_id#

identifier of the team.

Type:

int

thread_type#

type of the thread.

Type:

str

title#

title of the thread.

Type:

str

title_truncated#

indicates whether the title is truncated.

Type:

bool

truncated#

indicates whether the thread is truncated.

Type:

bool

url#

url of the thread.

Type:

str

user#

information of the user that authored the thread/comment/response.

Type:

UserData

course_id#

identifier of the course.

Type:

CourseKey

discussion#

discussion data. (optional, specific to comments and responses)

Type:

dict

user_course_roles#

user course roles.

Type:

List[str]

user_forums_roles#

user forums roles.

Type:

List[str]

options#

options for the thread.

Type:

dict

class openedx_events.learning.data.DiscussionTopicContext(title: str, usage_key: UsageKey = None, group_id: int | None = None, external_id: str = None, ordering: int = None, context: dict = NOTHING)[source]#

Data related to a discussion topic context.

Context for linking the external id for a discussion topic to its associated usage key.

title#

title of the discussion. This field is cached to improve the performance, since otherwise we’d need to look it up in the course structure each time.

Type:

str

usage_key#

unit location.

Type:

str

group_id#

can be used for providers that don’t internally support cohorting but we can emulate that with different contexts for different groups.

Type:

Optional[int]

external_id#

store the commentable id that is used by cs_comments_service.

Type:

str

ordering#

represent the position of the discussion topic.

Type:

int

context#

additional structured information about the context in which this topic is used, such as the section, subsection etc.

Type:

dict

class openedx_events.learning.data.ExamAttemptData(student_user: UserData, course_key: CourseKey, usage_key: UsageKey, exam_type: str, requesting_user: UserData = None)[source]#

Data for the Open edX Exam downstream effects.

Note that events that use this data type:

A. Pretain to “Special Exams”, e.g. Timed or Proctored exams, and not non-timed course subsections that are labelled as an exam. B. Are only ever emitted from the newer exams backend, edx-exams, and never from the legacy exams backend, edx-proctoring.

The event signals that use this data have the prefix EXAM_, which is equivalent to “special exam”. We are using this as a shortened form of the prefix SPECIAL_EXAM to avoid confusion, as these are likely the only type of exams that will be of concern in the context of events/the event bus.

For more information, please see the ADR relating to this event data: openedx/openedx-events

student_user#

user object for the student to whom the exam attempt belongs

Type:

UserData

course_key#

identifier of the course to which the exam attempt belongs

Type:

CourseKey

usage_key#

identifier of the content that will get a exam attempt

Type:

UsageKey

exam_type#

type of exam that was taken (e.g. timed, proctored, etc.)

Type:

str

requesting_user#

user triggering the event (sometimes a non-learner, e.g. an instructor)

Type:

UserData

class openedx_events.learning.data.ExternalGraderScoreData(points_possible: int, points_earned: int, course_id: str, score_msg: str, submission_id: int, user_id: str, module_id: str, queue_key: str, queue_name: str)[source]#

Class that encapsulates score data provided by an external grader.

This class uses attr.s with frozen=True to create an immutable structure containing information about the score assigned to a student submission.

points_possible#

Maximum possible score for this assignment

Type:

int

points_earned#

Score earned by the student

Type:

int

course_id#

Unique identifier for the course

Type:

str

score_msg#

Descriptive message about the score (feedback)

Type:

str

submission_id#

Unique identifier for the graded submission

Type:

int

user_id#

ID of the user who submitted the assignment

Type:

str

module_id#

ID of the module/problem being graded

Type:

str

queue_key#

Unique key for the submission in the queue

Type:

str

queue_name#

Name of the queue that processed the submission

Type:

str

class openedx_events.learning.data.ORASubmissionAnswer(parts: List[dict] = NOTHING, file_keys: List[str] = NOTHING, file_descriptions: List[str] = NOTHING, file_names: List[str] = NOTHING, file_sizes: List[int] = NOTHING, file_urls: List[str] = NOTHING)[source]#

Data related to the answer submitted by the user in an ORA submission.

parts#

List with the response text in the ORA submission.

Type:

List[dict]

The following attributes are used to represent the files submitted in the ORA submission
file_keys#

List of file keys in the ORA submission.

Type:

List[str]

file_descriptions#

List of file descriptions in the ORA submission.

Type:

List[str]

file_names#

List of file names in the ORA submission.

Type:

List[str]

file_sizes#

List of file sizes in the ORA submission.

Type:

List[int]

file_urls#

List of file URLs in the ORA submission.

Type:

List[str]

class openedx_events.learning.data.ORASubmissionData(uuid: str, anonymous_user_id: str, location: str, attempt_number: int, created_at: datetime, submitted_at: datetime, answer: ORASubmissionAnswer)[source]#

Data associated to the ORA assessment submitted by a user.

uuid#

The UUID of the ORA submission.

Type:

str

anonymous_user_id#

Optional. Anonymous user ID of the user who submitted the ORA submission.

Type:

str

location#

Optional. Location of the ORA submission.

Type:

str

attempt_number#

Attempt number of the ORA submission.

Type:

int

created_at#

Date and time when the ORA submission was created.

Type:

datetime

submitted_at#

Date and time when the ORA submission was submitted.

Type:

datetime

answer#

Answer submitted by the user in the ORA submission.

Type:

ORASubmissionAnswer

class openedx_events.learning.data.PersistentCourseGradeData(user_id: int, course: CourseData, course_edited_timestamp: datetime, course_version: str, grading_policy_hash: str, percent_grade: float, letter_grade: str, passed_timestamp: datetime)[source]#

Data related to a persistent course grade object.

This data is based on the fields available in the PersistentCourseGrade data model defined in the grades app.

user_id#

identifier of the grade to which the grade belongs.

Type:

int

course#

Identifier of the course to which the grade belongs.

Type:

CourseData

course_edited_timestamp#

date the course was edited.

Type:

datetime

course_version#

version of the course.

Type:

str

grading_policy_hash#

grading policy hash of the course.

Type:

str

percent_grade#

percentage of the grade.

Type:

float

letter_grade#

grade in letter

Type:

str

passed_timestamp#

date the course was passed.

Type:

datetime

class openedx_events.learning.data.ProgramCertificateData(user: UserData, program: ProgramData, uuid: str, status: str, url: str, certificate_available_date: datetime = None)[source]#

Data related to a Program Certificate object.

user#

User associated with the Program Certificate.

Type:

UserData

program#

Program data associated with the Program Certificate.

Type:

ProgramData

uuid#

UUID of the UserCredential record in Credentials.

Type:

str

certificate_available_date#

Optional. A DateTime describing when a learner is allowed to view the credential.

Type:

datetime

status#

The status of the credential (e.g. awarded or revoked).

Type:

str

url#

A URL to the learner’s credential.

Type:

str

class openedx_events.learning.data.ProgramData(uuid: str, title: str, program_type: str)[source]#

Data related to a program object.

uuid#

The UUID of the program (from Course-Discovery).

Type:

str

title#

The title of the program.

Type:

str

program_type#

The type slug of the program (e.g. professional, microbachelors, micromasters, etc.).

Type:

str

class openedx_events.learning.data.UserData(id: int, is_active: bool, pii: UserPersonalData)[source]#

Data related to a user object, including personal information and non-personal information.

This class extends UserNonPersonalData to include PII data completing the user object.

id#

unique identifier for the Django User object.

Type:

int

is_active#

indicates whether the user is active.

Type:

bool

pii#

user’s Personal Identifiable Information.

Type:

UserPersonalData

class openedx_events.learning.data.UserNonPersonalData(id: int, is_active: bool)[source]#

Data related to a user object that does not contain personal information (PII).

id#

unique identifier for the Django User object.

Type:

int

is_active#

indicates whether the user is active.

Type:

bool

class openedx_events.learning.data.UserNotificationData(user_ids: List[int], notification_type: str, content_url: str, app_name: str, course_key: CourseKey, context: dict = NOTHING)[source]#

Data related to a user notification object.

user_ids#

identifier of the users to which the notification belongs.

Type:

List(int)

notification_type#

type of the notification.

Type:

str

content_url#

url of the content.

Type:

str

app_name#

name of the app.

Type:

str

course_key#

identifier of the Course object.

Type:

str

context#

additional structured information about the context of the notification.

Type:

dict

class openedx_events.learning.data.UserPersonalData(username: str, email: str, name: str = NOTHING)[source]#

Data related to a user object that contains personal information (PII).

username#

username associated with the user.

Type:

str

email#

email associated with the user.

Type:

str

name#

name associated with the user’s profile.

Type:

str

class openedx_events.learning.data.VerificationAttemptData(attempt_id: int, user: UserData, status: str, name: str = None, expiration_date: datetime = None)[source]#

Data related to a IDV attempt object.

attempt_id#

the id of the verification attempt

Type:

int

user#

the user (usually a learner) performing the verification attempt.

Type:

User

status#

the status of the verification attempt.

Type:

string

name#

the name being ID verified. Defaults to None.

Type:

string

expiration_datetime#

When the verification attempt expires. Defaults to None.

Type:

datetime, optional

class openedx_events.learning.data.XBlockSkillVerificationData(usage_key: UsageKey, verified_skills: List[int] = NOTHING, ignored_skills: List[int] = NOTHING)[source]#

Data needed to update verification count of tags/skills for an XBlock.

User feedback on whether tags/skills related to an XBlock are valid.

usage_key#

identifier of the XBlock object.

Type:

UsageKey

verified_skills#

list of verified skill ids.

Type:

List[int]

ignored_skills#

list of ignored skill ids.

Type:

List[int]

Content Authoring Subdomain#

Data attributes for events within the architecture subdomain content_authoring.

These attributes follow the form of attr objects specified in OEP-49 data pattern.

The attributes for the events come from the CourseDetailView in the LMS, with some unused fields removed (see deprecation proposal at openedx/public-engineering#160)

class openedx_events.content_authoring.data.CertificateConfigData(certificate_type: str, course_key: CourseKey, title: str, signatories: List[CertificateSignatoryData] = NOTHING, is_active: bool = False)[source]#

Data related to a certificate configuration. Subset of CertificateConfig object from the LMS.

certificate_type#

certificate type. Possible types are certificate relevant course modes: - credit, - verified, - professional, - no-id-professional, - executive-education, - paid-executive-education, - paid-bootcamp, - masters.

Type:

str

course_key#

identifier of the Course object.

Type:

CourseKey

title#

certificate title.

Type:

str

signatories#

contains a collection of signatures that belong to the certificate configuration.

Type:

List[CertificateSignatoryData]

is_active#

indicates whether the certifivate configuration is active.

Type:

bool

class openedx_events.content_authoring.data.CertificateSignatoryData(image: BinaryIO, name: str, organization: str, title: str)[source]#

Data related to a certificate signatory. Subset of CertificateSignatory object from the LMS.

image#

certificate signature image. Take care that the image field is BinaryIO.

Type:

BinaryIO

name#

name of signatory.

Type:

str

organization#

organization that signatory belongs to.

Type:

str

title#

signatory title.

Type:

str

class openedx_events.content_authoring.data.ContentLibraryData(library_key: LibraryLocatorV2, update_blocks: bool = False)[source]#

Data related to a content library that has changed.

library_key#

a key that represents a v2 content library.

Type:

LibraryLocatorV2

update_blocks#

DEPRECATED flag to indicate whether the content library blocks indexes should be updated. Now we send individual events for each updated item instead.

Type:

bool

class openedx_events.content_authoring.data.ContentObjectChangedData(object_id: str, changes: List[str] = NOTHING)[source]#

Data related to a content object that has changed.

object_id#

identifier of the Content object. This represents the id of the course or library block as a string. For example: >>> block-v1:SampleTaxonomyOrg2+STC1+2023_1+type@vertical+block@f8de78f0897049ce997777a3a31b6ea0

Type:

str

changes#

list of changes made to this ContentObject, e.g. “tags”, “collections”. If list is empty, assume everything has changed.

class openedx_events.content_authoring.data.ContentObjectData(object_id: str)[source]#

Data related to a content object.

object_id#

identifier of the Content object. This represents the id of the course or library block as a string. For example: >>> block-v1:SampleTaxonomyOrg2+STC1+2023_1+type@vertical+block@f8de78f0897049ce997777a3a31b6ea0

Type:

str

class openedx_events.content_authoring.data.CourseCatalogData(course_key: CourseKey, name: str, schedule_data: CourseScheduleData, hidden: bool = False, invitation_only: bool = False)[source]#

Data related to a course catalog entry.

course_key#

identifier of the Course object.

Type:

CourseKey

name#

course name.

Type:

str

schedule_data#

scheduling information for the course.

Type:

CourseScheduleData

hidden#

whether the course is hidden from search (optional).

Type:

bool

invitation_only#

whether the course requires an invitation to enroll.

Type:

bool

class openedx_events.content_authoring.data.CourseData(course_key: CourseKey)[source]#

Data related to a course object.

course_key#

identifier of the Course object.

Type:

CourseKey

class openedx_events.content_authoring.data.CourseScheduleData(start: datetime, pacing: str, end: datetime = None, enrollment_start: datetime = None, enrollment_end: datetime = None)[source]#

Data related to a course schedule.

start#

course start date.

Type:

datetime

pacing#

‘instructor’ or ‘self’.

Type:

str

end#

course end date (optional).

Type:

datetime

enrollment_start#

start of course enrollment (optional).

Type:

datetime

enrollment_end#

end of course enrollment (optional).

Type:

datetime

class openedx_events.content_authoring.data.DuplicatedXBlockData(usage_key: UsageKey, block_type: str, source_usage_key: UsageKey, *, version: UsageKey = None)[source]#

Data related to an XBlock object that has been duplicated.

This class extends XBlockData to include source_usage_key.

source_usage_key#

identifier of the source XBlock object.

Type:

UsageKey

class openedx_events.content_authoring.data.LibraryBlockData(library_key: LibraryLocatorV2, usage_key: LibraryUsageLocatorV2)[source]#

Data related to a library block that has changed.

library_key#

a key that represents a v2 content library.

Type:

LibraryLocatorV2

usage_key#

a key that represents a XBlock in a Blockstore-based content library.

Type:

LibraryUsageLocatorV2

class openedx_events.content_authoring.data.LibraryCollectionData(collection_key: LibraryCollectionLocator, background: bool = False)[source]#

Data related to a library collection that has changed.

collection_key#

identifies the collection within the library’s learning package

Type:

LibraryCollectionLocator

background#

DEPRECATED field. Indicated the sender doesn’t want to wait for handler to finish execution. Now instead we recommend that simple handlers are synchronous and the _sender_ of the event should send the event(s) from an async celery task if it is expected to result in a lot of handlers being called.

Type:

bool

class openedx_events.content_authoring.data.LibraryContainerData(container_key: LibraryContainerLocator, background: bool = False)[source]#

Data related to a library container that has changed.

container_key#

identifies the container (e.g. unit, section)

Type:

LibraryContainerLocator

background#

DEPRECATED field. Indicated the sender doesn’t want to wait for handler to finish execution. Now instead we recommend that simple handlers are synchronous and the _sender_ of the event should send the event(s) from an async celery task if it is expected to result in a lot of handlers being called.

Type:

bool

class openedx_events.content_authoring.data.XBlockData(usage_key: UsageKey, block_type: str, *, version: UsageKey = None)[source]#

Data related to an XBlock object.

usage_key#

identifier of the XBlock object.

Type:

UsageKey

block_type#

type of block.

Type:

str

version#

identifier of the XBlock object with branch and version data (optional). This could be used to get the exact version of the XBlock object.

Type:

UsageKey

Analytics Subdomain#

Data attributes for events within the architecture subdomain analytics.

These attributes follow the form of attr objects specified in OEP-49 data pattern.

class openedx_events.analytics.data.TrackingLogData(name: str, timestamp: datetime, data: str, context: str)[source]#

Data related to tracking events.

name#

event name

Type:

str

timestamp#

timestamp of the event

Type:

datetime

data#

json string representation of a dictionary with extra data (optional), e.g., >>> {“course_id”: “course-v1:edX+DemoX+Demo_Course”}

Type:

str

context#

json string representation of a dictionary of context data defined in https://docs.openedx.org/en/latest/developers/references/internal_data_formats/index.html

Type:

dict

Enterprise Subdomain#

Data attributes for events within the architecture subdomain enterprise.

These attributes follow the form of attr objects specified in OEP-49 data pattern.

class openedx_events.enterprise.data.BaseEnterpriseFulfillment(uuid: UUID, created: datetime, modified: datetime, fulfillment_type: str, is_revoked: bool, enterprise_course_entitlement_uuid: UUID = None, enterprise_course_enrollment: EnterpriseCourseEnrollment = None)[source]#

Defines the common attributes of enterprise fulfillment classes, i.e. enterprise.EnterpriseFulfillmentSource.

Django model definition: openedx/edx-enterprise

uuid#

Primary identifier of the record.

Type:

str

created#

When the record was created.

Type:

datetime

modified#

When the record was last modified.

Type:

datetime

fulfillment_type#

Subsidy fulfillment type, typical values: “license”, “learner_credit”, “coupon_code”.

Type:

str

enterprise_course_entitlement_uuid#

The course entitlement the associated subsidy is for.

Type:

UUID

enterprise_course_enrollment#

The course enrollment the associated subsidy is for.

Type:

EnterpriseCourseEnrollment

is_revoked#

Whether the enterprise subsidy is revoked, e.g., when a user’s license is revoked.

Type:

bool

class openedx_events.enterprise.data.BaseLedgerTransaction(uuid: UUID, created: datetime, modified: datetime, idempotency_key: str, quantity: int, state: str)[source]#

Data related to a Ledger Transaction object.

uuid#

Primary identifier of the record.

Type:

UUID

created#

When the record was created.

Type:

datetime

modified#

When the record was last modified.

Type:

datetime

idempotency_key#

Client-generated unique value to achieve idempotency of operations.

Type:

str

quantity#

How many units of value this transaction represents (e.g. USD cents).

Type:

int

state#

Current lifecyle state of the record, one of (created, pending, committed, failed).

Type:

str

class openedx_events.enterprise.data.EnterpriseCourseEnrollment(id: int, created: datetime, modified: datetime, enterprise_customer_user: EnterpriseCustomerUser, course_id: CourseKey, saved_for_later: bool, source_slug: str = None, unenrolled: bool = None, unenrolled_at: datetime = None)[source]#

Data related to an Enterprise Course Enrollment object.

Django model definition: openedx/edx-enterprise

id#

Primary identifier of the record.

Type:

int

created#

When the record was created.

Type:

datetime

modified#

When the record was last modified.

Type:

datetime

enterprise_customer_user#

The enterprise learner to which this enrollment is attached.

Type:

EnterpriseCustomerUser

course_id#

The ID of the course in which the learner was enrolled.

Type:

CourseKey

saved_for_later#

Specifies whether a user marked this course as saved for later in the learner portal.

Type:

bool

source_slug#

DB slug for the source of the enrollment, e.g. “enrollment_task”, “management_command”, etc.

Type:

str

unenrolled#

Specifies whether the related LMS course enrollment object was unenrolled.

Type:

bool

unenrolled_at#

Specifies when the related LMS course enrollment object was unenrolled.

Type:

datetime

class openedx_events.enterprise.data.EnterpriseCustomerUser(id: int, created: datetime, modified: datetime, enterprise_customer_uuid: UUID, user_id: int, active: bool, linked: bool, is_relinkable: bool, should_inactivate_other_customers: bool, invite_key: UUID = None)[source]#

Data related to an Enterprise Customer User object.

Django model definition: openedx/edx-enterprise

id#

Primary identifier of the record.

Type:

int

created#

When the record was created.

Type:

datetime

modified#

When the record was last modified.

Type:

datetime

enterprise_customer_uuid#

The enterprise customer to which the user is linked.

Type:

UUID

user_id#

The LMS user ID corresponding to this enterprise user.

Type:

int

active#

The active enterprise user for the given LMS user.

Type:

bool

linked#

This enterprise user has been linked to an enterprise customer.

Type:

bool

is_relinkable#

When set to False, the user cannot be relinked to the enterprise.

Type:

bool

invite_key#

Invite key used to link a learner to an enterprise.

Type:

UUID

should_inactivate_other_customers#

When enabled along with active, all other linked enterprise customers for this user will be marked as inactive upon save.

Type:

bool

class openedx_events.enterprise.data.LearnerCreditEnterpriseCourseEnrollment(uuid: UUID, created: datetime, modified: datetime, fulfillment_type: str, is_revoked: bool, enterprise_course_entitlement_uuid: UUID = None, enterprise_course_enrollment: EnterpriseCourseEnrollment = None, transaction_id: UUID = None)[source]#

Attributes of an enterprise.LearnerCreditEnterpriseCourseEnrollment record.

Django model definition: openedx/edx-enterprise

All of the same attributes from BaseEnterpriseFulfillment plus the following:

transaction_id#

Ledgered transaction UUID to associate with this learner credit fulfillment.

Type:

UUID

class openedx_events.enterprise.data.LedgerTransaction(uuid: UUID, created: datetime, modified: datetime, idempotency_key: str, quantity: int, state: str, ledger_uuid: UUID, subsidy_access_policy_uuid: UUID, lms_user_id: int, content_key: CourseKey, parent_content_key: str = None, fulfillment_identifier: str = None, reversal: LedgerTransactionReversal = None)[source]#

Attributes of an openedx_ledger.Transaction record.

A Transaction is a model that represents value moving in or out of a Ledger. It’s primarily used within the domain of edX Enterprise for recording the redemption of subsidized enrollments. openedx/openedx-ledger

uuid#

Primary identifier of the Transaction.

Type:

UUID

created#

When the record was created.

Type:

datetime

modified#

When the record was last modified.

Type:

datetime

idempotency_key#

Client-generated unique value to achieve idempotency of operations.

Type:

str

quantity#

How many units of value this transaction represents (e.g. USD cents).

Type:

int

state#

Current lifecyle state of the record, one of (created, pending, committed, failed).

Type:

str

ledger_uuid#

The primary identifier of this Transaction’s ledger object.

Type:

UUID

subsidy_access_policy_uuid#

The primary identifier of the subsidy access policy for this transaction.

Type:

UUID

lms_user_id#

The LMS user id of the user associated with this transaction.

Type:

int

content_key#

The course (run) key associated with this transaction.

Type:

CourseKey

parent_content_key#

The parent (just course, not run) key for the course key.

Type:

str

fulfillment_identifier#

The identifier of the subsidized enrollment record for a learner, generated durning enrollment.

Type:

str

reversal#

Any reversal associated with this transaction.

Type:

LedgerTransactionReversal

class openedx_events.enterprise.data.LedgerTransactionReversal(uuid: UUID, created: datetime, modified: datetime, idempotency_key: str, quantity: int, state: str)[source]#

Attributes of an openedx_ledger.Reversal record.

A Reversal is a model that represents the “undo-ing” of a Transaction (see below). It’s primarily used within the domain of edX Enterprise for recording unenrollments and refunds of subsidized enterprise enrollments. openedx/openedx-ledger

uuid#

Primary identifier of the record.

Type:

str

created#

When the record was created.

Type:

datetime

modified#

When the record was last modified.

Type:

datetime

idempotency_key#

Client-generated unique value to achieve idempotency of operations.

Type:

str

quantity#

How many units of value this reversal represents (e.g. USD cents).

Type:

int

state#

Current lifecyle state of the record, one of (created, pending, committed, failed).

Type:

str

class openedx_events.enterprise.data.LicensedEnterpriseCourseEnrollment(uuid: UUID, created: datetime, modified: datetime, fulfillment_type: str, is_revoked: bool, enterprise_course_entitlement_uuid: UUID = None, enterprise_course_enrollment: EnterpriseCourseEnrollment = None, license_uuid: UUID = None)[source]#

Attributes of an enterprise.LicensedEnterpriseCourseEnrollment record.

Django model definition: openedx/edx-enterprise

All of the same attributes from BaseEnterpriseFulfillment plus the following:

license_uuid#

License UUID to associate with this enterprise license fulfillment.

Type:

UUID

class openedx_events.enterprise.data.SubsidyRedemption(subsidy_identifier: str, content_key: str, lms_user_id: int)[source]#

Data related to a Subsidy Redemption object.

subsidy_identifier#

unique identifier to fetch the applied subsidy

Type:

str

content_key#

content id where subsidy is utilized

Type:

str

lms_user_id#

lms user id of subsidy beneficiary

Type:

str

Maintenance chart

Review Date

Reviewer

Release

Test situation

2025-02-05

Maria Grimaldi

Sumac

Pass.