.. _api:

Public API
----------

Every Django application in edx-ora2 has an `api.py` that is its public
interface. If you are using one of these applications from the outside, you
should only import things from that module. The ground rules for api modules
are:

1. All inputs and outputs must be trivially serializable to JSON. This means
   `None`, `int`, `float`, `unicode`, `list`, `tuple`, `dict`, and `datetime`.
2. Returned objects should not have methods or business logic attached to them.
3. Caller should assume that these calls can be moderately expensive, as they
   may one day move out of process and become network calls. So calling
   something a hundred times in a loop should be avoided.

Submissions
***********

.. automodule:: submissions.api
   :members:

Peer Assessment
***************

.. automodule:: openassessment.assessment.api.peer
   :members:

Self Assessment
***************
.. automodule:: openassessment.assessment.api.self
   :members:

Student Training
***************
.. automodule:: openassessment.assessment.api.student_training
   :members:

Workflow Assessment
*******************
.. automodule:: openassessment.workflow
   :members:


Django Apps
-----------

Submissions
***********

The Submissions app is responsible for:

1. Storing and retrieving student submissions for answering a given problem.
2. Storing and retriveing the raw scores assigned to those submissions.
3. Retrieving the raw scores for all items associated with a particular student
   in a particular course.

This application is ignorant of the content of submissions, and assumes them to
simply be opaque unicode strings.


Models
++++++
.. automodule:: submissions.models
   :members:


Assessment
**********

Models
++++++
.. automodule:: openassessment.assessment.models.base
   :members:

.. automodule:: openassessment.assessment.models.peer
   :members:

.. automodule:: openassessment.assessment.models.peer
   :members:

.. automodule:: openassessment.assessment.models.training
   :members:

.. automodule:: openassessment.assessment.models.student_training
   :members:



Workflow
********

Models
++++++
.. automodule:: openassessment.workflow.models
   :members:

