Quizzes

EiTV CLOUD supports adding different types of quizzes on the platform, using a quiz ID, you can get all information about this content.

method: GET
URL: /quizzes/[ID].json

RETURN:
{
  "page": "quiz",
  "quiz": 
    {
      "id": "ID",
      "name": "NAME",
      "description": "DESCRIPTION",
      "html_description": "HTML ADDITIONAL DESCRIPTION",
      "quiz_type": "QUIZ TYPE", "graded", "progress", "poll"
      "correction_mode": ["automatic"|"manual"],
      "max_attempts": NUMBER,
      "min_score": NUMBER, # in percent
      "duration": true/false,
      "start": "START DATE",
      "end": "END DATE",
      "valid_interval": true/false, # case duration is true
      "promote": true/false, # home
      "message": "MESSAGE", # case quiz_type is "poll"
      "show_result": true/false,
      "date": "DATE",
      "type": "quiz",
      "time_ago_in_words": "FULL DATE",
      "last_view_time: NUMBER,
      "questions": [
        {
          "id": "ID",
          "name": "NAME",
          "question_text": "TEXT",
          "question_type": "["check_box"|"radio_button"|"text_box"|"file_upload"]
          "question_score": NUMBER, # float
          "answers_type": ["text"|"html"],
          "answers_comment": true/false,
          "answers_comment_type": ["correct_answers"|"all_answers"],
          "answers_values": [
            {
              "text": "TEXT|HTML",
              "comment": "TEXT|HTML", # case answers_comment is true
              "correct": true/false # case max attempts limit reached and quiz_type is not "poll"
              "percent": NUMBER # case max attempts limit reached and quiz_type is "poll"
            }
          ],
          "type": "question",
          "properties": [ # If exist custom fields
            {
              "id": null,
              "custom_field_id": ID,
              "value": null
            }
          ]
        }
      ],
      "properties": [ # If exist custom fields
        {
          "id": null,
          "custom_field_id": ID,
          "value": null
        }
      ]
    }
  "answers": [
    {
      "id": "ID",
      "question_id": "QUESTION ID",
      "value": "POSITION"
      "upload": { # if question_type == "file_upload"
        "id": "ID",
        "type": "upload"
      }
      "score": NUMBER,
      "comment": "TEXT",
      "type": "answer"
    }
  "quiz_result":
    {
      "id": "ID",
      "num_attempts": NUMBER,
      "max_attempts": true/false, # max attempts limit reached
      "score": NUMBER,
      "score_percent": NUMBER,
      "status": "STATUS", "passed", "pending", "failed"
      "type": "quiz_result"
    }
}

Following, we show how to get a specific content thumbnail:

URL: /quizzes/[ID]/retrieve?format=thumb
ID: format NUMBER-TEXT

To answer the quiz, use the following method:

method: POST
URL: /quizzes/[ID].json # quiz ID consists of NUMBER-TEXT

PARAMETERS:
{
  "quiz_result": {
    "quiz_attributes": {
      "questions_attributes": {
        "INDEX": { 
          "answers_attributes": {
            "INDEX": { 
              "value": "POSITION", 
              "check_box" = “” or “|1|” or "|1||2|" or ..., "radio_button" = "1" or "2" or ...
              "upload_attributes": { # if question_type == "file_upload"
                "upload_file": "FILE"
              }
              "question_id": "QUESTION ID",
              "user_id": "USER ID",
              "id": "ID"
             }
            },
            "id": "QUESTION ID"
          }
        },
        "id": "QUIZ ID"
      }
    }
  }
}
RETURN:
{
  "status": true/false, # status_code 200/400
  "errors": { # caso "status" = false
    "quiz_result": {
      "FIELD": [ # "quiz.questions.answers.value"
        "ERROR MESSAGE"
      ],
      "quiz.questions.answers": [
        {
          "question_id": "QUESTION ID",
          "errors": {
            "value": [
              "ERROR MESSAGE"
            ]
          }
        }
      ]
    }
  }
}

To get the player for the uploaded file:

method: GET

URL: /quizzes/[QUIZ_ID]/quiz_results/[QUIZ_RESULT_ID]/uploads/[ID]/play

<< Previous topic Next topic >>