# Quizzes

### Quiz

A `QuizActivity` has associated a `Quiz` object that contains the set of the quiz questions and the learners responses to the quiz.

### Questions

The quiz questions can be either of type `MultipleChoice`, where learners can select one or more option, or `OpenEnded`, where learners can write an open ended answer.

#### API Example

Since there are different question types, quiz questions make use of [GraphQL Interfaces](https://graphql.org/learn/schema/#interfaces). Common fields, such as `id` and `content` can be represented through `QuizQuestion` interface, specific fields can be fetched via an [inline fragment](https://graphql.org/learn/queries/#inline-fragments).

{% content-ref url="/pages/-MT0xXxWSinLDmt7yaUA" %}
[Inline fragments](/graphql/inline-fragments.md)
{% endcontent-ref %}

{% tabs %}
{% tab title="Query" %}

```
query {
  activity(id: "db79e3a7-07e7-4b2f-b799-e00ed94c1c8a") {
    __typename
    ... on QuizActivity {
      quiz {
        questions {
          __typename
          content
          order
          isOptional
          questionType
          ... on QuizQuestionMultipleChoice {
            selectionMode
            randomizeAnswers
            options {
              order
              content
            }
          }
        }
      }
    }
  }
}
```

{% endtab %}

{% tab title="Response" %}

```
{
  "data": {
    "activity": {
      "__typename": "QuizActivity",
      "quiz": {
        "questions": [
          {
            "__typename": "QuizQuestionMultipleChoice",
            "content": "<p>Question 1</p>",
            "order": 0,
            "isOptional": false,
            "questionType": "MultipleChoice",
            "selectionMode": "Single",
            "randomizeAnswers": false,
            "options": [
              {
                "order": 0,
                "content": "<p>Option 1</p>"
              },
              {
                "order": 1,
                "content": "<p>Option 2</p>"
              },
              {
                "order": 2,
                "content": "<p>Option 3</p>"
              }
            ]
          },
          {
            "__typename": "QuizQuestionMultipleChoice",
            "content": "<p>Question 2</p>",
            "order": 1,
            "isOptional": false,
            "questionType": "MultipleChoice",
            "selectionMode": "Multiple",
            "randomizeAnswers": false,
            "options": [
              {
                "order": 0,
                "content": "<p>Option 1</p>"
              },
              {
                "order": 1,
                "content": "<p>Option 2</p>"
              },
              {
                "order": 2,
                "content": "<p>Option 3</p>"
              }
            ]
          },
          {
            "__typename": "QuizQuestionMultipleChoice",
            "content": "<p>Question 3</p>",
            "order": 2,
            "isOptional": true,
            "questionType": "MultipleChoice",
            "selectionMode": "Multiple",
            "randomizeAnswers": true,
            "options": [
              {
                "order": 0,
                "content": "<p>Option 1</p>"
              },
              {
                "order": 1,
                "content": "<p>Option 2</p>"
              },
              {
                "order": 2,
                "content": "<p>Option 3</p>"
              }
            ]
          },
          {
            "__typename": "QuizQuestionOpenEnded",
            "content": "<p>Question 4</p>",
            "order": 3,
            "isOptional": false,
            "questionType": "OpenEnded"
          }
        ]
      }
    }
  }
}
```

{% endtab %}
{% endtabs %}

### Responses

The quiz responses contains the learners answers to the quiz. Each answer can be either `MultipleChoice` or `OpenEnded`, depending on the question type.

#### API Example

Responses are available via a pageable [GraphQL Connection](https://graphql.org/learn/pagination/#end-of-list-counts-and-connections).

{% content-ref url="/pages/-MT0jmlOIXnJAuofcp4E" %}
[Paginating queries](/graphql/pagination.md)
{% endcontent-ref %}

{% tabs %}
{% tab title="Query" %}

```graphql
query {
  activity(id: "db79e3a7-07e7-4b2f-b799-e00ed94c1c8a") {
    __typename
    ... on QuizActivity {
      quiz {
        responses(first: 2) {
          edges {
            node {
              retryNumber
              submitter {
                name
              }
              group {
                members {
                  name
                }
              }
              answers {
                __typename
                question {
                  content
                  questionType
                }
                ... on QuizAnswerMultipleChoice {
                  selectedOptions {
                    content
                    order
                  }
                  isCorrect
                }
                ... on QuizAnswerOpenEnded {
                  content  
                }
              }
            }
          }
        }
      }
    }
  }
}
```

{% endtab %}

{% tab title="Response" %}

```javascript
{
  "data": {
    "activity": {
      "__typename": "QuizActivity",
      "quiz": {
        "responses": {
          "edges": [
            {
              "node": {
                "retryNumber": null,
                "submitter": {
                  "name": "Daisy Duck"
                },
                "group": {
                  "members": [
                    {
                      "name": "Daisy Duck"
                    }
                  ]
                },
                "answers": [
                  {
                    "__typename": "QuizAnswerMultipleChoice",
                    "question": {
                      "content": "<p>Question 1</p>",
                      "questionType": "MultipleChoice"
                    },
                    "selectedOptions": [
                      {
                        "content": "<p>Option 1</p>",
                        "order": 0
                      }
                    ],
                    "isCorrect": true
                  },
                  {
                    "__typename": "QuizAnswerMultipleChoice",
                    "question": {
                      "content": "<p>Question 2</p>",
                      "questionType": "MultipleChoice"
                    },
                    "selectedOptions": [
                      {
                        "content": "<p>Option 2</p>",
                        "order": 1
                      }
                    ],
                    "isCorrect": false
                  },
                  {
                    "__typename": "QuizAnswerMultipleChoice",
                    "question": {
                      "content": "<p>Question 3</p>",
                      "questionType": "MultipleChoice"
                    },
                    "selectedOptions": [
                      {
                        "content": "<p>Option 2</p>",
                        "order": 1
                      },
                      {
                        "content": "<p>Option 3</p>",
                        "order": 2
                      }
                    ],
                    "isCorrect": false
                  },
                  {
                    "__typename": "QuizAnswerOpenEnded",
                    "question": {
                      "content": "<p>Question 4</p>",
                      "questionType": "OpenEnded"
                    },
                    "content": "<p>Open answer</p>"
                  }
                ]
              }
            },
            {
              "node": {
                "retryNumber": null,
                "submitter": {
                  "name": "Uncle Scrooge"
                },
                "group": {
                  "members": [
                    {
                      "name": "Uncle Scrooge"
                    }
                  ]
                },
                "answers": [
                  {
                    "__typename": "QuizAnswerMultipleChoice",
                    "question": {
                      "content": "<p>Question 1</p>",
                      "questionType": "MultipleChoice"
                    },
                    "selectedOptions": [
                      {
                        "content": "<p>Option 2</p>",
                        "order": 1
                      }
                    ],
                    "isCorrect": false
                  },
                  {
                    "__typename": "QuizAnswerMultipleChoice",
                    "question": {
                      "content": "<p>Question 2</p>",
                      "questionType": "MultipleChoice"
                    },
                    "selectedOptions": [
                      {
                        "content": "<p>Option 2</p>",
                        "order": 1
                      },
                      {
                        "content": "<p>Option 3</p>",
                        "order": 2
                      }
                    ],
                    "isCorrect": false
                  },
                  {
                    "__typename": "QuizAnswerMultipleChoice",
                    "question": {
                      "content": "<p>Question 3</p>",
                      "questionType": "MultipleChoice"
                    },
                    "selectedOptions": [
                      {
                        "content": "<p>Option 1</p>",
                        "order": 0
                      },
                      {
                        "content": "<p>Option 3</p>",
                        "order": 2
                      }
                    ],
                    "isCorrect": false
                  },
                  {
                    "__typename": "QuizAnswerOpenEnded",
                    "question": {
                      "content": "<p>Question 4</p>",
                      "questionType": "OpenEnded"
                    },
                    "content": "<p>Open answer</p>"
                  }
                ]
              }
            }
          ]
        }
      }
    }
  }
}
```

{% endtab %}
{% endtabs %}


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.eduflow.com/guides/quizzes.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
