Status & Progress

Understand how your learners are working towards their goals

knAtom For ideas on how to use adaptive assignment analytics in your product, start here


In this section:



Restrictions

The Status and Progress analytic is only available for scoped goals. See Building Goals for more about building scoped goals.

Retrieve Status and Progress for a Learning Instance

POST /learning-instances/{li_id}/metrics/status-and-progress

Retrieve the status and progress analytic for all registrations in the specified learning instance, for each of the specified goals. The response can be conceptualized as a table whose columns correspond to the specified goals, and whose rows correspond to the registrations of the specified learning instance. The endpoint utilizes paging to ensure that the cost of the query and the size of the response is reasonably bounded. The registrations_per_page and registration_offset directives control the number of rows (registrations) in each page, and the start of the next page to be retrieved, respectively.

Authorization

This endpoint must be called by the partner admin user or a user registered as the instructor of the specified learning instance.

Path Parameters

Parameter Type Optional Description
li_id uuid No The ID of a learning instance for whose registrations to fetch the status and progress analytic

Request Body

Parameter Type Optional Description
goal_ids uuid[] No A list of goal IDs for which to fetch the status and progress analytic.
registration_offset int Yes The offset of the next registration to be retrieved. Should be set to the next.registration_offset field from the response payload of the query for the previous page. Default is 0.
registrations_per_page int Yes The number of registrations to include in the next page of status and progress to fetch. Default is 100. Maximum is 100.

Sample Request Body

{
  "goal_ids": ["99660e1d-e88e-44d2-94d3-251f4861d889"],
  "registrations_per_page": "2"
}

Response Body

Parameter Type Optional Description
query object No The request body from the query.
column_headers uuid[] No A list of the goal IDs for which status and progress is returned.
data object[] No A list of the page of “rows” of the response, each containing the status and progress analytic values for a single registration.
data[].registration_id uuid No The registration ID associated with the status and progress values in this row.
data[].status_and_progress object[] No A list of the status and progress analytic values for each requested goal, for the registration associated with this row. The order of this list matches the order of the goal IDs in column_headers.
data[].status_and_progress[].goal_id uuid No The goal ID associated with the status and progress value for this row (registration) and goal (column).
data[].status_and_progress[].status string No The status of the registration in the goal. One of: complete, complete_max_work, in_progress, struggling, or no_work.
data[].status_and_progress[].progress float No A value between 0 and 1 that indicates the registration’s progress towards completion of the goal.
data[].status_and_progress[].work_remaining integer No A value between 0 and 30 (inclusive) that predicts the number of additional items that the registration will need to complete before the goal is completed, or -1 if not enough data has been captured to make a reasonable estimate.
data[].status_and_progress[].targets object[] No A list of status and progress values for each individual target of the goal.
data[].status_and_progress[].targets[].
target_id
string Yes The ID of the target learning objective associated with this status and progress information. This field is mutually exclusive with module_id. Present if the goal in question utilizes target learning objectives. Otherwise absent.
data[].status_and_progress[].targets[].
module_id
string Yes The ID of the target module associated with this status and progress information. This field is mutually exclusive with target_id. Present if the goal in question utilizes target modules. Otherwise absent.
data[].status_and_progress[].targets[].
status
string No The status of the registration in the target learning objective or module. One of: complete, in_progress, struggling, or no_work.
data[].status_and_progress[].targets[].
progress
float No A value between 0 and 1 that indicates the registration’s progress towards completion of the target learning objective or module.
data[].status_and_progress[].
topic_work_remaining
object[] Yes A list of the work-remaining predictions for each topic defined on the goal. Absent if the goal does not define any topics.
data[].status_and_progress[].
topic_work_remaining[].topic_id
string Yes The partner ID for the topic defined on the goal.
data[].status_and_progress[].
topic_work_remaining[].min_work_remaining
integer Yes Not yet implemented. Always -1.
data[].status_and_progress[].
topic_work_remaining[].average_work_remaining
integer Yes A value between 0 and 30 (inclusive) that predicts the number of additional items that the registration will need to complete before the targets of the topic are completed, or -1 if not enough data has been captured to make a reasonable estimate.
next object Yes Present if there are additional pages of registration status and progress to be retrieved. Absent if this response represents the final page.
next.registration_offset int Yes Indicates the offset of the first registration of the next page of results.
next.registrations_per_page int Yes Identical to query.registrations_per_page

Sample Response Body: Second Page Of Registrations (2 registrations per page)

{
  "query": {
    "goal_ids": ["99660e1d-e88e-44d2-94d3-251f4861d889"]
  },
  "column_headers": ["99660e1d-e88e-44d2-94d3-251f4861d889"],
  "data": [
    {
      "registration_id": "6add6ab2-9f4a-4ecc-9969-0272c8ad051a",
      "status_and_progress": [
        {
          "goal_id": "99660e1d-e88e-44d2-94d3-251f4861d889",
          "status": "in_progress",
          "progress": 0.4,
          "work_remaining": 9,
          "targets": [
            {
              "target_id": "lref-1a387a89-91f9-4a97-b393-e7f788029597",
              "status": "in_progress",
              "progress": 0.4
            }
          ]
        }
      ]
    },
    {
      "registration_id": "e82e32b0-9ff4-46bc-964f-52ee6fd6714e",
      "status_and_progress": [
        {
          "goal_id": "99660e1d-e88e-44d2-94d3-251f4861d889",
          "status": "in_progress",
          "progress": 0.6,
          "work_remaining": 8,
          "targets": [
            {
              "target_id": "lref-1a387a89-91f9-4a97-b393-e7f788029597",
              "status": "struggling",
              "progress": 0.2
            }
          ]
        }
      ]
    }
  ],
  "next": {
    "registration_offset": 4,
    "registrations_per_page": 2
  }
}

Retrieve Status and Progress for a Registration

POST /registrations/{reg_id}/metrics/status-and-progress

Retrieve the status and progress analytic for the specified registration, for each of the specified goals. The response has the same tabular structure as that of the POST /learning-instances/{li_id}/metrics/status-and-progress endpoint, but with a single row, corresponding to the specified registration.

Authorization

This endpoint must be called by the partner admin user, or a user registered as the instructor of the learning instance of the specified registration, or the user associated with the specified registration.

Path Parameters

Parameter Type Optional Description
reg_id UUID No registration ID

Request Body

Parameter Type Optional Description
goal_ids uuid[] No A list of goal IDs for which to fetch the status and progress analytic.

Sample Request Body

{
  "goal_ids": ["50d7d4fc-476d-45eb-8e8c-97c91d5d7c74"]
}

Response Body

Parameter Type Optional Description
query object No The request body from the query.
column_headers uuid[] No A list of the goal IDs for which status and progress is returned.
data object[] No A single-item list whose item containins the status and progress analytic values for the specified registration.
data[].registration_id uuid No The registration ID associated with the status and progress values.
data[].status_and_progress object[] No A list of the status and progress analytic values for each requested goal. The order of this list matches the order of the goal IDs in column_headers.
data[].status_and_progress[].goal_id uuid No The goal ID associated with the status and progress value for this goal (column).
data[].status_and_progress[].status string No The status of the registration in the goal. One of: complete, complete_max_work, in_progress, struggling, or no_work.
data[].status_and_progress[].progress float No A value between 0 and 1 that indicates the registration’s progress towards completion of the goal.
data[].status_and_progress[].work_remaining integer No A value between 0 and 30 (inclusive) that predicts the number of additional items that the registration will need to complete before the goal is completed, or -1 if not enough data has been captured to make a reasonable estimate.
data[].status_and_progress[].targets object[] No A list of status and progress values for each individual target of the goal.
data[].status_and_progress[].targets[].
target_id
string Yes The ID of the target learning objective associated with this status and progress information. This field is mutually exclusive with module_id. Present if the goal in question utilizes target learning objectives. Otherwise absent.
data[].status_and_progress[].targets[].
module_id
string Yes The ID of the target module associated with this status and progress information. This field is mutually exclusive with target_id. Present if the goal in question utilizes target modules. Otherwise absent.
data[].status_and_progress[].targets[].
status
string No The status of the registration in the target learning objective or module. One of: complete, in_progress, struggling, or no_work.
data[].status_and_progress[].targets[].
progress
float No A value between 0 and 1 that indicates the registration’s progress towards completion of the target learning objective or module.
data[].status_and_progress[].
topic_work_remaining
object[] Yes A list of the work-remaining predictions for each topic defined on the goal. Absent if the goal does not define any topics.
data[].status_and_progress[].
topic_work_remaining[].topic_id
string Yes The partner ID for the topic defined on the goal.
data[].status_and_progress[].
topic_work_remaining[].min_work_remaining
integer Yes Not yet implemented. Always -1.
data[].status_and_progress[].
topic_work_remaining[].average_work_remaining
integer Yes A value between 0 and 30 (inclusive) that predicts the number of additional items that the registration will need to complete before the targets of the topic are completed, or -1 if not enough data has been captured to make a reasonable estimate.

Sample Response Body: Single Goal, Single Target

{
  "query": {
    "goal_ids": ["50d7d4fc-476d-45eb-8e8c-97c91d5d7c74"]
  },
  "column_headers": ["50d7d4fc-476d-45eb-8e8c-97c91d5d7c74"],
  "data": [
    {
      "registration_id": "104f4efc-62f0-4f4a-a577-c880ff7acc31",
      "status_and_progress": [
        {
          "goal_id": "50d7d4fc-476d-45eb-8e8c-97c91d5d7c74",
          "status": "in_progress",
          "progress": 0.4,
          "work_remaining": 9,
          "targets": [
            {
              "target_id": "5d56b449-56be-4bb1-afd2-b3e281a66a42",
              "status": "in_progress",
              "progress": 0.8
            }
          ]
        }
      ]
    }
  ]
}

Sample Response Body: Single Goal with Topics

{
  "query": {
    "goal_ids": ["99660e1d-e88e-44d2-94d3-251f4861d889"]
  },
  "column_headers": ["99660e1d-e88e-44d2-94d3-251f4861d889"],
  "data": [
    {
      "registration_id": "6add6ab2-9f4a-4ecc-9969-0272c8ad051a",
      "status_and_progress": [
        {
          "goal_id": "99660e1d-e88e-44d2-94d3-251f4861d889",
          "status": "in_progress",
          "progress": 0.6,
          "work_remaining": 8,
          "targets": [
            {
              "target_id": "lref-1a387a89-91f9-4a97-b393-e7f788029597",
              "status": "struggling",
              "progress": 0.2
            },
            {
              "target_id": "lref-9d24c929-2781-41b0-982a-fce1e8684ac5",
              "status": "completed",
              "progress": 1.0
            },
            {
              "target_id": "lref-e900ba90-9449-4634-9da1-c65fb3ac08f9",
              "status": "in_progress",
              "progress": 0.6
            }
          ],
          "topic_work_remaining": [
            {
              "topic_id": "topic-12.1.3",
              "min_work_remaining": -1,
              "average_work_remaining": 3
            },
            {
              "topic_id": "topic-12.1.4",
              "min_work_remaining": -1,
              "average_work_remaining": 2
            }
          ]
        }
      ]
    }
  ]
}