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
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).
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.

Create a submission using the public API.

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']}")