.. _examiner_restfulsimplifiedassignmentgroup_details_search: ============================================================================= GET /examiner/restfulsimplifiedassignmentgroup/ ============================================================================= Search for assignment groups. The underlying data model searched is defined in :class:`devilry.apps.core.models.AssignmentGroup`. The :ref:`simplified` that the server forwards this request to is :meth:`devilry.apps.examiner.simplified.SimplifiedAssignmentGroup.search`. The request parameters (below) all modify the result of the search. They are applied in the following order: 1. The ``query`` is executed. 2. The result of the query is filtered through the ``filters``. 3. The result of the filtering is ordered as specified in ``orderby``. 4. The result of the ordering is limited by ``start`` and ``limit``. ************************** Request ************************** Request example ############### .. code-block:: javascript GET /examiner/restfulsimplifiedassignmentgroup/ { query: 'a query string', filters: [{field:"candidates__identifier", comp:"icontains", value:["this", "is", "an", "example"]}, {field:"feedback", comp:"<", value:15}, {field:"feedback__delivery__delivery_type", comp:"endswith", value:20}], orderby: ["id", "-name", "is_open", "parentnode", "feedback", "latest_delivery_id", "latest_deadline_id", "latest_deadline_deadline", "number_of_deliveries"], start: 10, limit: 100 } Optional request parameters ########################### Optional request parameters are encoded as a JSON object and sent as the request body as shown in the example above. query ----- A string to search for. If this is empty or not given, all assignment groups that the authenticated user has access to is returned. If the string is not empty, the ``query``-string is split on whitespace, resulting in a list of words. Every *word* in the list is searched for *case-insensitive* matches within the following fields: name Actual location of the field: :class:`devilry.apps.core.models.AssignmentGroup` About the field: An optional name for the group. Typically used a project name on project assignments. Type String candidates__identifier Actual location of the field: :class:`devilry.apps.core.models.Candidate` About the field: List of many values. Type List of strings candidates__full_name Actual location of the field: :class:`devilry.apps.core.models.Candidate` About the field: List of many values. Type List of strings candidates__email Actual location of the field: :class:`devilry.apps.core.models.Candidate` About the field: List of many values. Type List of strings parentnode__long_name Actual location of the field: :class:`devilry.apps.core.models.Assignment` About the field: A longer name, more descriptive than "Short name". This is the name visible to students. Type String parentnode__short_name Actual location of the field: :class:`devilry.apps.core.models.Assignment` About the field: Max 20 characters. Only numbers, lowercase characters, '_' and '-'. Type String parentnode__parentnode__long_name Actual location of the field: :class:`devilry.apps.core.models.Period` About the field: A longer name, more descriptive than "Short name". This is the name visible to students. Type String parentnode__parentnode__short_name Actual location of the field: :class:`devilry.apps.core.models.Period` About the field: Max 20 characters. Only numbers, lowercase characters, '_' and '-'. Type String parentnode__parentnode__parentnode__long_name Actual location of the field: :class:`devilry.apps.core.models.Subject` About the field: A longer name, more descriptive than "Short name". This is the name visible to students. Type String parentnode__parentnode__parentnode__short_name Actual location of the field: :class:`devilry.apps.core.models.Subject` About the field: Max 20 characters. Only numbers, lowercase characters, '_' and '-'. Type String filters ------- Filters can be used to perform complex queries. The ``filters`` parameter is a list of filters, where each filter is a map with the following entries: field A field name. comp A comparison operator. value The value to filter on. Example: .. code-block:: javascript [{field:"candidates__identifier", comp:"icontains", value:["this", "is", "an", "example"]}, {field:"feedback", comp:"<", value:15}, {field:"feedback__delivery__delivery_type", comp:"endswith", value:20}] assignment groups can be filtered on the following *fields*: candidates__identifier Actual location of the field: :class:`devilry.apps.core.models.Candidate` About the field: List of many values. Type List of strings Supported comparison operators: ``startswith``, ``contains``, ``>=``, ``<=``, ``icontains``, ``iexact``, ``endswith``, ``exact``, ``<``, ``>``. feedback Actual location of the field: :class:`devilry.apps.core.models.StaticFeedback` About the field: Autogenerated identifier. Type Integer Supported comparison operators: ``startswith``, ``contains``, ``>=``, ``<=``, ``icontains``, ``iexact``, ``endswith``, ``exact``, ``<``, ``>``. feedback__delivery__delivery_type Actual location of the field: :class:`devilry.apps.core.models.Delivery` About the field: 0: Electronic delivery, 1: Non-electronic delivery, 2: Alias delivery. Default: 0. Type Integer Supported comparison operators: ``startswith``, ``contains``, ``>=``, ``<=``, ``icontains``, ``iexact``, ``endswith``, ``exact``, ``<``, ``>``. feedback__delivery__number Actual location of the field: :class:`devilry.apps.core.models.Delivery` About the field: The delivery-number within this assignment-group. This number is automatically incremented within each AssignmentGroup, starting from 1. Always unique within the assignment-group. Type Integer Supported comparison operators: ``startswith``, ``contains``, ``>=``, ``<=``, ``icontains``, ``iexact``, ``endswith``, ``exact``, ``<``, ``>``. feedback__delivery__time_of_delivery Actual location of the field: :class:`devilry.apps.core.models.Delivery` About the field: Holds the date and time the Delivery was uploaded. Type DateTime string (YYYY-MM-DD hh:mm:ss) Supported comparison operators: ``startswith``, ``contains``, ``>=``, ``<=``, ``icontains``, ``iexact``, ``endswith``, ``exact``, ``<``, ``>``. feedback__grade Actual location of the field: :class:`devilry.apps.core.models.StaticFeedback` About the field: The rendered grade, such as "A" or "approved". Type String Supported comparison operators: ``startswith``, ``contains``, ``>=``, ``<=``, ``icontains``, ``iexact``, ``endswith``, ``exact``, ``<``, ``>``. feedback__is_passing_grade Actual location of the field: :class:`devilry.apps.core.models.StaticFeedback` About the field: Is this a passing grade? Type Boolean Supported comparison operators: ``startswith``, ``contains``, ``>=``, ``<=``, ``icontains``, ``iexact``, ``endswith``, ``exact``, ``<``, ``>``. feedback__points Actual location of the field: :class:`devilry.apps.core.models.StaticFeedback` About the field: Number of points given on this feedback. Type Integer Supported comparison operators: ``startswith``, ``contains``, ``>=``, ``<=``, ``icontains``, ``iexact``, ``endswith``, ``exact``, ``<``, ``>``. id Actual location of the field: :class:`devilry.apps.core.models.AssignmentGroup` About the field: Autogenerated identifier. Type Integer Supported comparison operators: ``startswith``, ``contains``, ``>=``, ``<=``, ``icontains``, ``iexact``, ``endswith``, ``exact``, ``<``, ``>``. is_open Actual location of the field: :class:`devilry.apps.core.models.AssignmentGroup` About the field: If this is checked, the group can add deliveries. Type Boolean Supported comparison operators: ``startswith``, ``contains``, ``>=``, ``<=``, ``icontains``, ``iexact``, ``endswith``, ``exact``, ``<``, ``>``. latest_deadline_deadline Actual location of the field: :class:`Generated from a query` About the field: Generated from a query. Type unknown Supported comparison operators: ``startswith``, ``contains``, ``>=``, ``<=``, ``icontains``, ``iexact``, ``endswith``, ``exact``, ``<``, ``>``. number_of_deliveries Actual location of the field: :class:`Generated from a query` About the field: Generated from a query. Type unknown Supported comparison operators: ``startswith``, ``contains``, ``>=``, ``<=``, ``icontains``, ``iexact``, ``endswith``, ``exact``, ``<``, ``>``. parentnode Actual location of the field: :class:`devilry.apps.core.models.Assignment` About the field: Autogenerated identifier. Type Integer Supported comparison operators: ``startswith``, ``contains``, ``>=``, ``<=``, ``icontains``, ``iexact``, ``endswith``, ``exact``, ``<``, ``>``. parentnode__delivery_types Actual location of the field: :class:`devilry.apps.core.models.Assignment` About the field: This option controls what types of deliveries this assignment accepts. See docs for Delivery for documentation of accepted values. Type Integer Supported comparison operators: ``startswith``, ``<=``, ``>=``, ``contains``, ``icontains``, ``iexact``, ``endswith``, ``exact``, ``<``, ``>``. parentnode__long_name Actual location of the field: :class:`devilry.apps.core.models.Assignment` About the field: A longer name, more descriptive than "Short name". This is the name visible to students. Type String Supported comparison operators: ``startswith``, ``<=``, ``>=``, ``contains``, ``icontains``, ``iexact``, ``endswith``, ``exact``, ``<``, ``>``. parentnode__parentnode Actual location of the field: :class:`devilry.apps.core.models.Period` About the field: Autogenerated identifier. Type Integer Supported comparison operators: ``startswith``, ``<=``, ``>=``, ``contains``, ``icontains``, ``iexact``, ``endswith``, ``exact``, ``<``, ``>``. parentnode__parentnode__end_time Actual location of the field: :class:`devilry.apps.core.models.Period` About the field: Start time and end time defines when the period is active. Type DateTime string (YYYY-MM-DD hh:mm:ss) Supported comparison operators: ``startswith``, ``<=``, ``>=``, ``contains``, ``icontains``, ``iexact``, ``endswith``, ``exact``, ``<``, ``>``. parentnode__parentnode__long_name Actual location of the field: :class:`devilry.apps.core.models.Period` About the field: A longer name, more descriptive than "Short name". This is the name visible to students. Type String Supported comparison operators: ``startswith``, ``<=``, ``>=``, ``contains``, ``icontains``, ``iexact``, ``endswith``, ``exact``, ``<``, ``>``. parentnode__parentnode__parentnode Actual location of the field: :class:`devilry.apps.core.models.Subject` About the field: Autogenerated identifier. Type Integer Supported comparison operators: ``startswith``, ``<=``, ``>=``, ``contains``, ``icontains``, ``iexact``, ``endswith``, ``exact``, ``<``, ``>``. parentnode__parentnode__parentnode__long_name Actual location of the field: :class:`devilry.apps.core.models.Subject` About the field: A longer name, more descriptive than "Short name". This is the name visible to students. Type String Supported comparison operators: ``startswith``, ``<=``, ``>=``, ``contains``, ``icontains``, ``iexact``, ``endswith``, ``exact``, ``<``, ``>``. parentnode__parentnode__parentnode__parentnode Actual location of the field: :class:`devilry.apps.core.models.Node` About the field: Autogenerated identifier. Type Integer Supported comparison operators: ``startswith``, ``<=``, ``>=``, ``contains``, ``icontains``, ``iexact``, ``endswith``, ``exact``, ``<``, ``>``. parentnode__parentnode__parentnode__short_name Actual location of the field: :class:`devilry.apps.core.models.Subject` About the field: Max 20 characters. Only numbers, lowercase characters, '_' and '-'. Type String Supported comparison operators: ``startswith``, ``<=``, ``>=``, ``contains``, ``icontains``, ``iexact``, ``endswith``, ``exact``, ``<``, ``>``. parentnode__parentnode__short_name Actual location of the field: :class:`devilry.apps.core.models.Period` About the field: Max 20 characters. Only numbers, lowercase characters, '_' and '-'. Type String Supported comparison operators: ``startswith``, ``<=``, ``>=``, ``contains``, ``icontains``, ``iexact``, ``endswith``, ``exact``, ``<``, ``>``. parentnode__parentnode__start_time Actual location of the field: :class:`devilry.apps.core.models.Period` About the field: Start time and end time defines when the period is active. Type DateTime string (YYYY-MM-DD hh:mm:ss) Supported comparison operators: ``startswith``, ``<=``, ``>=``, ``contains``, ``icontains``, ``iexact``, ``endswith``, ``exact``, ``<``, ``>``. parentnode__short_name Actual location of the field: :class:`devilry.apps.core.models.Assignment` About the field: Max 20 characters. Only numbers, lowercase characters, '_' and '-'. Type String Supported comparison operators: ``startswith``, ``<=``, ``>=``, ``contains``, ``icontains``, ``iexact``, ``endswith``, ``exact``, ``<``, ``>``. exact_number_of_results ----------------------- If given, this must be a positive integer (including 0), which specifies the exact number of expected results. This enables searches that you know should fail if they do not get this exact number of results, such as filtering for a User by unique username instead of its numeric ID (where you should expect exactly one result). orderby ------- List of fieldnames. Order the result by these fields. Fieldnames can be prefixed by ``'-'`` for descending ordering. start ----- After query, filters and orderby have been executed, the result is limited to the values from *start* to *start+limit*. Start defalts to ``0``. limit ----- Limit results to this number of items. Defaults to ``50``. result_fieldgroups ------------------ A list of group names. Each group adds an additional set of fields to the results of the search. The following group names are available: users *Expands to the following fields:* candidates__identifier Actual location of the field: :class:`devilry.apps.core.models.Candidate` About the field: List of many values. Type List of strings assignment *Expands to the following fields:* parentnode__long_name Actual location of the field: :class:`devilry.apps.core.models.Assignment` About the field: A longer name, more descriptive than "Short name". This is the name visible to students. Type String parentnode__short_name Actual location of the field: :class:`devilry.apps.core.models.Assignment` About the field: Max 20 characters. Only numbers, lowercase characters, '_' and '-'. Type String parentnode__anonymous Actual location of the field: :class:`devilry.apps.core.models.Assignment` About the field: Specifies if this assignment is anonymous. Type Boolean parentnode__delivery_types Actual location of the field: :class:`devilry.apps.core.models.Assignment` About the field: This option controls what types of deliveries this assignment accepts. See docs for Delivery for documentation of accepted values. Type Integer parentnode__publishing_time Actual location of the field: :class:`devilry.apps.core.models.Assignment` About the field: The time when the assignment is to be published (visible to students and examiners). Type DateTime string (YYYY-MM-DD hh:mm:ss) feedback *Expands to the following fields:* feedback__points Actual location of the field: :class:`devilry.apps.core.models.StaticFeedback` About the field: Number of points given on this feedback. Type Integer feedback__grade Actual location of the field: :class:`devilry.apps.core.models.StaticFeedback` About the field: The rendered grade, such as "A" or "approved". Type String feedback__is_passing_grade Actual location of the field: :class:`devilry.apps.core.models.StaticFeedback` About the field: Is this a passing grade? Type Boolean period *Expands to the following fields:* parentnode__parentnode Actual location of the field: :class:`devilry.apps.core.models.Period` About the field: Autogenerated identifier. Type Integer parentnode__parentnode__long_name Actual location of the field: :class:`devilry.apps.core.models.Period` About the field: A longer name, more descriptive than "Short name". This is the name visible to students. Type String parentnode__parentnode__short_name Actual location of the field: :class:`devilry.apps.core.models.Period` About the field: Max 20 characters. Only numbers, lowercase characters, '_' and '-'. Type String feedbackdelivery *Expands to the following fields:* feedback__delivery__number Actual location of the field: :class:`devilry.apps.core.models.Delivery` About the field: The delivery-number within this assignment-group. This number is automatically incremented within each AssignmentGroup, starting from 1. Always unique within the assignment-group. Type Integer feedback__delivery__time_of_delivery Actual location of the field: :class:`devilry.apps.core.models.Delivery` About the field: Holds the date and time the Delivery was uploaded. Type DateTime string (YYYY-MM-DD hh:mm:ss) feedback__delivery__delivery_type Actual location of the field: :class:`devilry.apps.core.models.Delivery` About the field: 0: Electronic delivery, 1: Non-electronic delivery, 2: Alias delivery. Default: 0. Type Integer feedback__delivery__deadline Actual location of the field: :class:`devilry.apps.core.models.Deadline` About the field: Autogenerated identifier. Type Integer candidates *Expands to the following fields:* feedback_rendered_view *Expands to the following fields:* feedback__rendered_view Actual location of the field: :class:`devilry.apps.core.models.StaticFeedback` About the field: A rendered HTML version of the feedback, containing whatever the grade-editor chose to dump in this field. Type String subject *Expands to the following fields:* parentnode__parentnode__parentnode Actual location of the field: :class:`devilry.apps.core.models.Subject` About the field: Autogenerated identifier. Type Integer parentnode__parentnode__parentnode__long_name Actual location of the field: :class:`devilry.apps.core.models.Subject` About the field: A longer name, more descriptive than "Short name". This is the name visible to students. Type String parentnode__parentnode__parentnode__short_name Actual location of the field: :class:`devilry.apps.core.models.Subject` About the field: Max 20 characters. Only numbers, lowercase characters, '_' and '-'. Type String ********************* Response ********************* On success ########## Example ------------------------ *note that the is wrong in the example. The id is always unique. However, the example is generated from a non-varying dataset.* .. code-block:: javascript 200 OK { total: 20, items: [ { id: 15, name: "My example value", is_open: true, parentnode: 15, feedback: 15, latest_delivery_id: No example-value available for this field, latest_deadline_id: No example-value available for this field, latest_deadline_deadline: No example-value available for this field, number_of_deliveries: No example-value available for this field }, { id: 15, name: "My example value", is_open: true, parentnode: 15, feedback: 15, latest_delivery_id: No example-value available for this field, latest_deadline_id: No example-value available for this field, latest_deadline_deadline: No example-value available for this field, number_of_deliveries: No example-value available for this field }, ... ] } Success response details ------------------------ Responds with HTTP code *200* and a *JSON encoded* dict containing the list of results and the *total* number of items found before applying ``limit`` and ``start``. Each result in the list is a JSON object where the *key* is a fieldname and the associated value is the *value* for that field. The result always contains the following fields: id Actual location of the field: :class:`devilry.apps.core.models.AssignmentGroup` About the field: Autogenerated identifier. Type Integer name Actual location of the field: :class:`devilry.apps.core.models.AssignmentGroup` About the field: An optional name for the group. Typically used a project name on project assignments. Type String is_open Actual location of the field: :class:`devilry.apps.core.models.AssignmentGroup` About the field: If this is checked, the group can add deliveries. Type Boolean parentnode Actual location of the field: :class:`devilry.apps.core.models.Assignment` About the field: Autogenerated identifier. Type Integer feedback Actual location of the field: :class:`devilry.apps.core.models.StaticFeedback` About the field: Autogenerated identifier. Type Integer latest_delivery_id Actual location of the field: :class:`Generated from a query` About the field: Generated from a query. Type unknown latest_deadline_id Actual location of the field: :class:`Generated from a query` About the field: Generated from a query. Type unknown latest_deadline_deadline Actual location of the field: :class:`Generated from a query` About the field: Generated from a query. Type unknown number_of_deliveries Actual location of the field: :class:`Generated from a query` About the field: Generated from a query. Type unknown However, there may be more fields if specified with the ``result_fieldgroups`` request parameter. On error ######## On errors, we respond with one of the :ref:`restful_api_error_statuscodes`.