---
title: Core Resources
slug: infra/core-resources
createdAt: 2023-06-29T05:00:41.456Z
---

You can access Socratease data via REST APIs.  [REST APIs](docId\:uxKJLmdElFbdBAuDEaR-d) shows you all the REST APIs for all the resources that are available to you.  On this page, we discuss the most important of these resources.

## Content Screen

A content screen is the smallest, independent unit of content a user can see. It can be an MCQ, a coding challenge, a video response question, etc.

:::ExpandableHeading{isOpen="true"}
### Attributes

```json
{
  "int_id": 10,
  "type": "mcq_1", //can be 'mcq_1', 'mca', 'video_response', etc
  "contents": {
    "question": "What is 5+7?",
    "options": ["12", "13", "14", "15"],
    "correct_ans_ind": 0
  },
  "created_at": "2023-02-28T07:47:47Z",
  ...
}
```
:::

## Unit

A unit is a set of content screens that the user interacts with in one session. A unit can be a Quiz, a Lesson, a set of Video Responses, a Question Bank etc.

:::ExpandableHeading{isOpen="true"}
### Attributes

```json
{
  "int_id": 10,
  "unit_id": "abc-def-ghi",
  "title": "Python Quiz",
  "type": "quiz", //can be 'quiz', 'lesson', 'question_bank', etc
  "meta_data": {
    "thumbnail": "https://cdn.socratease.co/abc.png"
  },
  "access_level": "logged_in", //must be logged in to attempt it
  "settings": {
    "randomize_options": true,
    "disable_copy_paste": false    
  },
  ...
}
```
:::

## User Progress

When a user starts a unit, we create a record of their progress. This record contains when the user started the unit, whether they have finished it, what the attempt number is, how many points they have scored on it, etc.

:::ExpandableHeading{isOpen="true"}
### Attributes

```json
{
  "user_id": 123,
  "unit_int_id": 345,
  "attempt_num": 3,
  "started_at": "2013-02-28T07:47:47Z",
  "finished": true,
  "finished_at": "2015-02-28T07:47:47Z",
  "points_aggregate": 12.3,
  "grade_finalized": false,
  ...
}
```
:::

## User Response

Every interaction of the user with a content screen is captured here. For example, if a user answers an MCQ, or watches an interactive video, the details are captured in the user response.

:::ExpandableHeading{isOpen="true"}
### Attributes

```json
{
  "user_id": 123,
  "unit_int_id": 345,
  "got_correct_answer": true,
  "points_assigned": 3,
  "points_scored": 2,
  "up_id": 10, //The UserProgress Id
  ...
}
```
:::

## Assessment

An assessment is a set of units that users attempt one after another. Say you want a user to finish one quiz and then a coding challenge. You add both these to an assessment and the user attempts them

:::ExpandableHeading{isOpen="true"}
### Attributes

```json
{
  "int_id": 123,
  "assessment_id": "abc-def-xyz",
  "title": "Frontend Developer",
  "max_attempts": 1,
  "access_level": "public",
  ... 
}
```
:::

## Assessment Progress

Track how much of an assessment a user has finished

:::ExpandableHeading{isOpen="true"}
### Attributes

```json
{
  "user_id": 123,
  "assessment_int_id": 345,
  "latest_unit_index": 2, //which test number are they on
  "started_at": "2013-02-28T07:47:47Z",
  "finished": false,
  "finished_at": null,
  "attempt_num": 1,
  "grade_finalized": false,
  ...
}
```
:::

