edx-submissions
raw JSON → 4.0.0 verified Mon Apr 27 auth: no python
An API for creating submissions and scores, part of the Open edX platform. Version 4.0.0 is current. Release cadence is irregular, tied to Open edX named releases.
pip install edx-submissions Common errors
error ImportError: No module named submissions ↓
cause Library not installed or running in wrong virtual environment.
fix
Run
pip install edx-submissions and ensure your environment is activated. error TypeError: create_submission() missing 1 required positional argument: 'submission_data' ↓
cause Missing the second argument to `create_submission`.
fix
Call
sub_api.create_submission(student_item_dict, submission_data_dict). Warnings
breaking Version 4.0.0 dropped support for Python 2.7 and Django <2.2. ↓
fix Upgrade to Python 3.8+ and Django 2.2+.
deprecated The method `sub_api.get_submission()` is deprecated in favor of `sub_api.get_submissions()` (note plural). ↓
fix Use `sub_api.get_submissions(submission_uuid=uuid)`.
gotcha The API expects a dict-like `submission_data` object; passing a string or int will cause errors. ↓
fix Always pass a dictionary (or JSON-serializable dict) as the submission data.
Imports
- Submission wrong
from submissions.models import Submissioncorrectfrom submissions import api as sub_api - create_submission wrong
from submissions.api import create_submissioncorrectfrom submissions import api as sub_api; sub_api.create_submission(...)
Quickstart
from submissions import api as sub_api
# Config (assumes django setup is done)
student_id = "user123"
course_id = "course-v1:org+course+run"
item_id = "block-v1:org+course+run+type@problem+block@abc"
submission_data = {"answer": "42"}
submission = sub_api.create_submission(
{"student_id": student_id, "course_id": course_id, "item_id": item_id},
submission_data
)
print(f"Created submission: {submission['uuid']}")