> ## Documentation Index
> Fetch the complete documentation index at: https://docs.timeback.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Update metadata for a list of assessment items

> Update metadata for a list of assessment items. This operation is used to reset the human approved status for all assessment items.



## OpenAPI

````yaml /openapi/beyond-ai/qti-api.yaml post /assessment-items/metadata
openapi: 3.1.0
info:
  title: QTI API
  version: 1.0.0
  description: >-
    A robust assessment engine implementing the QTI 3.0 specification, designed
    for creating, managing, and delivering educational assessments.
servers:
  - url: https://qti.alpha-1edtech.ai/api
    description: Main Server
security:
  - OAuth2: []
  - MCP: []
tags:
  - name: Validation
    description: >-
      Validate XML strings against QTI compliant XSD files. XSD version
      supported is 3.0.0 (3p0)
  - name: Feedback
    description: Feedback for questions and lessons
  - name: Assessment Test Management
    description: >-
      Enables the management of Assessment Tests. Assessment Tests are the main
      entities that contain Assessment Test Parts, Sections, and Assessment
      Items.
  - name: Test Part Management
    description: >-
      Enables the management of Test Parts. Assessment Test Parts are used to
      group sections inside of an Assessment Test.
  - name: Section Management
    description: >-
      Enables the management of Sections. Assessment Sections are used to group
      Assessment Items.
  - name: Assessment Item Management
    description: >-
      Enables the management of Assessment ITems. Assessment Items are made up
      of QTI Interactions (e.g. questions, multiple choice, etc.).
  - name: Stimulus Management
    description: >-
      Enables the management of Stimuli. Stimuli are shared content pieces
      (text, images, audio, video) that provide context for assessment items and
      can be referenced by multiple questions.
paths:
  /assessment-items/metadata:
    post:
      tags:
        - Assessment Item Management
      summary: Update metadata for a list of assessment items
      description: >-
        Update metadata for a list of assessment items. This operation is used
        to reset the human approved status for all assessment items.
      operationId: updateMetadata
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AssessmentItem'
            examples:
              xml-choice:
                summary: XML - Choice Example
                value:
                  format: xml
                  xml: |-
                    <?xml version="1.0" encoding="UTF-8"?>
                    <qti-assessment-item
                      xmlns="http://www.imsglobal.org/xsd/imsqtiasi_v3p0"
                      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
                      xsi:schemaLocation="http://www.imsglobal.org/xsd/imsqtiasi_v3p0 https://purl.imsglobal.org/spec/qti/v3p0/schema/xsd/imsqti_asiv3p0_v1p0.xsd"
                      identifier="xml-choice-item-1"
                      title="Sample Choice Question"
                      adaptive="false"
                      time-dependent="false">

                      <qti-response-declaration identifier="RESPONSE" cardinality="single" base-type="identifier">
                        <qti-correct-response>
                          <qti-value>B</qti-value>
                        </qti-correct-response>
                      </qti-response-declaration>

                      <qti-outcome-declaration identifier="FEEDBACK" cardinality="single" base-type="identifier"/>
                      <qti-outcome-declaration identifier="FEEDBACK-INLINE" cardinality="single" base-type="identifier"/>

                      <qti-assessment-stimulus-ref identifier="Stimulus1" href="stimuli/Stimulus1" title="Math Context"/>
                      <qti-assessment-stimulus-ref identifier="Stimulus2" href="stimuli/Stimulus2" title="Additional Context"/>

                      <qti-item-body>
                        <qti-choice-interaction response-identifier="RESPONSE" shuffle="false" max-choices="1">
                          <qti-prompt>What is 2 + 2?</qti-prompt>
                          <qti-simple-choice identifier="A">
                            3
                            <qti-feedback-inline outcome-identifier="FEEDBACK-INLINE" identifier="A" show-hide="show">
                              <span style="color: #D9534F;">Incorrect: Try counting again.</span>
                            </qti-feedback-inline>
                          </qti-simple-choice>
                          <qti-simple-choice identifier="B">
                            4
                            <qti-feedback-inline outcome-identifier="FEEDBACK-INLINE" identifier="B" show-hide="show">
                              <span style="color: #2E8B57;">Correct: Well done!</span>
                            </qti-feedback-inline>
                          </qti-simple-choice>
                        </qti-choice-interaction>
                      </qti-item-body>

                      <qti-response-processing template="match_correct">
                        <qti-response-condition>
                          <qti-response-if>
                            <qti-match>
                              <qti-variable identifier="RESPONSE"/>
                              <qti-correct identifier="RESPONSE"/>
                            </qti-match>
                            <qti-set-outcome-value identifier="FEEDBACK">
                              <qti-base-value base-type="identifier">CORRECT</qti-base-value>
                            </qti-set-outcome-value>
                          </qti-response-if>
                          <qti-response-else>
                            <qti-set-outcome-value identifier="FEEDBACK">
                              <qti-base-value base-type="identifier">INCORRECT</qti-base-value>
                            </qti-set-outcome-value>
                          </qti-response-else>
                        </qti-response-condition>
                      </qti-response-processing>

                      <qti-modal-feedback outcome-identifier="FEEDBACK" identifier="CORRECT" show-hide="show">
                        <qti-content-body>
                          <p><strong>Correct!</strong> Well done.</p>
                        </qti-content-body>
                      </qti-modal-feedback>

                      <qti-modal-feedback outcome-identifier="FEEDBACK" identifier="INCORRECT" show-hide="show">
                        <qti-content-body>
                          <p><strong>Incorrect.</strong> Please review and try again.</p>
                        </qti-content-body>
                      </qti-modal-feedback>
                    </qti-assessment-item>
                  metadata:
                    subject: Math
                    grade: '5'
                    standard: Number Operations
                    lesson: Basic Addition
                    difficulty: hard
              xml-text-entry:
                summary: XML - Text Entry Example
                value:
                  format: xml
                  xml: |-
                    <?xml version="1.0" encoding="UTF-8"?>
                    <qti-assessment-item
                      xmlns="http://www.imsglobal.org/xsd/imsqtiasi_v3p0"
                      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
                      xsi:schemaLocation="http://www.imsglobal.org/xsd/imsqtiasi_v3p0 https://purl.imsglobal.org/spec/qti/v3p0/schema/xsd/imsqti_asiv3p0_v1p0.xsd"
                      identifier="xml-text-entry-item-1"
                      title="Robust Text Entry Question"
                      adaptive="false"
                      time-dependent="false">

                      <qti-response-declaration identifier="RESPONSE" cardinality="single" base-type="string">
                        <qti-correct-response>
                          <qti-value>Paris</qti-value>
                        </qti-correct-response>
                      </qti-response-declaration>

                      <qti-outcome-declaration identifier="FEEDBACK" cardinality="single" base-type="identifier"/>
                      <qti-outcome-declaration identifier="FEEDBACK-INLINE" cardinality="single" base-type="identifier"/>

                      <qti-assessment-stimulus-ref identifier="Stimulus1" href="stimuli/Stimulus1" title="Geography Context"/>

                      <qti-item-body>
                        <p>
                          What is the capital of France?
                          <qti-text-entry-interaction response-identifier="RESPONSE" expected-length="5" pattern-mask="[A-Za-z]+" placeholder-text="Enter city name"/>
                        </p>
                      </qti-item-body>

                      <qti-response-processing template="match_correct">
                        <qti-response-condition>
                          <qti-response-if>
                            <qti-match>
                              <qti-variable identifier="RESPONSE"/>
                              <qti-correct identifier="RESPONSE"/>
                            </qti-match>
                            <qti-set-outcome-value identifier="FEEDBACK">
                              <qti-base-value base-type="identifier">CORRECT</qti-base-value>
                            </qti-set-outcome-value>
                            <qti-set-outcome-value identifier="FEEDBACK-INLINE">
                              <qti-base-value base-type="identifier">B</qti-base-value>
                            </qti-set-outcome-value>
                          </qti-response-if>
                          <qti-response-else>
                            <qti-set-outcome-value identifier="FEEDBACK">
                              <qti-base-value base-type="identifier">INCORRECT</qti-base-value>
                            </qti-set-outcome-value>
                            <qti-set-outcome-value identifier="FEEDBACK-INLINE">
                              <qti-base-value base-type="identifier">A</qti-base-value>
                            </qti-set-outcome-value>
                          </qti-response-else>
                        </qti-response-condition>
                      </qti-response-processing>

                      <qti-modal-feedback outcome-identifier="FEEDBACK" identifier="CORRECT" show-hide="show">
                        <qti-content-body>
                          <p><strong>Correct!</strong> Well done.</p>
                        </qti-content-body>
                      </qti-modal-feedback>

                      <qti-modal-feedback outcome-identifier="FEEDBACK" identifier="INCORRECT" show-hide="show">
                        <qti-content-body>
                          <p><strong>Incorrect.</strong> Please review and try again.</p>
                        </qti-content-body>
                      </qti-modal-feedback>

                      <qti-modal-feedback outcome-identifier="FEEDBACK-INLINE" identifier="A" show-hide="show" class="text-danger">
                        <qti-content-body>
                          <span style="color:#D9534F;">Incorrect: The capital of France is Paris.</span>
                        </qti-content-body>
                      </qti-modal-feedback>

                      <qti-modal-feedback outcome-identifier="FEEDBACK-INLINE" identifier="B" show-hide="show" class="text-success">
                        <qti-content-body>
                          <span style="color:#2E8B57;">Correct!</span>
                        </qti-content-body>
                      </qti-modal-feedback>
                    </qti-assessment-item>
                  metadata:
                    subject: Geography
                    grade: '5'
                    standard: World Capitals
                    lesson: European Capitals
                    difficulty: easy
              xml-inline-choice:
                summary: XML - Inline Choice Example
                value:
                  format: xml
                  xml: |-
                    <?xml version="1.0" encoding="UTF-8"?>
                    <qti-assessment-item
                      xmlns="http://www.imsglobal.org/xsd/imsqtiasi_v3p0"
                      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
                      xsi:schemaLocation="http://www.imsglobal.org/xsd/imsqtiasi_v3p0 https://purl.imsglobal.org/spec/qti/v3p0/schema/xsd/imsqti_asiv3p0_v1p0.xsd"
                      identifier="xml-inline-choice-item-1"
                      title="Robust Inline Choice Cloze Question"
                      adaptive="false"
                      time-dependent="false">

                      <qti-response-declaration identifier="RESPONSE" cardinality="single" base-type="identifier">
                        <qti-correct-response>
                          <qti-value>B</qti-value>
                        </qti-correct-response>
                      </qti-response-declaration>

                      <qti-outcome-declaration identifier="FEEDBACK" cardinality="single" base-type="identifier"/>
                      <qti-outcome-declaration identifier="FEEDBACK-INLINE" cardinality="single" base-type="identifier"/>

                      <qti-assessment-stimulus-ref identifier="Stimulus1" href="stimuli/Stimulus1" />

                      <qti-item-body>
                        <p>The capital of France is
                          <qti-inline-choice-interaction response-identifier="RESPONSE" shuffle="false">
                            <qti-inline-choice identifier="A">London</qti-inline-choice>
                            <qti-inline-choice identifier="B">Paris</qti-inline-choice>
                            <qti-inline-choice identifier="C">Berlin</qti-inline-choice>
                            <qti-inline-choice identifier="D">Madrid</qti-inline-choice>
                          </qti-inline-choice-interaction>.
                        </p>
                      </qti-item-body>

                      <qti-response-processing template="match_correct">
                        <qti-response-condition>
                          <qti-response-if>
                            <qti-match>
                              <qti-variable identifier="RESPONSE"/>
                              <qti-correct identifier="RESPONSE"/>
                            </qti-match>
                            <qti-set-outcome-value identifier="FEEDBACK">
                              <qti-base-value base-type="identifier">CORRECT</qti-base-value>
                            </qti-set-outcome-value>
                          </qti-response-if>
                          <qti-response-else>
                            <qti-set-outcome-value identifier="FEEDBACK">
                              <qti-base-value base-type="identifier">INCORRECT</qti-base-value>
                            </qti-set-outcome-value>
                          </qti-response-else>
                        </qti-response-condition>
                      </qti-response-processing>

                      <qti-modal-feedback outcome-identifier="FEEDBACK" identifier="CORRECT" show-hide="show">
                        <qti-content-body>
                          <p><strong>Correct!</strong> Well done.</p>
                        </qti-content-body>
                      </qti-modal-feedback>

                      <qti-modal-feedback outcome-identifier="FEEDBACK" identifier="INCORRECT" show-hide="show">
                        <qti-content-body>
                          <p><strong>Incorrect.</strong> Please review and try again.</p>
                        </qti-content-body>
                      </qti-modal-feedback>
                    </qti-assessment-item>
                  metadata:
                    subject: Geography
                    grade: '4'
                    standard: World Capitals
                    lesson: European Capitals
                    difficulty: easy
              xml-extended-text:
                summary: XML - Extended Text Example
                value:
                  format: xml
                  xml: |-
                    <?xml version="1.0" encoding="UTF-8"?>
                    <qti-assessment-item
                      xmlns="http://www.imsglobal.org/xsd/imsqtiasi_v3p0"
                      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
                      xsi:schemaLocation="http://www.imsglobal.org/xsd/imsqtiasi_v3p0 https://purl.imsglobal.org/spec/qti/v3p0/schema/xsd/imsqti_asiv3p0_v1p0.xsd"
                      identifier="xml-extended-text-item-1"
                      title="Robust Extended Text Essay Question"
                      adaptive="false"
                      time-dependent="false">

                      <qti-response-declaration identifier="RESPONSE" cardinality="single" base-type="string">
                        <qti-correct-response>
                          <qti-value></qti-value>
                        </qti-correct-response>
                      </qti-response-declaration>

                      <qti-outcome-declaration identifier="FEEDBACK" cardinality="single" base-type="identifier"/>
                      <qti-outcome-declaration identifier="SCORE" cardinality="single" base-type="float"/>

                      <qti-assessment-stimulus-ref identifier="Stimulus1" href="stimuli/Stimulus1" title="ELA Context"/>

                      <qti-item-body>
                        <qti-extended-text-interaction response-identifier="RESPONSE" expected-length="200" expected-lines="10" format="plain" max-strings="1" min-strings="1" pattern-mask="[a-zA-Z0-9\s\p{P}]*">
                          <qti-prompt>Write a short essay about your favorite book.</qti-prompt>
                        </qti-extended-text-interaction>
                      </qti-item-body>

                      <qti-response-processing template="map_response">
                        <qti-response-condition>
                          <qti-response-if>
                            <qti-not>
                              <qti-is-null>
                                <qti-variable identifier="RESPONSE"/>
                              </qti-is-null>
                            </qti-not>
                            <qti-set-outcome-value identifier="SCORE">
                              <qti-base-value base-type="float">1.0</qti-base-value>
                            </qti-set-outcome-value>
                          </qti-response-if>
                        </qti-response-condition>
                      </qti-response-processing>

                      <qti-modal-feedback outcome-identifier="SCORE" identifier="COMPLETED" show-hide="show" title="Essay Submitted">
                        <qti-content-body>
                          <p>Your essay has been submitted and will be scored shortly.</p>
                        </qti-content-body>
                      </qti-modal-feedback>
                    </qti-assessment-item>
                  metadata:
                    subject: ELA
                    grade: '8'
                    standard: Writing
                    lesson: Personal Narrative
                    difficulty: hard
              xml-match:
                summary: XML - Match Example
                value:
                  format: xml
                  xml: |-
                    <?xml version="1.0" encoding="UTF-8"?>
                    <qti-assessment-item
                      xmlns="http://www.imsglobal.org/xsd/imsqtiasi_v3p0"
                      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
                      xsi:schemaLocation="http://www.imsglobal.org/xsd/imsqtiasi_v3p0 https://purl.imsglobal.org/spec/qti/v3p0/schema/xsd/imsqti_asiv3p0_v1p0.xsd"
                      identifier="xml-match-item-1"
                      title="Robust Country-Capital Match Question"
                      adaptive="false"
                      time-dependent="false">

                      <qti-response-declaration identifier="RESPONSE" cardinality="multiple" base-type="directedPair">
                        <qti-correct-response>
                          <qti-value>C1 T1</qti-value>
                          <qti-value>C2 T2</qti-value>
                          <qti-value>C3 T3</qti-value>
                          <qti-value>C4 T4</qti-value>
                        </qti-correct-response>
                      </qti-response-declaration>

                      <qti-outcome-declaration identifier="FEEDBACK" cardinality="single" base-type="identifier"/>

                      <qti-assessment-stimulus-ref identifier="Stimulus1" href="stimuli/Stimulus1" title="Geography Context"/>
                      <qti-assessment-stimulus-ref identifier="Stimulus2" href="stimuli/Stimulus2" title="European Map"/>

                      <qti-item-body>
                        <qti-match-interaction response-identifier="RESPONSE" shuffle="true" max-associations="4">
                          <qti-prompt>Match each country with its capital.</qti-prompt>
                          <qti-simple-match-set>
                            <qti-simple-associable-choice identifier="C1" match-max="1">France</qti-simple-associable-choice>
                            <qti-simple-associable-choice identifier="C2" match-max="1">Germany</qti-simple-associable-choice>
                            <qti-simple-associable-choice identifier="C3" match-max="1">Italy</qti-simple-associable-choice>
                            <qti-simple-associable-choice identifier="C4" match-max="1">Spain</qti-simple-associable-choice>
                          </qti-simple-match-set>
                          <qti-simple-match-set>
                            <qti-simple-associable-choice identifier="T1" match-max="1">Paris</qti-simple-associable-choice>
                            <qti-simple-associable-choice identifier="T2" match-max="1">Berlin</qti-simple-associable-choice>
                            <qti-simple-associable-choice identifier="T3" match-max="1">Rome</qti-simple-associable-choice>
                            <qti-simple-associable-choice identifier="T4" match-max="1">Madrid</qti-simple-associable-choice>
                          </qti-simple-match-set>
                        </qti-match-interaction>
                      </qti-item-body>

                      <qti-response-processing template="match_correct">
                        <qti-response-condition>
                          <qti-response-if>
                            <qti-match>
                              <qti-variable identifier="RESPONSE"/>
                              <qti-correct identifier="RESPONSE"/>
                            </qti-match>
                            <qti-set-outcome-value identifier="FEEDBACK">
                              <qti-base-value base-type="identifier">CORRECT</qti-base-value>
                            </qti-set-outcome-value>
                          </qti-response-if>
                          <qti-response-else>
                            <qti-set-outcome-value identifier="FEEDBACK">
                              <qti-base-value base-type="identifier">INCORRECT</qti-base-value>
                            </qti-set-outcome-value>
                          </qti-response-else>
                        </qti-response-condition>
                      </qti-response-processing>

                      <qti-modal-feedback outcome-identifier="FEEDBACK" identifier="CORRECT" show-hide="show">
                        <qti-content-body>
                          <p><strong>Correct!</strong> Well done.</p>
                        </qti-content-body>
                      </qti-modal-feedback>

                      <qti-modal-feedback outcome-identifier="FEEDBACK" identifier="INCORRECT" show-hide="show">
                        <qti-content-body>
                          <p><strong>Incorrect.</strong> Please review and try again.</p>
                        </qti-content-body>
                      </qti-modal-feedback>
                    </qti-assessment-item>
                  metadata:
                    subject: Geography
                    grade: '6'
                    standard: World Capitals
                    lesson: European Geography
                    difficulty: medium
              xml-order:
                summary: XML - Order Example
                value:
                  format: xml
                  xml: |-
                    <?xml version="1.0" encoding="UTF-8"?>
                    <qti-assessment-item
                      xmlns="http://www.imsglobal.org/xsd/imsqtiasi_v3p0"
                      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
                      xsi:schemaLocation="http://www.imsglobal.org/xsd/imsqtiasi_v3p0 https://purl.imsglobal.org/spec/qti/v3p0/schema/xsd/imsqti_asiv3p0_v1p0.xsd"
                      identifier="xml-order-item-1"
                      title="Robust Historical Events Ordering Question"
                      adaptive="false"
                      time-dependent="false">

                      <qti-response-declaration identifier="RESPONSE" cardinality="ordered" base-type="identifier">
                        <qti-correct-response>
                          <qti-value>C1</qti-value>
                          <qti-value>C2</qti-value>
                          <qti-value>C3</qti-value>
                          <qti-value>C4</qti-value>
                        </qti-correct-response>
                      </qti-response-declaration>

                      <qti-outcome-declaration identifier="FEEDBACK" cardinality="single" base-type="identifier"/>

                      <qti-assessment-stimulus-ref identifier="Stimulus1" href="stimuli/Stimulus1" title="History Context"/>

                      <qti-item-body>
                        <qti-order-interaction response-identifier="RESPONSE" shuffle="true" orientation="vertical">
                          <qti-prompt>Place these historical events in chronological order (earliest to latest).</qti-prompt>
                          <qti-simple-choice identifier="C1">Declaration of Independence (1776)</qti-simple-choice>
                          <qti-simple-choice identifier="C2">Constitution Ratified (1788)</qti-simple-choice>
                          <qti-simple-choice identifier="C3">Louisiana Purchase (1803)</qti-simple-choice>
                          <qti-simple-choice identifier="C4">Civil War Begins (1861)</qti-simple-choice>
                        </qti-order-interaction>
                      </qti-item-body>

                      <qti-response-processing template="match_correct">
                        <qti-response-condition>
                          <qti-response-if>
                            <qti-match>
                              <qti-variable identifier="RESPONSE"/>
                              <qti-correct identifier="RESPONSE"/>
                            </qti-match>
                            <qti-set-outcome-value identifier="FEEDBACK">
                              <qti-base-value base-type="identifier">CORRECT</qti-base-value>
                            </qti-set-outcome-value>
                          </qti-response-if>
                          <qti-response-else>
                            <qti-set-outcome-value identifier="FEEDBACK">
                              <qti-base-value base-type="identifier">INCORRECT</qti-base-value>
                            </qti-set-outcome-value>
                          </qti-response-else>
                        </qti-response-condition>
                      </qti-response-processing>

                      <qti-modal-feedback outcome-identifier="FEEDBACK" identifier="CORRECT" show-hide="show">
                        <qti-content-body>
                          <p><strong>Correct!</strong> Well done.</p>
                        </qti-content-body>
                      </qti-modal-feedback>

                      <qti-modal-feedback outcome-identifier="FEEDBACK" identifier="INCORRECT" show-hide="show">
                        <qti-content-body>
                          <p><strong>Incorrect.</strong> Please review and try again.</p>
                        </qti-content-body>
                      </qti-modal-feedback>
                    </qti-assessment-item>
                  metadata:
                    subject: History
                    grade: '7'
                    standard: Chronology
                    lesson: American History Timeline
                    difficulty: medium
              xml-associate:
                summary: XML - Associate Example
                value:
                  format: xml
                  xml: |-
                    <?xml version="1.0" encoding="UTF-8"?>
                    <qti-assessment-item
                      xmlns="http://www.imsglobal.org/xsd/imsqtiasi_v3p0"
                      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
                      xsi:schemaLocation="http://www.imsglobal.org/xsd/imsqtiasi_v3p0 https://purl.imsglobal.org/spec/qti/v3p0/schema/xsd/imsqti_asiv3p0_v1p0.xsd"
                      identifier="xml-associate-item-1"
                      title="Robust Country–Capital Association Question"
                      adaptive="false"
                      time-dependent="false">

                      <qti-response-declaration identifier="RESPONSE" cardinality="multiple" base-type="directedPair">
                        <qti-correct-response>
                          <qti-value>C1 T1</qti-value>
                          <qti-value>C2 T2</qti-value>
                        </qti-correct-response>
                      </qti-response-declaration>

                      <qti-outcome-declaration identifier="FEEDBACK" cardinality="single" base-type="identifier"/>

                      <qti-assessment-stimulus-ref identifier="Stimulus1" href="stimuli/Stimulus1" title="Geography Context"/>

                      <qti-item-body>
                        <qti-associate-interaction response-identifier="RESPONSE" shuffle="false" max-associations="4">
                          <qti-prompt>Associate each country with its capital.</qti-prompt>
                          <qti-simple-associable-choice identifier="C1" match-max="1">France</qti-simple-associable-choice>
                          <qti-simple-associable-choice identifier="C2" match-max="1">Germany</qti-simple-associable-choice>
                          <qti-simple-associable-choice identifier="T1" match-max="1">Paris</qti-simple-associable-choice>
                          <qti-simple-associable-choice identifier="T2" match-max="1">Berlin</qti-simple-associable-choice>
                        </qti-associate-interaction>
                      </qti-item-body>

                      <qti-response-processing template="match_correct">
                        <qti-response-condition>
                          <qti-response-if>
                            <qti-match>
                              <qti-variable identifier="RESPONSE"/>
                              <qti-correct identifier="RESPONSE"/>
                            </qti-match>
                            <qti-set-outcome-value identifier="FEEDBACK">
                              <qti-base-value base-type="identifier">CORRECT</qti-base-value>
                            </qti-set-outcome-value>
                          </qti-response-if>
                          <qti-response-else>
                            <qti-set-outcome-value identifier="FEEDBACK">
                              <qti-base-value base-type="identifier">INCORRECT</qti-base-value>
                            </qti-set-outcome-value>
                          </qti-response-else>
                        </qti-response-condition>
                      </qti-response-processing>

                      <qti-modal-feedback outcome-identifier="FEEDBACK" identifier="CORRECT" show-hide="show">
                        <qti-content-body>
                          <p><strong>Correct!</strong> Well done.</p>
                        </qti-content-body>
                      </qti-modal-feedback>

                      <qti-modal-feedback outcome-identifier="FEEDBACK" identifier="INCORRECT" show-hide="show">
                        <qti-content-body>
                          <p><strong>Incorrect.</strong> Please review and try again.</p>
                        </qti-content-body>
                      </qti-modal-feedback>
                    </qti-assessment-item>
                  metadata:
                    subject: Geography
                    grade: '6'
                    standard: World Capitals
                    lesson: European Capitals
                    difficulty: medium
              xml-select-point:
                summary: XML - Select Point Example
                value:
                  format: xml
                  xml: |-
                    <?xml version="1.0" encoding="UTF-8"?>
                    <qti-assessment-item
                      xmlns="http://www.imsglobal.org/xsd/imsqtiasi_v3p0"
                      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
                      xsi:schemaLocation="http://www.imsglobal.org/xsd/imsqtiasi_v3p0 https://purl.imsglobal.org/spec/qti/v3p0/schema/xsd/imsqti_asiv3p0_v1p0.xsd"
                      identifier="xml-select-point-item-1"
                      title="Robust Map Location Selection Question"
                      adaptive="false"
                      time-dependent="false">

                      <qti-response-declaration identifier="RESPONSE" cardinality="multiple" base-type="point">
                        <qti-correct-response>
                          <qti-value>200 300</qti-value>
                          <qti-value>400 500</qti-value>
                        </qti-correct-response>
                      </qti-response-declaration>

                      <qti-outcome-declaration identifier="FEEDBACK" cardinality="single" base-type="identifier"/>

                      <qti-assessment-stimulus-ref identifier="Stimulus1" href="stimuli/Stimulus1" title="Geography Context"/>

                      <qti-item-body>
                        <qti-select-point-interaction response-identifier="RESPONSE" max-choices="2" min-choices="1">
                          <qti-prompt>Select two major cities on the map.</qti-prompt>
                          <object data="https://example.com/map-image.jpg" width="800" height="600" type="image/jpeg"/>
                        </qti-select-point-interaction>
                      </qti-item-body>

                      <qti-response-processing template="match_correct">
                        <qti-response-condition>
                          <qti-response-if>
                            <qti-match>
                              <qti-variable identifier="RESPONSE"/>
                              <qti-correct identifier="RESPONSE"/>
                            </qti-match>
                            <qti-set-outcome-value identifier="FEEDBACK">
                              <qti-base-value base-type="identifier">CORRECT</qti-base-value>
                            </qti-set-outcome-value>
                          </qti-response-if>
                          <qti-response-else>
                            <qti-set-outcome-value identifier="FEEDBACK">
                              <qti-base-value base-type="identifier">INCORRECT</qti-base-value>
                            </qti-set-outcome-value>
                          </qti-response-else>
                        </qti-response-condition>
                      </qti-response-processing>

                      <qti-modal-feedback outcome-identifier="FEEDBACK" identifier="CORRECT" show-hide="show">
                        <qti-content-body>
                          <p><strong>Correct!</strong> Well done.</p>
                        </qti-content-body>
                      </qti-modal-feedback>

                      <qti-modal-feedback outcome-identifier="FEEDBACK" identifier="INCORRECT" show-hide="show">
                        <qti-content-body>
                          <p><strong>Incorrect.</strong> Please review and try again.</p>
                        </qti-content-body>
                      </qti-modal-feedback>
                    </qti-assessment-item>
                  metadata:
                    subject: Geography
                    grade: '6'
                    standard: Map Skills
                    lesson: Major World Cities
                    difficulty: medium
              xml-graphic-order:
                summary: XML - Graphic Order Example
                value:
                  format: xml
                  xml: |-
                    <?xml version="1.0" encoding="UTF-8"?>
                    <qti-assessment-item
                      xmlns="http://www.imsglobal.org/xsd/imsqtiasi_v3p0"
                      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
                      xsi:schemaLocation="http://www.imsglobal.org/xsd/imsqtiasi_v3p0 https://purl.imsglobal.org/spec/qti/v3p0/schema/xsd/imsqti_asiv3p0_v1p0.xsd"
                      identifier="xml-graphic-order-item-1"
                      title="Robust Timeline Graphic Order Question"
                      adaptive="false"
                      time-dependent="false">

                      <qti-response-declaration identifier="RESPONSE" cardinality="ordered" base-type="identifier">
                        <qti-correct-response>
                          <qti-value>EVENT1</qti-value>
                          <qti-value>EVENT2</qti-value>
                          <qti-value>EVENT3</qti-value>
                        </qti-correct-response>
                      </qti-response-declaration>

                      <qti-outcome-declaration identifier="FEEDBACK" cardinality="single" base-type="identifier"/>

                      <qti-assessment-stimulus-ref identifier="Stimulus1" href="stimuli/Stimulus1" title="History Context"/>

                      <qti-item-body>
                        <qti-graphic-order-interaction response-identifier="RESPONSE" shuffle="true">
                          <qti-prompt>Order these 20th-century events chronologically on the timeline.</qti-prompt>
                          <object data="data:image/png;base64,PLACEHOLDER" width="800" height="400" type="image/png"/>
                          <qti-hotspot-choice identifier="EVENT1" shape="rect" coords="50,50,150,100" />
                          <qti-hotspot-choice identifier="EVENT2" shape="rect" coords="200,50,300,100" />
                          <qti-hotspot-choice identifier="EVENT3" shape="rect" coords="350,50,450,100" />
                        </qti-graphic-order-interaction>
                      </qti-item-body>

                      <qti-response-processing template="match_correct">
                        <qti-response-condition>
                          <qti-response-if>
                            <qti-match>
                              <qti-variable identifier="RESPONSE"/>
                              <qti-correct identifier="RESPONSE"/>
                            </qti-match>
                            <qti-set-outcome-value identifier="FEEDBACK">
                              <qti-base-value base-type="identifier">CORRECT</qti-base-value>
                            </qti-set-outcome-value>
                          </qti-response-if>
                          <qti-response-else>
                            <qti-set-outcome-value identifier="FEEDBACK">
                              <qti-base-value base-type="identifier">INCORRECT</qti-base-value>
                            </qti-set-outcome-value>
                          </qti-response-else>
                        </qti-response-condition>
                      </qti-response-processing>

                      <qti-modal-feedback outcome-identifier="FEEDBACK" identifier="CORRECT" show-hide="show">
                        <qti-content-body>
                          <p><strong>Correct!</strong> Well done.</p>
                        </qti-content-body>
                      </qti-modal-feedback>

                      <qti-modal-feedback outcome-identifier="FEEDBACK" identifier="INCORRECT" show-hide="show">
                        <qti-content-body>
                          <p><strong>Incorrect.</strong> Please review and try again.</p>
                        </qti-content-body>
                      </qti-modal-feedback>
                    </qti-assessment-item>
                  metadata:
                    subject: History
                    grade: '8'
                    standard: Chronology
                    lesson: 20th Century Events
                    difficulty: medium
              xml-graphic-associate:
                summary: XML - Graphic Associate Example
                value:
                  format: xml
                  xml: |-
                    <?xml version="1.0" encoding="UTF-8"?>
                    <qti-assessment-item
                      xmlns="http://www.imsglobal.org/xsd/imsqtiasi_v3p0"
                      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
                      xsi:schemaLocation="http://www.imsglobal.org/xsd/imsqtiasi_v3p0 https://purl.imsglobal.org/spec/qti/v3p0/schema/xsd/imsqti_asiv3p0_v1p0.xsd"
                      identifier="xml-graphic-associate-item-1"
                      title="Robust Map Landmark Association Question"
                      adaptive="false"
                      time-dependent="false">

                      <qti-response-declaration identifier="RESPONSE" cardinality="multiple" base-type="directedPair">
                        <qti-correct-response>
                          <qti-value>C1 C2</qti-value>
                        </qti-correct-response>
                      </qti-response-declaration>

                      <qti-outcome-declaration identifier="FEEDBACK" cardinality="single" base-type="identifier"/>

                      <qti-assessment-stimulus-ref identifier="Stimulus1" href="stimuli/Stimulus1" title="Geography Context"/>

                      <qti-item-body>
                        <qti-graphic-associate-interaction response-identifier="RESPONSE" max-associations="4">
                          <qti-prompt>Match city markers to landmarks.</qti-prompt>
                          <object data="data:image/png;base64,PLACEHOLDER" width="800" height="600" type="image/png"/>
                          <qti-associable-hotspot identifier="C1" shape="circle" coords="100,100,10" match-max="1" />
                          <qti-associable-hotspot identifier="C2" shape="circle" coords="200,200,10" match-max="1" />
                        </qti-graphic-associate-interaction>
                      </qti-item-body>

                      <qti-response-processing template="match_correct">
                        <qti-response-condition>
                          <qti-response-if>
                            <qti-match>
                              <qti-variable identifier="RESPONSE"/>
                              <qti-correct identifier="RESPONSE"/>
                            </qti-match>
                            <qti-set-outcome-value identifier="FEEDBACK">
                              <qti-base-value base-type="identifier">CORRECT</qti-base-value>
                            </qti-set-outcome-value>
                          </qti-response-if>
                          <qti-response-else>
                            <qti-set-outcome-value identifier="FEEDBACK">
                              <qti-base-value base-type="identifier">INCORRECT</qti-base-value>
                            </qti-set-outcome-value>
                          </qti-response-else>
                        </qti-response-condition>
                      </qti-response-processing>

                      <qti-modal-feedback outcome-identifier="FEEDBACK" identifier="CORRECT" show-hide="show">
                        <qti-content-body>
                          <p><strong>Correct!</strong> Well done.</p>
                        </qti-content-body>
                      </qti-modal-feedback>

                      <qti-modal-feedback outcome-identifier="FEEDBACK" identifier="INCORRECT" show-hide="show">
                        <qti-content-body>
                          <p><strong>Incorrect.</strong> Please review and try again.</p>
                        </qti-content-body>
                      </qti-modal-feedback>
                    </qti-assessment-item>
                  metadata:
                    subject: Geography
                    grade: '7'
                    standard: Cartography
                    lesson: Landmark Identification
                    difficulty: medium
              xml-graphic-gap-match:
                summary: XML - Graphic Gap Match Example
                value:
                  format: xml
                  xml: |-
                    <?xml version="1.0" encoding="UTF-8"?>
                    <qti-assessment-item
                      xmlns="http://www.imsglobal.org/xsd/imsqtiasi_v3p0"
                      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
                      xsi:schemaLocation="http://www.imsglobal.org/xsd/imsqtiasi_v3p0 https://purl.imsglobal.org/spec/qti/v3p0/schema/xsd/imsqti_asiv3p0_v1p0.xsd"
                      identifier="xml-graphic-gap-match-item-1"
                      title="Robust Graphic Gap Match Map Question"
                      adaptive="false"
                      time-dependent="false">

                      <qti-response-declaration identifier="RESPONSE" cardinality="multiple" base-type="directedPair">
                        <qti-correct-response>
                          <qti-value>GAP1 SPOT1</qti-value>
                          <qti-value>GAP2 SPOT2</qti-value>
                        </qti-correct-response>
                      </qti-response-declaration>

                      <qti-outcome-declaration identifier="FEEDBACK" cardinality="single" base-type="identifier"/>

                      <qti-assessment-stimulus-ref identifier="Stimulus1" href="stimuli/Stimulus1" title="Geography Context"/>

                      <qti-item-body>
                        <qti-graphic-gap-match-interaction response-identifier="RESPONSE" shuffle="false">
                          <qti-prompt>Drag each city label to its correct location on the map.</qti-prompt>
                          <object data="data:image/png;base64,PLACEHOLDER" width="800" height="600" type="image/png"/>
                          <qti-gap-img identifier="GAP1" match-max="1">
                            <object data="data:image/png;base64,PLACEHOLDER" width="50" height="30" type="image/png"/>
                          </qti-gap-img>
                          <qti-gap-img identifier="GAP2" match-max="1">
                            <object data="data:image/png;base64,PLACEHOLDER" width="50" height="30" type="image/png"/>
                          </qti-gap-img>
                          <qti-associable-hotspot identifier="SPOT1" shape="circle" coords="100,100,20" match-max="1"/>
                          <qti-associable-hotspot identifier="SPOT2" shape="rect" coords="200,200,250,250" match-max="1"/>
                        </qti-graphic-gap-match-interaction>
                      </qti-item-body>

                      <qti-response-processing template="match_correct">
                        <qti-response-condition>
                          <qti-response-if>
                            <qti-match>
                              <qti-variable identifier="RESPONSE"/>
                              <qti-correct identifier="RESPONSE"/>
                            </qti-match>
                            <qti-set-outcome-value identifier="FEEDBACK">
                              <qti-base-value base-type="identifier">CORRECT</qti-base-value>
                            </qti-set-outcome-value>
                          </qti-response-if>
                          <qti-response-else>
                            <qti-set-outcome-value identifier="FEEDBACK">
                              <qti-base-value base-type="identifier">INCORRECT</qti-base-value>
                            </qti-set-outcome-value>
                          </qti-response-else>
                        </qti-response-condition>
                      </qti-response-processing>

                      <qti-modal-feedback outcome-identifier="FEEDBACK" identifier="CORRECT" show-hide="show">
                        <qti-content-body>
                          <p><strong>Correct!</strong> Well done.</p>
                        </qti-content-body>
                      </qti-modal-feedback>

                      <qti-modal-feedback outcome-identifier="FEEDBACK" identifier="INCORRECT" show-hide="show">
                        <qti-content-body>
                          <p><strong>Incorrect.</strong> Please review and try again.</p>
                        </qti-content-body>
                      </qti-modal-feedback>
                    </qti-assessment-item>
                  metadata:
                    subject: Geography
                    grade: '7'
                    standard: Map Skills
                    lesson: Label Placement
                    difficulty: medium
              xml-hotspot:
                summary: XML - Hotspot Example
                value:
                  format: xml
                  xml: |-
                    <?xml version="1.0" encoding="UTF-8"?>
                    <qti-assessment-item
                      xmlns="http://www.imsglobal.org/xsd/imsqtiasi_v3p0"
                      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
                      xsi:schemaLocation="http://www.imsglobal.org/xsd/imsqtiasi_v3p0 https://purl.imsglobal.org/spec/qti/v3p0/schema/xsd/imsqti_asiv3p0_v1p0.xsd"
                      identifier="xml-hotspot-item-1"
                      title="Robust Region Selection Hotspot Question"
                      adaptive="false"
                      time-dependent="false">

                      <qti-response-declaration identifier="RESPONSE" cardinality="multiple" base-type="identifier">
                        <qti-correct-response>
                          <qti-value>REGION1</qti-value>
                          <qti-value>REGION2</qti-value>
                        </qti-correct-response>
                      </qti-response-declaration>

                      <qti-outcome-declaration identifier="FEEDBACK" cardinality="single" base-type="identifier"/>

                      <qti-assessment-stimulus-ref identifier="Stimulus1" href="stimuli/Stimulus1" title="Geography Context"/>

                      <qti-item-body>
                        <qti-hotspot-interaction response-identifier="RESPONSE" max-choices="2">
                          <qti-prompt>Select the two regions that are known for their historical landmarks.</qti-prompt>
                          <object data="data:image/png;base64,PLACEHOLDER" width="800" height="600" type="image/png"/>
                          <qti-hotspot-choice identifier="REGION1" shape="rect" coords="100,100,200,200"/>
                          <qti-hotspot-choice identifier="REGION2" shape="circle" coords="300,300,50"/>
                          <qti-hotspot-choice identifier="REGION3" shape="poly" coords="500,100,600,100,550,200"/>
                        </qti-hotspot-interaction>
                      </qti-item-body>

                      <qti-response-processing template="match_correct">
                        <qti-response-condition>
                          <qti-response-if>
                            <qti-match>
                              <qti-variable identifier="RESPONSE"/>
                              <qti-correct identifier="RESPONSE"/>
                            </qti-match>
                            <qti-set-outcome-value identifier="FEEDBACK">
                              <qti-base-value base-type="identifier">CORRECT</qti-base-value>
                            </qti-set-outcome-value>
                          </qti-response-if>
                          <qti-response-else>
                            <qti-set-outcome-value identifier="FEEDBACK">
                              <qti-base-value base-type="identifier">INCORRECT</qti-base-value>
                            </qti-set-outcome-value>
                          </qti-response-else>
                        </qti-response-condition>
                      </qti-response-processing>

                      <qti-modal-feedback outcome-identifier="FEEDBACK" identifier="CORRECT" show-hide="show">
                        <qti-content-body>
                          <p><strong>Correct!</strong> Well done.</p>
                        </qti-content-body>
                      </qti-modal-feedback>

                      <qti-modal-feedback outcome-identifier="FEEDBACK" identifier="INCORRECT" show-hide="show">
                        <qti-content-body>
                          <p><strong>Incorrect.</strong> Please review and try again.</p>
                        </qti-content-body>
                      </qti-modal-feedback>
                    </qti-assessment-item>
                  metadata:
                    subject: Geography
                    grade: '5'
                    standard: Map Skills
                    lesson: Landmark Regions
                    difficulty: easy
              xml-hottext:
                summary: XML - Hottext Example
                value:
                  format: xml
                  xml: |-
                    <?xml version="1.0" encoding="UTF-8"?>
                    <qti-assessment-item
                      xmlns="http://www.imsglobal.org/xsd/imsqtiasi_v3p0"
                      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
                      xsi:schemaLocation="http://www.imsglobal.org/xsd/imsqtiasi_v3p0 https://purl.imsglobal.org/spec/qti/v3p0/schema/xsd/imsqti_asiv3p0_v1p0.xsd"
                      identifier="xml-hottext-item-1"
                      title="Robust Hottext Reading Question"
                      adaptive="false"
                      time-dependent="false">

                      <qti-response-declaration identifier="RESPONSE" cardinality="multiple" base-type="identifier">
                        <qti-correct-response>
                          <qti-value>H1</qti-value>
                          <qti-value>H2</qti-value>
                        </qti-correct-response>
                      </qti-response-declaration>

                      <qti-outcome-declaration identifier="FEEDBACK" cardinality="single" base-type="identifier"/>

                      <qti-assessment-stimulus-ref identifier="Stimulus1" href="stimuli/Stimulus1" title="English Context"/>

                      <qti-item-body>
                        <qti-hottext-interaction response-identifier="RESPONSE">
                          <qti-prompt>Select the highlighted terms in the paragraph.</qti-prompt>
                          <p>This is a <qti-hottext identifier="H1">sample</qti-hottext> text with another <qti-hottext identifier="H2">example</qti-hottext>.</p>
                        </qti-hottext-interaction>
                      </qti-item-body>

                      <qti-response-processing template="match_correct">
                        <qti-response-condition>
                          <qti-response-if>
                            <qti-match>
                              <qti-variable identifier="RESPONSE"/>
                              <qti-correct identifier="RESPONSE"/>
                            </qti-match>
                            <qti-set-outcome-value identifier="FEEDBACK">
                              <qti-base-value base-type="identifier">CORRECT</qti-base-value>
                            </qti-set-outcome-value>
                          </qti-response-if>
                          <qti-response-else>
                            <qti-set-outcome-value identifier="FEEDBACK">
                              <qti-base-value base-type="identifier">INCORRECT</qti-base-value>
                            </qti-set-outcome-value>
                          </qti-response-else>
                        </qti-response-condition>
                      </qti-response-processing>

                      <qti-modal-feedback outcome-identifier="FEEDBACK" identifier="CORRECT" show-hide="show" title="Great Job!">
                        <qti-content-body>
                          <p>You correctly selected all highlighted terms.</p>
                        </qti-content-body>
                      </qti-modal-feedback>

                      <qti-modal-feedback outcome-identifier="FEEDBACK" identifier="INCORRECT" show-hide="show" title="Review Needed">
                        <qti-content-body>
                          <p>Please reread the passage and select the highlighted words.</p>
                        </qti-content-body>
                      </qti-modal-feedback>
                    </qti-assessment-item>
                  metadata:
                    subject: ELA
                    grade: '6'
                    standard: Reading Comprehension
                    lesson: Vocabulary in Context
                    difficulty: medium
              xml-slider:
                summary: XML - Slider Example
                value:
                  format: xml
                  xml: |-
                    <?xml version="1.0" encoding="UTF-8"?>
                    <qti-assessment-item
                      xmlns="http://www.imsglobal.org/xsd/imsqtiasi_v3p0"
                      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
                      xsi:schemaLocation="http://www.imsglobal.org/xsd/imsqtiasi_v3p0 https://purl.imsglobal.org/spec/qti/v3p0/schema/xsd/imsqti_asiv3p0_v1p0.xsd"
                      identifier="xml-slider-item-1"
                      title="Robust Temperature Slider Question"
                      adaptive="false"
                      time-dependent="false">

                      <qti-response-declaration identifier="RESPONSE" cardinality="single" base-type="float">
                        <qti-correct-response>
                          <qti-value>20</qti-value>
                        </qti-correct-response>
                      </qti-response-declaration>

                      <qti-outcome-declaration identifier="FEEDBACK" cardinality="single" base-type="identifier"/>

                      <qti-assessment-stimulus-ref identifier="Stimulus1" href="stimuli/Stimulus1" title="Science Context"/>

                      <qti-item-body>
                        <qti-slider-interaction response-identifier="RESPONSE" lower-bound="0" upper-bound="50" step="1" orientation="horizontal">
                          <qti-prompt>Set the slider to room temperature in Celsius.</qti-prompt>
                        </qti-slider-interaction>
                      </qti-item-body>

                      <qti-response-processing template="match_correct">
                        <qti-response-condition>
                          <qti-response-if>
                            <qti-match>
                              <qti-variable identifier="RESPONSE"/>
                              <qti-correct identifier="RESPONSE"/>
                            </qti-match>
                            <qti-set-outcome-value identifier="FEEDBACK">
                              <qti-base-value base-type="identifier">CORRECT</qti-base-value>
                            </qti-set-outcome-value>
                          </qti-response-if>
                          <qti-response-else>
                            <qti-set-outcome-value identifier="FEEDBACK">
                              <qti-base-value base-type="identifier">INCORRECT</qti-base-value>
                            </qti-set-outcome-value>
                          </qti-response-else>
                        </qti-response-condition>
                      </qti-response-processing>

                      <qti-modal-feedback outcome-identifier="FEEDBACK" identifier="CORRECT" show-hide="show">
                        <qti-content-body>
                          <p><strong>Correct!</strong> Well done.</p>
                        </qti-content-body>
                      </qti-modal-feedback>

                      <qti-modal-feedback outcome-identifier="FEEDBACK" identifier="INCORRECT" show-hide="show">
                        <qti-content-body>
                          <p><strong>Incorrect.</strong> Please review and try again.</p>
                        </qti-content-body>
                      </qti-modal-feedback>
                    </qti-assessment-item>
                  metadata:
                    subject: Science
                    grade: '5'
                    standard: Thermodynamics
                    lesson: Temperature Scales
                    difficulty: medium
              xml-drawing:
                summary: XML - Drawing Example
                value:
                  format: xml
                  xml: |-
                    <?xml version="1.0" encoding="UTF-8"?>
                    <qti-assessment-item
                      xmlns="http://www.imsglobal.org/xsd/imsqtiasi_v3p0"
                      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
                      xsi:schemaLocation="http://www.imsglobal.org/xsd/imsqtiasi_v3p0 https://purl.imsglobal.org/spec/qti/v3p0/schema/xsd/imsqti_asiv3p0_v1p0.xsd"
                      identifier="xml-drawing-item-1"
                      title="Robust Drawing Task"
                      adaptive="false"
                      time-dependent="false">

                      <qti-response-declaration identifier="RESPONSE" cardinality="single" base-type="file">
                        <qti-correct-response>
                          <qti-value></qti-value>
                        </qti-correct-response>
                      </qti-response-declaration>

                      <qti-outcome-declaration identifier="FEEDBACK" cardinality="single" base-type="identifier"/>

                      <qti-assessment-stimulus-ref identifier="Stimulus1" href="stimuli/Stimulus1" title="Art Context"/>

                      <qti-item-body>
                        <qti-drawing-interaction response-identifier="RESPONSE">
                          <qti-prompt>Draw a simple house with a door and two windows.</qti-prompt>
                          <object data="data:image/png;base64,PLACEHOLDER" width="800" height="600" type="image/png"/>
                        </qti-drawing-interaction>
                      </qti-item-body>

                      <qti-response-processing template="map_response">
                        <qti-response-condition>
                          <qti-response-if>
                            <qti-not>
                              <qti-is-null>
                                <qti-variable identifier="RESPONSE"/>
                              </qti-is-null>
                            </qti-not>
                            <qti-set-outcome-value identifier="FEEDBACK">
                              <qti-base-value base-type="identifier">SUBMITTED</qti-base-value>
                            </qti-set-outcome-value>
                          </qti-response-if>
                        </qti-response-condition>
                      </qti-response-processing>

                      <qti-modal-feedback outcome-identifier="FEEDBACK" identifier="CORRECT" show-hide="show">
                        <qti-content-body>
                          <p><strong>Correct!</strong> Well done.</p>
                        </qti-content-body>
                      </qti-modal-feedback>

                      <qti-modal-feedback outcome-identifier="FEEDBACK" identifier="INCORRECT" show-hide="show">
                        <qti-content-body>
                          <p><strong>Incorrect.</strong> Please review and try again.</p>
                        </qti-content-body>
                      </qti-modal-feedback>
                    </qti-assessment-item>
                  metadata:
                    subject: Art
                    grade: '6'
                    standard: Creative Expression
                    lesson: Basic Shapes
                    difficulty: easy
              xml-media:
                summary: XML - Media Example
                value:
                  format: xml
                  xml: |-
                    <?xml version="1.0" encoding="UTF-8"?>
                    <qti-assessment-item
                      xmlns="http://www.imsglobal.org/xsd/imsqtiasi_v3p0"
                      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
                      xsi:schemaLocation="http://www.imsglobal.org/xsd/imsqtiasi_v3p0 https://purl.imsglobal.org/spec/qti/v3p0/schema/xsd/imsqti_asiv3p0_v1p0.xsd"
                      identifier="xml-media-item-1"
                      title="Robust Media Analysis Question"
                      adaptive="false"
                      time-dependent="false">

                      <qti-response-declaration identifier="RESPONSE" cardinality="single" base-type="string">
                        <qti-correct-response>
                          <qti-value>Inertia</qti-value>
                        </qti-correct-response>
                      </qti-response-declaration>

                      <qti-outcome-declaration identifier="FEEDBACK" cardinality="single" base-type="identifier"/>

                      <qti-assessment-stimulus-ref identifier="Stimulus1" href="stimuli/Stimulus1" title="Physics Context"/>

                      <qti-item-body>
                        <qti-media-interaction response-identifier="RESPONSE" autostart="true" min-plays="0" max-plays="2" loop="false">
                          <qti-prompt>Watch the video and identify the key concept.</qti-prompt>
                          <object data="https://example.com/sample-video.mp4" width="640" height="360" type="video/mp4"/>
                        </qti-media-interaction>
                      </qti-item-body>

                      <qti-response-processing template="match_correct">
                        <qti-response-condition>
                          <qti-response-if>
                            <qti-match>
                              <qti-variable identifier="RESPONSE"/>
                              <qti-correct identifier="RESPONSE"/>
                            </qti-match>
                            <qti-set-outcome-value identifier="FEEDBACK">
                              <qti-base-value base-type="identifier">CORRECT</qti-base-value>
                            </qti-set-outcome-value>
                          </qti-response-if>
                          <qti-response-else>
                            <qti-set-outcome-value identifier="FEEDBACK">
                              <qti-base-value base-type="identifier">INCORRECT</qti-base-value>
                            </qti-set-outcome-value>
                          </qti-response-else>
                        </qti-response-condition>
                      </qti-response-processing>

                      <qti-modal-feedback outcome-identifier="FEEDBACK" identifier="CORRECT" show-hide="show">
                        <qti-content-body>
                          <p><strong>Correct!</strong> Well done.</p>
                        </qti-content-body>
                      </qti-modal-feedback>

                      <qti-modal-feedback outcome-identifier="FEEDBACK" identifier="INCORRECT" show-hide="show">
                        <qti-content-body>
                          <p><strong>Incorrect.</strong> Please review and try again.</p>
                        </qti-content-body>
                      </qti-modal-feedback>
                    </qti-assessment-item>
                  metadata:
                    subject: Science
                    grade: '8'
                    standard: Physics – Motion
                    lesson: Newton's Laws
                    difficulty: medium
              xml-upload:
                summary: XML - Upload Example
                value:
                  format: xml
                  xml: |-
                    <?xml version="1.0" encoding="UTF-8"?>
                    <qti-assessment-item
                      xmlns="http://www.imsglobal.org/xsd/imsqtiasi_v3p0"
                      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
                      xsi:schemaLocation="http://www.imsglobal.org/xsd/imsqtiasi_v3p0 https://purl.imsglobal.org/spec/qti/v3p0/schema/xsd/imsqti_asiv3p0_v1p0.xsd"
                      identifier="xml-upload-item-1"
                      title="Robust File Upload Question"
                      adaptive="false"
                      time-dependent="false">

                      <qti-response-declaration identifier="RESPONSE" cardinality="single" base-type="string">
                        <qti-correct-response>
                          <qti-value></qti-value>
                        </qti-correct-response>
                      </qti-response-declaration>

                      <qti-outcome-declaration identifier="FEEDBACK" cardinality="single" base-type="identifier"/>

                      <qti-assessment-stimulus-ref identifier="Stimulus-Upload1" href="stimuli/Stimulus-Upload1" title="English Context"/>

                      <qti-item-body>
                        <qti-upload-interaction response-identifier="RESPONSE">
                          <qti-prompt>Upload your completed persuasive essay as a PDF.</qti-prompt>
                        </qti-upload-interaction>
                      </qti-item-body>

                      <qti-response-processing template="map_response">
                        <qti-response-condition>
                          <qti-response-if>
                            <qti-not>
                              <qti-is-null>
                                <qti-variable identifier="RESPONSE"/>
                              </qti-is-null>
                            </qti-not>
                            <qti-set-outcome-value identifier="FEEDBACK">
                              <qti-base-value base-type="identifier">SUBMITTED</qti-base-value>
                            </qti-set-outcome-value>
                          </qti-response-if>
                        </qti-response-condition>
                      </qti-response-processing>

                      <qti-modal-feedback outcome-identifier="FEEDBACK" identifier="CORRECT" show-hide="show">
                        <qti-content-body>
                          <p><strong>Correct!</strong> Well done.</p>
                        </qti-content-body>
                      </qti-modal-feedback>

                      <qti-modal-feedback outcome-identifier="FEEDBACK" identifier="INCORRECT" show-hide="show">
                        <qti-content-body>
                          <p><strong>Incorrect.</strong> Please review and try again.</p>
                        </qti-content-body>
                      </qti-modal-feedback>
                    </qti-assessment-item>
                  metadata:
                    subject: English
                    grade: '7'
                    standard: Writing Assessment
                    lesson: Persuasive Essay
                    difficulty: hard
              xml-gap-match:
                summary: XML - Gap Match Example
                value:
                  format: xml
                  xml: |-
                    <?xml version="1.0" encoding="UTF-8"?>
                    <qti-assessment-item
                      xmlns="http://www.imsglobal.org/xsd/imsqtiasi_v3p0"
                      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
                      xsi:schemaLocation="http://www.imsglobal.org/xsd/imsqtiasi_v3p0 https://purl.imsglobal.org/spec/qti/v3p0/schema/xsd/imsqti_asiv3p0_v1p0.xsd"
                      identifier="xml-gap-match-item-1"
                      title="Robust Text Gap Match Question"
                      adaptive="false"
                      time-dependent="false">

                      <qti-response-declaration identifier="RESPONSE" cardinality="multiple" base-type="directedPair">
                        <qti-correct-response>
                          <qti-value>DRAG1 GAP1</qti-value>
                          <qti-value>DRAG2 GAP2</qti-value>
                          <qti-value>DRAG3 GAP3</qti-value>
                        </qti-correct-response>
                      </qti-response-declaration>

                      <qti-outcome-declaration identifier="FEEDBACK" cardinality="single" base-type="identifier"/>

                      <qti-assessment-stimulus-ref identifier="Stimulus1" href="stimuli/Stimulus1" title="Science Context"/>

                      <qti-item-body>
                        <qti-gap-match-interaction response-identifier="RESPONSE" shuffle="true">
                          <qti-prompt>Drag the correct words to complete the sentences about the water cycle.</qti-prompt>

                          <qti-gap-text identifier="DRAG1" match-max="1">evaporation</qti-gap-text>
                          <qti-gap-text identifier="DRAG2" match-max="1">condensation</qti-gap-text>
                          <qti-gap-text identifier="DRAG3" match-max="1">precipitation</qti-gap-text>
                          <qti-gap-text identifier="DRAG4" match-max="1">sublimation</qti-gap-text>

                          <p>The water cycle consists of several key processes:</p>
                          <ol>
                            <li><p>When water heats up and turns into vapor, this process is called <qti-gap identifier="GAP1" required="true"/>.</p></li>
                            <li><p>When water vapor cools and forms droplets in clouds, this is called <qti-gap identifier="GAP2" required="true"/>.</p></li>
                            <li><p>When water falls from clouds as rain, snow, or hail, this is called <qti-gap identifier="GAP3" required="true"/>.</p></li>
                          </ol>
                        </qti-gap-match-interaction>
                      </qti-item-body>

                      <qti-response-processing template="match_correct">
                        <qti-response-condition>
                          <qti-response-if>
                            <qti-match>
                              <qti-variable identifier="RESPONSE"/>
                              <qti-correct identifier="RESPONSE"/>
                            </qti-match>
                            <qti-set-outcome-value identifier="FEEDBACK">
                              <qti-base-value base-type="identifier">CORRECT</qti-base-value>
                            </qti-set-outcome-value>
                          </qti-response-if>
                          <qti-response-else>
                            <qti-set-outcome-value identifier="FEEDBACK">
                              <qti-base-value base-type="identifier">INCORRECT</qti-base-value>
                            </qti-set-outcome-value>
                          </qti-response-else>
                        </qti-response-condition>
                      </qti-response-processing>

                      <qti-modal-feedback outcome-identifier="FEEDBACK" identifier="CORRECT" show-hide="show">
                        <qti-content-body>
                          <p><strong>Excellent!</strong> You correctly identified all the water cycle processes.</p>
                        </qti-content-body>
                      </qti-modal-feedback>

                      <qti-modal-feedback outcome-identifier="FEEDBACK" identifier="INCORRECT" show-hide="show">
                        <qti-content-body>
                          <p><strong>Try again.</strong> Review the definitions of each water cycle process.</p>
                        </qti-content-body>
                      </qti-modal-feedback>
                    </qti-assessment-item>
                  metadata:
                    subject: Science
                    grade: '4'
                    standard: Earth Science
                    lesson: Water Cycle
                    difficulty: medium
              json-choice:
                summary: JSON - Choice Example (Experimental)
                value:
                  format: json
                  identifier: choice-item-1
                  type: choice
                  title: Sample Choice Question
                  metadata:
                    subject: Math
                    grade: '5'
                    standard: Number Operations
                    lesson: Basic Addition
                    difficulty: hard
                  interaction:
                    type: choice
                    responseIdentifier: RESPONSE
                    shuffle: false
                    maxChoices: 1
                    questionStructure:
                      prompt: What is 2 + 2?
                      choices:
                        - identifier: A
                          content: '3'
                          feedbackInline: >-
                            <span style="color: #D9534F;">Incorrect: Try
                            counting again.</span>
                          feedbackOutcomeIdentifier: FEEDBACK-INLINE
                        - identifier: B
                          content: '4'
                          feedbackInline: >-
                            <span style="color: #2E8B57;">Correct: Well
                            done!</span>
                          feedbackOutcomeIdentifier: FEEDBACK-INLINE
                  responseDeclarations:
                    - identifier: RESPONSE
                      cardinality: single
                      baseType: identifier
                      correctResponse:
                        value:
                          - B
                  outcomeDeclarations:
                    - identifier: FEEDBACK
                      cardinality: single
                      baseType: identifier
                    - identifier: FEEDBACK-INLINE
                      cardinality: single
                      baseType: identifier
                  responseProcessing:
                    templateType: match_correct
                    responseDeclarationIdentifier: RESPONSE
                    outcomeIdentifier: FEEDBACK
                    correctResponseIdentifier: CORRECT
                    incorrectResponseIdentifier: INCORRECT
                  feedbackBlock:
                    - outcomeIdentifier: FEEDBACK
                      identifier: CORRECT
                      showHide: show
                      content: <p><strong>Correct!</strong> Well done.</p>
                    - outcomeIdentifier: FEEDBACK
                      identifier: INCORRECT
                      showHide: show
                      content: >-
                        <p><strong>Incorrect.</strong> Please review and try
                        again.</p>
                  rubrics:
                    - use: ext:criteria
                      view: scorer
                      body: >-
                        <p>Grading Criteria:</p><ul><li>The response must
                        correctly identify 4 as the answer.</li><li>Partial
                        credit may be awarded for showing work.</li></ul>
                  stimulus:
                    identifier: Stimulus1
              json-text-entry:
                summary: JSON - Text Entry Example (Experimental)
                value:
                  format: json
                  identifier: text-entry-item-1
                  type: text-entry
                  title: Robust Text Entry Question
                  metadata:
                    subject: Geography
                    grade: '5'
                    standard: World Capitals
                    lesson: European Capitals
                    difficulty: easy
                  interaction:
                    type: text-entry
                    responseIdentifier: RESPONSE
                    attributes:
                      expected-length: 5
                      pattern-mask: '[A-Za-z]+'
                      placeholder: Enter city name
                    questionStructure:
                      prompt: What is the capital of France?
                  responseDeclarations:
                    - identifier: RESPONSE
                      cardinality: single
                      baseType: string
                      correctResponse:
                        value:
                          - Paris
                  outcomeDeclarations:
                    - identifier: FEEDBACK
                      cardinality: single
                      baseType: identifier
                    - identifier: FEEDBACK-INLINE
                      cardinality: single
                      baseType: identifier
                  responseProcessing:
                    templateType: match_correct
                    responseDeclarationIdentifier: RESPONSE
                    outcomeIdentifier: FEEDBACK
                    correctResponseIdentifier: CORRECT
                    incorrectResponseIdentifier: INCORRECT
                  feedbackInline:
                    - outcomeIdentifier: FEEDBACK-INLINE
                      identifier: A
                      showHide: show
                      content: >-
                        <span style="color:#D9534F;">Incorrect: The capital of
                        France is Paris.</span>
                      class:
                        - text-danger
                    - outcomeIdentifier: FEEDBACK-INLINE
                      identifier: B
                      showHide: show
                      content: <span style="color:#2E8B57;">Correct!</span>
                      class:
                        - text-success
                  rubrics:
                    - use: ext:criteria
                      view: scorer
                      body: >-
                        <p>Rubric: Award credit for the exact answer
                        &quot;Paris&quot;.</p>
                  stimulus:
                    identifier: Stimulus1
              json-extended-text:
                summary: JSON - Extended Text Example (Experimental)
                value:
                  format: json
                  identifier: extended-text-item-1
                  type: extended-text
                  title: Robust Extended Text Essay Question
                  metadata:
                    subject: ELA
                    grade: '8'
                    standard: Writing
                    lesson: Personal Narrative
                    difficulty: hard
                  interaction:
                    type: extended-text
                    responseIdentifier: RESPONSE
                    questionStructure:
                      prompt: Write a short essay about your favorite book.
                      expectedLength: 200
                      expectedLines: 10
                      format: plain
                      maxStrings: 1
                      minStrings: 1
                      patternMask: '[a-zA-Z0-9\s\p{P}]*'
                  responseDeclarations:
                    - identifier: RESPONSE
                      cardinality: single
                      baseType: string
                      correctResponse:
                        value:
                          - ''
                  outcomeDeclarations:
                    - identifier: FEEDBACK
                      cardinality: single
                      baseType: identifier
                    - identifier: FEEDBACK-INLINE
                      cardinality: single
                      baseType: identifier
                  responseProcessing:
                    templateType: map_response
                    responseDeclarationIdentifier: RESPONSE
                    outcomeIdentifier: SCORE
                    correctResponseIdentifier: ''
                    incorrectResponseIdentifier: ''
                  modalFeedback:
                    - outcomeIdentifier: SCORE
                      identifier: COMPLETED
                      showHide: show
                      title: Essay Submitted
                      content: >-
                        <p>Your essay has been submitted and will be scored
                        shortly.</p>
                  rubrics:
                    - use: ext:criteria
                      view: scorer
                      body: >-
                        <p>Rubric: Essays will be scored on idea development,
                        organization, voice, word choice, sentence fluency, and
                        conventions.</p>
                  stimulus:
                    identifier: Stimulus1
              json-inline-choice:
                summary: JSON - Inline Choice Example (Experimental)
                value:
                  format: json
                  identifier: inline-choice-item-1
                  type: inline-choice
                  title: Robust Inline Choice Cloze Question
                  metadata:
                    subject: Geography
                    grade: '4'
                    standard: World Capitals
                    lesson: European Capitals
                    difficulty: easy
                  interaction:
                    type: inline-choice
                    responseIdentifier: RESPONSE
                    questionStructure:
                      prompt: The capital of France is _____.
                      inlineChoices:
                        - identifier: A
                          content: London
                        - identifier: B
                          content: Paris
                        - identifier: C
                          content: Berlin
                        - identifier: D
                          content: Madrid
                  responseDeclarations:
                    - identifier: RESPONSE
                      cardinality: single
                      baseType: identifier
                      correctResponse:
                        value:
                          - B
                  outcomeDeclarations:
                    - identifier: FEEDBACK
                      cardinality: single
                      baseType: identifier
                    - identifier: FEEDBACK-INLINE
                      cardinality: single
                      baseType: identifier
                  responseProcessing:
                    templateType: match_correct
                    responseDeclarationIdentifier: RESPONSE
                    outcomeIdentifier: FEEDBACK
                    correctResponseIdentifier: CORRECT
                    incorrectResponseIdentifier: INCORRECT
                  feedbackBlock:
                    - outcomeIdentifier: FEEDBACK
                      identifier: CORRECT
                      showHide: show
                      content: <p><strong>Correct!</strong> Well done.</p>
                    - outcomeIdentifier: FEEDBACK
                      identifier: INCORRECT
                      showHide: show
                      content: >-
                        <p><strong>Incorrect.</strong> Please review and try
                        again.</p>
                  rubrics:
                    - use: ext:criteria
                      view: scorer
                      body: '<p>Rubric: Award full credit for selecting "Paris".</p>'
                  stimulus:
                    identifier: Stimulus1
              json-match:
                summary: JSON - Match Example (Experimental)
                value:
                  format: json
                  identifier: match-item-1
                  type: match
                  title: Robust Country-Capital Match Question
                  metadata:
                    subject: Geography
                    grade: '6'
                    standard: World Capitals
                    lesson: European Geography
                    difficulty: medium
                  interaction:
                    type: match
                    responseIdentifier: RESPONSE
                    shuffle: true
                    maxAssociations: 4
                    questionStructure:
                      prompt: Match each country with its capital.
                      sourceChoices:
                        - identifier: C1
                          content: France
                        - identifier: C2
                          content: Germany
                        - identifier: C3
                          content: Italy
                        - identifier: C4
                          content: Spain
                      targetChoices:
                        - identifier: T1
                          content: Paris
                        - identifier: T2
                          content: Berlin
                        - identifier: T3
                          content: Rome
                        - identifier: T4
                          content: Madrid
                  responseDeclarations:
                    - identifier: RESPONSE
                      cardinality: multiple
                      baseType: directedPair
                      correctResponse:
                        value:
                          - - C1
                            - T1
                          - - C2
                            - T2
                          - - C3
                            - T3
                          - - C4
                            - T4
                  outcomeDeclarations:
                    - identifier: FEEDBACK
                      cardinality: single
                      baseType: identifier
                    - identifier: FEEDBACK-INLINE
                      cardinality: single
                      baseType: identifier
                  responseProcessing:
                    templateType: match_correct
                    responseDeclarationIdentifier: RESPONSE
                    outcomeIdentifier: FEEDBACK
                    correctResponseIdentifier: CORRECT
                    incorrectResponseIdentifier: INCORRECT
                  feedbackBlock:
                    - outcomeIdentifier: FEEDBACK
                      identifier: CORRECT
                      showHide: show
                      content: <p><strong>Correct!</strong> Well done.</p>
                    - outcomeIdentifier: FEEDBACK
                      identifier: INCORRECT
                      showHide: show
                      content: >-
                        <p><strong>Incorrect.</strong> Please review and try
                        again.</p>
                  rubrics:
                    - use: ext:criteria
                      view: scorer
                      body: >-
                        <p>Rubric: Full credit requires correctly matching all
                        four pairs.</p>
                  stimulus:
                    - identifier: Stimulus1
                    - identifier: Stimulus2
              json-order:
                summary: JSON - Order Example (Experimental)
                value:
                  format: json
                  identifier: order-item-1
                  type: order
                  title: Robust Historical Events Ordering Question
                  metadata:
                    subject: History
                    grade: '7'
                    standard: Chronology
                    lesson: American History Timeline
                    difficulty: medium
                  interaction:
                    type: order
                    responseIdentifier: RESPONSE
                    shuffle: true
                    orientation: vertical
                    questionStructure:
                      prompt: >-
                        Place these historical events in chronological order
                        (earliest to latest).
                      choices:
                        - identifier: C1
                          content: Declaration of Independence (1776)
                        - identifier: C2
                          content: Constitution Ratified (1788)
                        - identifier: C3
                          content: Louisiana Purchase (1803)
                        - identifier: C4
                          content: Civil War Begins (1861)
                  responseDeclarations:
                    - identifier: RESPONSE
                      cardinality: ordered
                      baseType: identifier
                      correctResponse:
                        value:
                          - C1
                          - C2
                          - C3
                          - C4
                  outcomeDeclarations:
                    - identifier: FEEDBACK
                      cardinality: single
                      baseType: identifier
                    - identifier: FEEDBACK-INLINE
                      cardinality: single
                      baseType: identifier
                  responseProcessing:
                    templateType: match_correct
                    responseDeclarationIdentifier: RESPONSE
                    outcomeIdentifier: FEEDBACK
                    correctResponseIdentifier: CORRECT
                    incorrectResponseIdentifier: INCORRECT
                  feedbackBlock:
                    - outcomeIdentifier: FEEDBACK
                      identifier: CORRECT
                      showHide: show
                      content: <p><strong>Correct!</strong> Well done.</p>
                    - outcomeIdentifier: FEEDBACK
                      identifier: INCORRECT
                      showHide: show
                      content: >-
                        <p><strong>Incorrect.</strong> Please review and try
                        again.</p>
                  rubrics:
                    - use: ext:criteria
                      view: scorer
                      body: >-
                        <p>Rubric: Full credit requires correct chronological
                        ordering.</p>
                  stimulus:
                    identifier: Stimulus1
              json-associate:
                summary: JSON - Associate Example (Experimental)
                value:
                  format: json
                  identifier: associate-item-1
                  type: associate
                  title: Robust Country–Capital Association Question
                  metadata:
                    subject: Geography
                    grade: '6'
                    standard: World Capitals
                    lesson: European Capitals
                    difficulty: medium
                  interaction:
                    type: associate
                    responseIdentifier: RESPONSE
                    shuffle: false
                    maxAssociations: 4
                    questionStructure:
                      prompt: Associate each country with its capital.
                      sourceChoices:
                        - identifier: C1
                          content: France
                        - identifier: C2
                          content: Germany
                      targetChoices:
                        - identifier: T1
                          content: Paris
                        - identifier: T2
                          content: Berlin
                  responseDeclarations:
                    - identifier: RESPONSE
                      cardinality: multiple
                      baseType: directedPair
                      correctResponse:
                        value:
                          - - C1
                            - T1
                          - - C2
                            - T2
                  outcomeDeclarations:
                    - identifier: FEEDBACK
                      cardinality: single
                      baseType: identifier
                    - identifier: FEEDBACK-INLINE
                      cardinality: single
                      baseType: identifier
                  responseProcessing:
                    templateType: match_correct
                    responseDeclarationIdentifier: RESPONSE
                    outcomeIdentifier: FEEDBACK
                    correctResponseIdentifier: CORRECT
                    incorrectResponseIdentifier: INCORRECT
                  feedbackBlock:
                    - outcomeIdentifier: FEEDBACK
                      identifier: CORRECT
                      showHide: show
                      content: <p><strong>Correct!</strong> Well done.</p>
                    - outcomeIdentifier: FEEDBACK
                      identifier: INCORRECT
                      showHide: show
                      content: >-
                        <p><strong>Incorrect.</strong> Please review and try
                        again.</p>
                  rubrics:
                    - use: ext:criteria
                      view: scorer
                      body: >-
                        <p>Rubric: Award points for each correct country–capital
                        pair.</p>
                  stimulus:
                    - identifier: Stimulus1
                    - identifier: Stimulus2
              json-select-point:
                summary: JSON - Select Point Example (Experimental)
                value:
                  format: json
                  identifier: select-point-item-1
                  type: select-point
                  title: Robust Map Location Selection Question
                  metadata:
                    subject: Geography
                    grade: '6'
                    standard: Map Skills
                    lesson: Major World Cities
                    difficulty: medium
                  interaction:
                    type: select-point
                    responseIdentifier: RESPONSE
                    maxChoices: 2
                    minChoices: 1
                    questionStructure:
                      prompt: Select two major cities on the map.
                      object:
                        data: https://example.com/map-image.jpg
                        width: 800
                        height: 600
                        type: image/jpeg
                        mediaType: image/jpeg
                  responseDeclarations:
                    - identifier: RESPONSE
                      cardinality: multiple
                      baseType: point
                      correctResponse:
                        value:
                          - 200 300
                          - 400 500
                  outcomeDeclarations:
                    - identifier: FEEDBACK
                      cardinality: single
                      baseType: identifier
                    - identifier: FEEDBACK-INLINE
                      cardinality: single
                      baseType: identifier
                  responseProcessing:
                    templateType: match_correct
                    responseDeclarationIdentifier: RESPONSE
                    outcomeIdentifier: FEEDBACK
                    correctResponseIdentifier: CORRECT
                    incorrectResponseIdentifier: INCORRECT
                  feedbackBlock:
                    - outcomeIdentifier: FEEDBACK
                      identifier: CORRECT
                      showHide: show
                      content: <p><strong>Correct!</strong> Well done.</p>
                    - outcomeIdentifier: FEEDBACK
                      identifier: INCORRECT
                      showHide: show
                      content: >-
                        <p><strong>Incorrect.</strong> Please review and try
                        again.</p>
                  rubrics:
                    - use: ext:criteria
                      view: scorer
                      body: >-
                        <p>Rubric: Full credit requires selecting both city
                        points accurately.</p>
                  stimulus:
                    identifier: Stimulus1
              json-graphic-order:
                summary: JSON - Graphic Order Example (Experimental)
                value:
                  format: json
                  identifier: graphic-order-item-1
                  type: graphic-order
                  title: Robust Timeline Graphic Order Question
                  metadata:
                    subject: History
                    grade: '8'
                    standard: Chronology
                    lesson: 20th Century Events
                    difficulty: medium
                  interaction:
                    type: graphic-order
                    responseIdentifier: RESPONSE
                    shuffle: true
                    questionStructure:
                      prompt: >-
                        Order these 20th-century events chronologically on the
                        timeline.
                      object:
                        data: data:image/png;base64,PLACEHOLDER
                        width: 800
                        height: 400
                        type: image/png
                        mediaType: image/png
                      orderChoices:
                        - identifier: EVENT1
                          label: World War I (1914)
                          shape: rect
                          coords: 50,50,150,100
                        - identifier: EVENT2
                          label: Great Depression (1929)
                          shape: rect
                          coords: 200,50,300,100
                        - identifier: EVENT3
                          label: Moon Landing (1969)
                          shape: rect
                          coords: 350,50,450,100
                  responseDeclarations:
                    - identifier: RESPONSE
                      cardinality: ordered
                      baseType: identifier
                      correctResponse:
                        value:
                          - EVENT1
                          - EVENT2
                          - EVENT3
                  outcomeDeclarations:
                    - identifier: FEEDBACK
                      cardinality: single
                      baseType: identifier
                    - identifier: FEEDBACK-INLINE
                      cardinality: single
                      baseType: identifier
                  responseProcessing:
                    templateType: match_correct
                    responseDeclarationIdentifier: RESPONSE
                    outcomeIdentifier: FEEDBACK
                    correctResponseIdentifier: CORRECT
                    incorrectResponseIdentifier: INCORRECT
                  feedbackBlock:
                    - outcomeIdentifier: FEEDBACK
                      identifier: CORRECT
                      showHide: show
                      content: <p><strong>Correct!</strong> Well done.</p>
                    - outcomeIdentifier: FEEDBACK
                      identifier: INCORRECT
                      showHide: show
                      content: >-
                        <p><strong>Incorrect.</strong> Please review and try
                        again.</p>
                  rubrics:
                    - use: ext:criteria
                      view: scorer
                      body: >-
                        <p>Rubric: Full credit for correct chronological
                        ordering of all events.</p>
                  stimulus:
                    identifier: Stimulus1
              json-graphic-associate:
                summary: JSON - Graphic Associate Example (Experimental)
                value:
                  format: json
                  identifier: graphic-associate-item-1
                  type: graphic-associate
                  title: Robust Map Landmark Association Question
                  metadata:
                    subject: Geography
                    grade: '7'
                    standard: Cartography
                    lesson: Landmark Identification
                    difficulty: medium
                  interaction:
                    type: graphic-associate
                    responseIdentifier: RESPONSE
                    maxAssociations: 4
                    shuffle: false
                    questionStructure:
                      prompt: Match city markers to landmarks.
                      object:
                        data: data:image/png;base64,PLACEHOLDER
                        width: 800
                        height: 600
                        type: image/png
                        mediaType: image/png
                      associableHotspots:
                        - identifier: C1
                          shape: circle
                          coords: 100,100,10
                          matchMax: 1
                          label: City Hall
                        - identifier: C2
                          shape: circle
                          coords: 200,200,10
                          matchMax: 1
                          label: Museum
                  responseDeclarations:
                    - identifier: RESPONSE
                      cardinality: multiple
                      baseType: directedPair
                      correctResponse:
                        value:
                          - C1 C2
                  outcomeDeclarations:
                    - identifier: FEEDBACK
                      cardinality: single
                      baseType: identifier
                    - identifier: FEEDBACK-INLINE
                      cardinality: single
                      baseType: identifier
                  responseProcessing:
                    templateType: match_correct
                    responseDeclarationIdentifier: RESPONSE
                    outcomeIdentifier: FEEDBACK
                    correctResponseIdentifier: CORRECT
                    incorrectResponseIdentifier: INCORRECT
                  feedbackBlock:
                    - outcomeIdentifier: FEEDBACK
                      identifier: CORRECT
                      showHide: show
                      content: <p><strong>Correct!</strong> Well done.</p>
                    - outcomeIdentifier: FEEDBACK
                      identifier: INCORRECT
                      showHide: show
                      content: >-
                        <p><strong>Incorrect.</strong> Please review and try
                        again.</p>
                  rubrics:
                    - use: ext:criteria
                      view: scorer
                      body: >-
                        <p>Rubric: Award points for each correct landmark
                        association.</p>
                  stimulus:
                    - identifier: Stimulus1
                    - identifier: Stimulus2
              json-graphic-gap-match:
                summary: JSON - Graphic Gap Match Example (Experimental)
                value:
                  format: json
                  identifier: graphic-gap-match-item-1
                  type: graphic-gap-match
                  title: Robust Graphic Gap Match Map Question
                  metadata:
                    subject: Geography
                    grade: '7'
                    standard: Map Skills
                    lesson: Label Placement
                    difficulty: medium
                  interaction:
                    type: graphic-gap-match
                    responseIdentifier: RESPONSE
                    shuffle: false
                    questionStructure:
                      prompt: Drag each city label to its correct location on the map.
                      object:
                        data: data:image/png;base64,PLACEHOLDER
                        width: 800
                        height: 600
                        type: image/png
                        mediaType: image/png
                      gapImgs:
                        - identifier: GAP1
                          matchMax: 1
                          object:
                            data: data:image/png;base64,PLACEHOLDER
                            width: 50
                            height: 30
                            type: image/png
                        - identifier: GAP2
                          matchMax: 1
                          object:
                            data: data:image/png;base64,PLACEHOLDER
                            width: 50
                            height: 30
                            type: image/png
                      associableHotspots:
                        - identifier: SPOT1
                          shape: circle
                          coords: 100,100,20
                          matchMax: 1
                        - identifier: SPOT2
                          shape: rect
                          coords: 200,200,250,250
                          matchMax: 1
                  responseDeclarations:
                    - identifier: RESPONSE
                      cardinality: multiple
                      baseType: directedPair
                      correctResponse:
                        value:
                          - GAP1 SPOT1
                          - GAP2 SPOT2
                  outcomeDeclarations:
                    - identifier: FEEDBACK
                      cardinality: single
                      baseType: identifier
                    - identifier: FEEDBACK-INLINE
                      cardinality: single
                      baseType: identifier
                  responseProcessing:
                    templateType: match_correct
                    responseDeclarationIdentifier: RESPONSE
                    outcomeIdentifier: FEEDBACK
                    correctResponseIdentifier: CORRECT
                    incorrectResponseIdentifier: INCORRECT
                  feedbackBlock:
                    - outcomeIdentifier: FEEDBACK
                      identifier: CORRECT
                      showHide: show
                      content: <p><strong>Correct!</strong> Well done.</p>
                    - outcomeIdentifier: FEEDBACK
                      identifier: INCORRECT
                      showHide: show
                      content: >-
                        <p><strong>Incorrect.</strong> Please review and try
                        again.</p>
                  rubrics:
                    - use: ext:criteria
                      view: scorer
                      body: >-
                        <p>Rubric: Award points for each correctly placed
                        label.</p>
                  stimulus:
                    identifier: Stimulus1
              json-hotspot:
                summary: JSON - Hotspot Example (Experimental)
                value:
                  format: json
                  identifier: hotspot-item-1
                  type: hotspot
                  title: Robust Region Selection Hotspot Question
                  metadata:
                    subject: Geography
                    grade: '5'
                    standard: Map Skills
                    lesson: Landmark Regions
                    difficulty: easy
                  interaction:
                    type: hotspot
                    responseIdentifier: RESPONSE
                    maxChoices: 2
                    questionStructure:
                      prompt: >-
                        Select the two regions that are known for their
                        historical landmarks.
                      object:
                        data: data:image/png;base64,PLACEHOLDER
                        width: 800
                        height: 600
                        type: image/png
                        mediaType: image/png
                      hotspots:
                        - identifier: REGION1
                          shape: rect
                          coords: 100,100,200,200
                        - identifier: REGION2
                          shape: circle
                          coords: 300,300,50
                        - identifier: REGION3
                          shape: poly
                          coords: 500,100,600,100,550,200
                  responseDeclarations:
                    - identifier: RESPONSE
                      cardinality: multiple
                      baseType: identifier
                      correctResponse:
                        value:
                          - REGION1
                          - REGION2
                  outcomeDeclarations:
                    - identifier: FEEDBACK
                      cardinality: single
                      baseType: identifier
                    - identifier: FEEDBACK-INLINE
                      cardinality: single
                      baseType: identifier
                  responseProcessing:
                    templateType: match_correct
                    responseDeclarationIdentifier: RESPONSE
                    outcomeIdentifier: FEEDBACK
                    correctResponseIdentifier: CORRECT
                    incorrectResponseIdentifier: INCORRECT
                  feedbackBlock:
                    - outcomeIdentifier: FEEDBACK
                      identifier: CORRECT
                      showHide: show
                      content: <p><strong>Correct!</strong> Well done.</p>
                    - outcomeIdentifier: FEEDBACK
                      identifier: INCORRECT
                      showHide: show
                      content: >-
                        <p><strong>Incorrect.</strong> Please review and try
                        again.</p>
                  rubrics:
                    - use: ext:criteria
                      view: scorer
                      body: >-
                        <p>Rubric: Full credit for selecting both correct
                        regions.</p>
                  stimulus:
                    identifier: Stimulus1
              json-hottext:
                summary: JSON - Hottext Example (Experimental)
                value:
                  format: json
                  identifier: hottext-item-1
                  type: hottext
                  title: Robust Hottext Reading Question
                  metadata:
                    subject: ELA
                    grade: '6'
                    standard: Reading Comprehension
                    lesson: Vocabulary in Context
                    difficulty: medium
                  interaction:
                    type: hottext
                    responseIdentifier: RESPONSE
                    questionStructure:
                      prompt: Select the highlighted terms in the paragraph.
                      text: >-
                        <p>This is a <hottext identifier="H1">sample</hottext>
                        text with another <hottext
                        identifier="H2">example</hottext>.</p>
                  responseDeclarations:
                    - identifier: RESPONSE
                      cardinality: multiple
                      baseType: identifier
                      correctResponse:
                        value:
                          - H1
                          - H2
                  outcomeDeclarations:
                    - identifier: FEEDBACK
                      cardinality: single
                      baseType: identifier
                    - identifier: FEEDBACK-INLINE
                      cardinality: single
                      baseType: identifier
                  responseProcessing:
                    templateType: match_correct
                    responseDeclarationIdentifier: RESPONSE
                    outcomeIdentifier: FEEDBACK
                    correctResponseIdentifier: CORRECT
                    incorrectResponseIdentifier: INCORRECT
                  modalFeedback:
                    - outcomeIdentifier: FEEDBACK
                      identifier: CORRECT
                      showHide: show
                      title: Great Job!
                      content: <p>You correctly selected all highlighted terms.</p>
                    - outcomeIdentifier: FEEDBACK
                      identifier: INCORRECT
                      showHide: show
                      title: Review Needed
                      content: >-
                        <p>Please reread the passage and select the highlighted
                        words.</p>
                  rubrics:
                    - use: ext:criteria
                      view: scorer
                      body: >-
                        <p>Rubric: Full credit requires selecting both
                        highlighted terms.</p>
                  stimulus:
                    identifier: Stimulus1
              json-slider:
                summary: JSON - Slider Example (Experimental)
                value:
                  format: json
                  identifier: slider-item-1
                  type: slider
                  title: Robust Temperature Slider Question
                  metadata:
                    subject: Science
                    grade: '5'
                    standard: Thermodynamics
                    lesson: Temperature Scales
                    difficulty: medium
                  interaction:
                    type: slider
                    responseIdentifier: RESPONSE
                    lower-bound: 0
                    upper-bound: 50
                    step: 1
                    orientation: horizontal
                    questionStructure:
                      prompt: Set the slider to room temperature in Celsius.
                      object:
                        data: https://example.com/temperature-scale.jpg
                        width: 800
                        height: 100
                        type: image/jpeg
                        mediaType: image/jpeg
                  responseDeclarations:
                    - identifier: RESPONSE
                      cardinality: single
                      baseType: float
                      correctResponse:
                        value:
                          - '20'
                  outcomeDeclarations:
                    - identifier: FEEDBACK
                      cardinality: single
                      baseType: identifier
                    - identifier: FEEDBACK-INLINE
                      cardinality: single
                      baseType: identifier
                  responseProcessing:
                    templateType: match_correct
                    responseDeclarationIdentifier: RESPONSE
                    outcomeIdentifier: FEEDBACK
                    correctResponseIdentifier: CORRECT
                    incorrectResponseIdentifier: INCORRECT
                  feedbackBlock:
                    - outcomeIdentifier: FEEDBACK
                      identifier: CORRECT
                      showHide: show
                      content: <p><strong>Correct!</strong> Well done.</p>
                    - outcomeIdentifier: FEEDBACK
                      identifier: INCORRECT
                      showHide: show
                      content: >-
                        <p><strong>Incorrect.</strong> Please review and try
                        again.</p>
                  rubrics:
                    - use: ext:criteria
                      view: scorer
                      body: >-
                        <p>Rubric: Full credit for selecting exactly 20°C.
                        Partial credit for 19-21°C.</p>
                  stimulus:
                    identifier: Stimulus1
              json-drawing:
                summary: JSON - Drawing Example (Experimental)
                value:
                  format: json
                  identifier: drawing-item-1
                  type: drawing
                  title: Robust Drawing Task
                  metadata:
                    subject: Art
                    grade: '6'
                    standard: Creative Expression
                    lesson: Basic Shapes
                    difficulty: easy
                  interaction:
                    type: drawing
                    responseIdentifier: RESPONSE
                    questionStructure:
                      prompt: Draw a simple house with a door and two windows.
                      canvas:
                        width: 800
                        height: 600
                      object:
                        data: data:image/png;base64,PLACEHOLDER
                        width: 800
                        height: 600
                        type: image/png
                        mediaType: image/png
                  responseDeclarations:
                    - identifier: RESPONSE
                      cardinality: single
                      baseType: file
                      correctResponse:
                        value:
                          - ''
                  outcomeDeclarations:
                    - identifier: FEEDBACK
                      cardinality: single
                      baseType: identifier
                    - identifier: FEEDBACK-INLINE
                      cardinality: single
                      baseType: identifier
                  responseProcessing:
                    templateType: map_response
                    responseDeclarationIdentifier: RESPONSE
                    outcomeIdentifier: FEEDBACK
                    correctResponseIdentifier: SUBMITTED
                    incorrectResponseIdentifier: NOT_SUBMITTED
                  feedbackBlock:
                    - outcomeIdentifier: FEEDBACK
                      identifier: CORRECT
                      showHide: show
                      content: <p><strong>Correct!</strong> Well done.</p>
                    - outcomeIdentifier: FEEDBACK
                      identifier: INCORRECT
                      showHide: show
                      content: >-
                        <p><strong>Incorrect.</strong> Please review and try
                        again.</p>
                  rubrics:
                    - use: ext:criteria
                      view: scorer
                      body: >-
                        <p>Rubric: The house should include a rectangular body,
                        a triangular roof, one door, and two windows.</p>
                  stimulus:
                    identifier: Stimulus1
              json-media:
                summary: JSON - Media Example (Experimental)
                value:
                  format: json
                  identifier: media-item-1
                  type: media
                  title: Robust Media Analysis Question
                  metadata:
                    subject: Science
                    grade: '8'
                    standard: Physics – Motion
                    lesson: Newton's Laws
                    difficulty: medium
                  interaction:
                    type: media
                    responseIdentifier: RESPONSE
                    autostart: true
                    minPlays: 0
                    maxPlays: 2
                    loop: false
                    questionStructure:
                      prompt: Watch the video and identify the key concept.
                      object:
                        data: https://example.com/sample-video.mp4
                        width: 640
                        height: 360
                        type: video/mp4
                        mediaType: video/mp4
                  responseDeclarations:
                    - identifier: RESPONSE
                      cardinality: single
                      baseType: string
                      correctResponse:
                        value:
                          - Inertia
                  outcomeDeclarations:
                    - identifier: FEEDBACK
                      cardinality: single
                      baseType: identifier
                    - identifier: FEEDBACK-INLINE
                      cardinality: single
                      baseType: identifier
                  responseProcessing:
                    templateType: match_correct
                    responseDeclarationIdentifier: RESPONSE
                    outcomeIdentifier: FEEDBACK
                    correctResponseIdentifier: CORRECT
                    incorrectResponseIdentifier: INCORRECT
                  feedbackBlock:
                    - outcomeIdentifier: FEEDBACK
                      identifier: CORRECT
                      showHide: show
                      content: <p><strong>Correct!</strong> Well done.</p>
                    - outcomeIdentifier: FEEDBACK
                      identifier: INCORRECT
                      showHide: show
                      content: >-
                        <p><strong>Incorrect.</strong> Please review and try
                        again.</p>
                  rubrics:
                    - use: ext:criteria
                      view: scorer
                      body: >-
                        <p>Rubric: Answers should clearly state the concept of
                        inertia and reference examples from the video.</p>
                  stimulus:
                    identifier: Stimulus1
              json-upload:
                summary: JSON - Upload Example (Experimental)
                value:
                  format: json
                  identifier: upload-item-1
                  type: upload
                  title: Robust File Upload Question
                  metadata:
                    subject: English
                    grade: '7'
                    standard: Writing Assessment
                    lesson: Persuasive Essay
                    difficulty: hard
                  interaction:
                    type: upload
                    responseIdentifier: RESPONSE
                    questionStructure:
                      prompt: Upload your completed persuasive essay as a PDF.
                      allowedTypes:
                        - application/pdf
                      maxSize: 10485760
                      maxFiles: 1
                  responseDeclarations:
                    - identifier: RESPONSE
                      cardinality: single
                      baseType: string
                      correctResponse:
                        value:
                          - ''
                  outcomeDeclarations:
                    - identifier: FEEDBACK
                      cardinality: single
                      baseType: identifier
                    - identifier: FEEDBACK-INLINE
                      cardinality: single
                      baseType: identifier
                  responseProcessing:
                    templateType: map_response
                    responseDeclarationIdentifier: RESPONSE
                    outcomeIdentifier: FEEDBACK
                    correctResponseIdentifier: SUBMITTED
                    incorrectResponseIdentifier: NOT_SUBMITTED
                  feedbackBlock:
                    - outcomeIdentifier: FEEDBACK
                      identifier: CORRECT
                      showHide: show
                      content: <p><strong>Correct!</strong> Well done.</p>
                    - outcomeIdentifier: FEEDBACK
                      identifier: INCORRECT
                      showHide: show
                      content: >-
                        <p><strong>Incorrect.</strong> Please review and try
                        again.</p>
                  rubrics:
                    - use: ext:criteria
                      view: scorer
                      body: >-
                        <p>Rubric: Essays will be scored on clarity, structure,
                        and persuasive techniques.</p>
                  stimulus:
                    identifier: Stimulus-Upload1
      responses:
        '201':
          description: Metadata updated successfully
          content:
            application/json:
              schema:
                type: object
                properties:
                  identifier:
                    type: string
                    description: Unique identifier for the entity on the service provider.
                  title:
                    type: string
                    description: >-
                      Human-readable title of the entity on the service
                      provider.
                  type:
                    type: string
                    enum:
                      - choice
                      - text-entry
                      - extended-text
                      - inline-choice
                      - match
                      - order
                      - associate
                      - select-point
                      - graphic-order
                      - graphic-associate
                      - graphic-gap-match
                      - hotspot
                      - hottext
                      - slider
                      - drawing
                      - media
                      - upload
                    description: >-
                      Assessment item interaction types that are supported by
                      the service provider.
                  customInteractionTypeIdentifier:
                    type: string
                    description: >-
                      For portable-custom interactions, the
                      custom-interaction-type-identifier attribute from the QTI
                      XML element.
                  qtiVersion:
                    type: string
                    default: '3.0'
                    description: QTI version of the assessment item
                  timeDependent:
                    type: boolean
                    default: false
                    description: >-
                      Indicates whether the candidate's response time affects
                      the scoring or outcome of this assessment item. When true,
                      timing data is used in response processing calculations.
                  adaptive:
                    type: boolean
                    default: false
                    description: >-
                      Indicates whether this assessment item adapts its
                      presentation or behavior based on the candidate's
                      responses. Adaptive items can modify their content,
                      difficulty, or available options during the assessment
                      session.
                  responseDeclarations:
                    type: array
                    items:
                      type: object
                      properties:
                        identifier:
                          type: string
                          description: >-
                            Unique identifier for this response variable within
                            the item; must be distinct from other item variables
                            and cannot use reserved names (completionStatus,
                            numAttempts, duration).
                        cardinality:
                          type: string
                          enum:
                            - single
                            - multiple
                            - ordered
                            - record
                          description: >-
                            Specifies how many values the response variable can
                            hold and whether order matters.
                        baseType:
                          type: string
                          enum:
                            - identifier
                            - boolean
                            - integer
                            - float
                            - string
                            - point
                            - pair
                            - directedPair
                            - duration
                            - file
                            - uri
                          description: >-
                            Primitive data type for each answer stored in the
                            variable (e.g., integer, string, boolean). Omit when
                            cardinality is 'record', because each field in a
                            record may have its own type.
                        correctResponse:
                          type: object
                          properties:
                            value:
                              type: array
                              items:
                                type: string
                          required:
                            - value
                          description: >-
                            Optional model answer; must conform to the
                            variable's cardinality (single = one value,
                            multiple/ordered = ordered or unordered list); omit
                            when no optimal answer exists (e.g., essays);
                            delivery engines may display it as the solution in
                            review mode.
                      required:
                        - identifier
                        - cardinality
                        - correctResponse
                  outcomeDeclarations:
                    type: array
                    items:
                      type: object
                      properties:
                        identifier:
                          type: string
                          description: >-
                            Unique identifier for this response variable within
                            the item; must be distinct from other item variables
                            and cannot use reserved names (completionStatus,
                            numAttempts, duration).
                        cardinality:
                          type: string
                          enum:
                            - single
                            - multiple
                            - ordered
                            - record
                          description: >-
                            Specifies how many values the response variable can
                            hold and whether order matters.
                        baseType:
                          type: string
                          enum:
                            - identifier
                            - boolean
                            - integer
                            - float
                            - string
                            - point
                            - pair
                            - directedPair
                            - duration
                            - file
                            - uri
                          description: >-
                            Primitive data type for each answer stored in the
                            variable (e.g., integer, string, boolean). Omit when
                            cardinality is 'record', because each field in a
                            record may have its own type.
                      required:
                        - identifier
                        - cardinality
                  responseProcessing:
                    type: object
                    properties:
                      templateType:
                        type: string
                        enum:
                          - match_correct
                          - map_response
                        description: >-
                          Response processing template type. 'match_correct'
                          compares the candidate's response directly against the
                          correct response and assigns binary feedback.
                          'map_response' uses mapping rules to assign scores and
                          feedback based on response values.
                      responseDeclarationIdentifier:
                        type: string
                        description: >-
                          Identifier of the response declaration that this
                          response processing rule applies to. Must match an
                          existing responseDeclaration identifier within the
                          same assessment item.
                      outcomeIdentifier:
                        type: string
                        description: >-
                          Identifier of the outcome variable that will be set by
                          this response processing rule. Common values include
                          'SCORE' for numeric scoring or 'FEEDBACK' for feedback
                          identifiers.
                      correctResponseIdentifier:
                        type: string
                        description: >-
                          Identifier value assigned to the outcome variable when
                          the candidate's response is evaluated as correct. Used
                          primarily with match_correct template type.
                      incorrectResponseIdentifier:
                        type: string
                        description: >-
                          Identifier value assigned to the outcome variable when
                          the candidate's response is evaluated as incorrect.
                          Used primarily with match_correct template type.
                      inlineFeedback:
                        type: object
                        properties:
                          outcomeIdentifier:
                            type: string
                            description: >-
                              Identifier of the outcome variable to be set with
                              the inline feedback value.
                          variableIdentifier:
                            type: string
                            description: >-
                              Identifier of the variable whose value will be
                              assigned to the outcome variable during response
                              processing.
                        required:
                          - outcomeIdentifier
                          - variableIdentifier
                        description: >-
                          Optional inline feedback configuration that sets an
                          outcome variable based on another variable's value
                          during response processing.
                    required:
                      - templateType
                      - responseDeclarationIdentifier
                      - outcomeIdentifier
                      - correctResponseIdentifier
                      - incorrectResponseIdentifier
                    description: >-
                      Response processing is the process by which the Delivery
                      Engine assigns outcomes based on the candidate's
                      responses. The outcomes may be used to provide feedback to
                      the candidate. Response processing must only take place in
                      direct response to a user action or in response to some
                      expected event, such as the end of a test.
                  metadata:
                    type: object
                    properties:
                      subject:
                        type: string
                        description: Subject area for the assessment item
                        example: Math
                      grade:
                        type: string
                        enum:
                          - '-1'
                          - '0'
                          - '1'
                          - '2'
                          - '3'
                          - '4'
                          - '5'
                          - '6'
                          - '7'
                          - '8'
                          - '9'
                          - '10'
                          - '11'
                          - '12'
                          - '13'
                        description: >-
                          Grade level for the assessment item. Must use a value
                          from K-12
                        example: '10'
                      difficulty:
                        type: string
                        enum:
                          - easy
                          - medium
                          - hard
                        description: Difficulty level of the assessment item
                        example: easy
                      learningObjectiveSet:
                        type: array
                        items:
                          type: object
                          properties:
                            source:
                              type: string
                              description: >-
                                The source of the learning objective set or
                                learning standards.
                              example: CASE
                            learningObjectiveIds:
                              type: array
                              items:
                                type: string
                              description: >-
                                Array of learning objective identifiers. If
                                source is 'CASE', these can be the CFItem
                                sourcedIds or CFItem's Human Coding Schema.
                              example:
                                - D1.5.6-8
                                - C2.6.7-8
                                - E3.1.2-3
                          required:
                            - source
                            - learningObjectiveIds
                        description: >-
                          Learning objectives associated with this assessment
                          item
                        example:
                          - source: CASE
                            learningObjectiveIds:
                              - id-123
                              - id-456
                              - id-789
                    additionalProperties: true
                    description: >-
                      Additional custom metadata for assessment items with
                      validation for specific fields used by external
                      applications
                  rawXml:
                    type: string
                    description: >-
                      Raw XML representation of the entity, automatically
                      generated from the JSON or XML sent when creating entities
                      on the service provider. The rawxml field will contain all
                      content sent when creating the entity on the service
                      provider. This field is stable and should be used when
                      working within this QTI API.
                  content:
                    type: object
                    properties:
                      qti-assessment-item:
                        type: object
                        properties:
                          _attributes:
                            type: object
                            properties:
                              xmlns:
                                type: string
                              xmlns:xsi:
                                type: string
                              xsi:schemaLocation:
                                type: string
                              identifier:
                                type: string
                              title:
                                type: string
                              adaptive:
                                type: string
                              time-dependent:
                                type: string
                            required:
                              - xmlns
                              - xmlns:xsi
                              - xsi:schemaLocation
                              - identifier
                              - title
                              - adaptive
                              - time-dependent
                          qti-response-declaration:
                            type: array
                            items:
                              type: object
                              properties:
                                _attributes:
                                  type: object
                                  properties:
                                    identifier:
                                      type: string
                                    cardinality:
                                      type: string
                                    baseType:
                                      type: string
                                  required:
                                    - identifier
                                    - cardinality
                                    - baseType
                                qti-correct-response:
                                  type: object
                                  properties:
                                    qti-value:
                                      type: array
                                      items:
                                        type: string
                                  required:
                                    - qti-value
                              required:
                                - _attributes
                                - qti-correct-response
                          qti-outcome-declaration:
                            type: array
                            items:
                              type: object
                              properties:
                                _attributes:
                                  type: object
                                  properties:
                                    identifier:
                                      type: string
                                    cardinality:
                                      type: string
                                    baseType:
                                      type: string
                                  required:
                                    - identifier
                                    - cardinality
                                    - baseType
                              required:
                                - _attributes
                          qti-assessment-stimulus-ref:
                            type: array
                            items:
                              type: object
                              properties:
                                _attributes:
                                  type: object
                                  properties:
                                    identifier:
                                      type: string
                                    href:
                                      type: string
                                    title:
                                      type: string
                                  required:
                                    - identifier
                                    - href
                                    - title
                              required:
                                - _attributes
                          qti-item-body: {}
                          qti-response-processing: {}
                        required:
                          - _attributes
                          - qti-response-declaration
                          - qti-outcome-declaration
                    required:
                      - qti-assessment-item
                    description: >-
                      Parsed XML content generated by the service provider. For
                      production use, rawXml is recommended over this parsed
                      structure.
                  modalFeedback:
                    type: array
                    items:
                      type: object
                      properties:
                        outcomeIdentifier:
                          type: string
                          description: >-
                            Identifier of the outcome variable that controls
                            when this feedback is displayed. The feedback is
                            shown or hidden based on the value of this outcome
                            variable after response processing.
                        identifier:
                          type: string
                          description: >-
                            Unique identifier for this specific feedback element
                            within the assessment item. Used to reference and
                            control this particular piece of feedback.
                        showHide:
                          type: string
                          enum:
                            - show
                            - hide
                          description: >-
                            Determines the feedback visibility behavior. 'show'
                            displays the feedback when the outcome variable
                            matches the identifier, 'hide' conceals it when the
                            outcome variable matches.
                        content:
                          type: string
                          description: >-
                            The HTML or text content to be displayed as feedback
                            to the candidate.
                        title:
                          type: string
                          description: >-
                            Optional title displayed in the modal feedback
                            dialog header. Only used with modal feedback
                            presentations.
                      required:
                        - outcomeIdentifier
                        - identifier
                        - showHide
                        - content
                        - title
                    description: >-
                      Modal feedback shown to candidates in popup dialogs
                      immediately following response processing. Cannot contain
                      interaction elements and is displayed based on outcome
                      variable values.
                  feedbackInline:
                    type: array
                    items:
                      type: object
                      properties:
                        outcomeIdentifier:
                          type: string
                          description: >-
                            Identifier of the outcome variable that controls
                            when this feedback is displayed. The feedback is
                            shown or hidden based on the value of this outcome
                            variable after response processing.
                        identifier:
                          type: string
                          description: >-
                            Unique identifier for this specific feedback element
                            within the assessment item. Used to reference and
                            control this particular piece of feedback.
                        showHide:
                          type: string
                          enum:
                            - show
                            - hide
                          description: >-
                            Determines the feedback visibility behavior. 'show'
                            displays the feedback when the outcome variable
                            matches the identifier, 'hide' conceals it when the
                            outcome variable matches.
                        content:
                          type: string
                          description: >-
                            The HTML or text content to be displayed as feedback
                            to the candidate.
                        class:
                          type: array
                          items:
                            type: string
                          description: >-
                            CSS class names applied to the feedback element for
                            styling purposes. Multiple classes can be specified
                            for flexible presentation control.
                      required:
                        - outcomeIdentifier
                        - identifier
                        - showHide
                        - content
                        - class
                    description: >-
                      Inline feedback embedded within interaction elements,
                      displayed alongside choices or input areas. Provides
                      contextual feedback.
                  feedbackBlock:
                    type: array
                    items:
                      type: object
                      properties:
                        outcomeIdentifier:
                          type: string
                          description: >-
                            Identifier of the outcome variable that controls
                            when this feedback is displayed. The feedback is
                            shown or hidden based on the value of this outcome
                            variable after response processing.
                        identifier:
                          type: string
                          description: >-
                            Unique identifier for this specific feedback element
                            within the assessment item. Used to reference and
                            control this particular piece of feedback.
                        showHide:
                          type: string
                          enum:
                            - show
                            - hide
                          description: >-
                            Determines the feedback visibility behavior. 'show'
                            displays the feedback when the outcome variable
                            matches the identifier, 'hide' conceals it when the
                            outcome variable matches.
                        content:
                          type: string
                          description: >-
                            The HTML or text content to be displayed as feedback
                            to the candidate.
                        class:
                          type: array
                          items:
                            type: string
                          description: >-
                            CSS class names applied to the feedback element for
                            styling purposes. Multiple classes can be specified
                            for flexible presentation control.
                      required:
                        - outcomeIdentifier
                        - identifier
                        - showHide
                        - content
                        - class
                    description: >-
                      Inline feedback embedded within interaction elements,
                      displayed alongside choices or input areas. Provides
                      contextual feedback.
                  createdAt:
                    type: string
                    format: date-time
                    description: ISO 8601 timestamp when the entity was created
                  updatedAt:
                    type: string
                    format: date-time
                    description: ISO 8601 timestamp when the entity was last updated
                  __v:
                    type: number
                    description: MongoDB version key for optimistic concurrency control
                required:
                  - identifier
                  - title
                  - type
                  - qtiVersion
                  - timeDependent
                  - adaptive
                  - rawXml
                  - content
                  - createdAt
                  - updatedAt
        '400':
          description: Invalid request body
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    type: string
                  details:
                    type: string
                required:
                  - error
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    type: string
                    description: Error type identifier
                  message:
                    type: string
                    description: Human-readable error message
                  eventId:
                    type: string
                    description: Sentry event ID for error tracking
                  details:
                    type: string
                    description: Stack trace or additional error details
                required:
                  - error
                  - message
                  - details
                description: Internal server error response
components:
  schemas:
    AssessmentItem:
      type: object
      properties:
        identifier:
          type: string
          description: Unique identifier for the entity on the service provider.
        title:
          type: string
          description: Human-readable title of the entity on the service provider.
        type:
          type: string
          enum:
            - choice
            - text-entry
            - extended-text
            - inline-choice
            - match
            - order
            - associate
            - select-point
            - graphic-order
            - graphic-associate
            - graphic-gap-match
            - hotspot
            - hottext
            - slider
            - drawing
            - media
            - upload
          description: >-
            Assessment item interaction types that are supported by the service
            provider.
        qtiVersion:
          type: string
          default: '3.0'
          description: QTI version of the assessment item
        timeDependent:
          type: boolean
          default: false
          description: >-
            Indicates whether the candidate's response time affects the scoring
            or outcome of this assessment item. When true, timing data is used
            in response processing calculations.
        adaptive:
          type: boolean
          default: false
          description: >-
            Indicates whether this assessment item adapts its presentation or
            behavior based on the candidate's responses. Adaptive items can
            modify their content, difficulty, or available options during the
            assessment session.
        responseDeclarations:
          type: array
          items:
            type: object
            properties:
              identifier:
                type: string
                description: >-
                  Unique identifier for this response variable within the item;
                  must be distinct from other item variables and cannot use
                  reserved names (completionStatus, numAttempts, duration).
              cardinality:
                type: string
                enum:
                  - single
                  - multiple
                  - ordered
                  - record
                description: >-
                  Specifies how many values the response variable can hold and
                  whether order matters.
              baseType:
                type: string
                enum:
                  - identifier
                  - boolean
                  - integer
                  - float
                  - string
                  - point
                  - pair
                  - directedPair
                  - duration
                  - file
                  - uri
                description: >-
                  Primitive data type for each answer stored in the variable
                  (e.g., integer, string, boolean). Omit when cardinality is
                  'record', because each field in a record may have its own
                  type.
              correctResponse:
                type: object
                properties:
                  value:
                    type: array
                    items:
                      type: string
                required:
                  - value
                description: >-
                  Optional model answer; must conform to the variable's
                  cardinality (single = one value, multiple/ordered = ordered or
                  unordered list); omit when no optimal answer exists (e.g.,
                  essays); delivery engines may display it as the solution in
                  review mode.
            required:
              - identifier
              - cardinality
              - correctResponse
        outcomeDeclarations:
          type: array
          items:
            type: object
            properties:
              identifier:
                type: string
                description: >-
                  Unique identifier for this response variable within the item;
                  must be distinct from other item variables and cannot use
                  reserved names (completionStatus, numAttempts, duration).
              cardinality:
                type: string
                enum:
                  - single
                  - multiple
                  - ordered
                  - record
                description: >-
                  Specifies how many values the response variable can hold and
                  whether order matters.
              baseType:
                type: string
                enum:
                  - identifier
                  - boolean
                  - integer
                  - float
                  - string
                  - point
                  - pair
                  - directedPair
                  - duration
                  - file
                  - uri
                description: >-
                  Primitive data type for each answer stored in the variable
                  (e.g., integer, string, boolean). Omit when cardinality is
                  'record', because each field in a record may have its own
                  type.
            required:
              - identifier
              - cardinality
        responseProcessing:
          type: object
          properties:
            templateType:
              type: string
              enum:
                - match_correct
                - map_response
              description: >-
                Response processing template type. 'match_correct' compares the
                candidate's response directly against the correct response and
                assigns binary feedback. 'map_response' uses mapping rules to
                assign scores and feedback based on response values.
            responseDeclarationIdentifier:
              type: string
              description: >-
                Identifier of the response declaration that this response
                processing rule applies to. Must match an existing
                responseDeclaration identifier within the same assessment item.
            outcomeIdentifier:
              type: string
              description: >-
                Identifier of the outcome variable that will be set by this
                response processing rule. Common values include 'SCORE' for
                numeric scoring or 'FEEDBACK' for feedback identifiers.
            correctResponseIdentifier:
              type: string
              description: >-
                Identifier value assigned to the outcome variable when the
                candidate's response is evaluated as correct. Used primarily
                with match_correct template type.
            incorrectResponseIdentifier:
              type: string
              description: >-
                Identifier value assigned to the outcome variable when the
                candidate's response is evaluated as incorrect. Used primarily
                with match_correct template type.
            inlineFeedback:
              type: object
              properties:
                outcomeIdentifier:
                  type: string
                  description: >-
                    Identifier of the outcome variable to be set with the inline
                    feedback value.
                variableIdentifier:
                  type: string
                  description: >-
                    Identifier of the variable whose value will be assigned to
                    the outcome variable during response processing.
              required:
                - outcomeIdentifier
                - variableIdentifier
              description: >-
                Optional inline feedback configuration that sets an outcome
                variable based on another variable's value during response
                processing.
          required:
            - templateType
            - responseDeclarationIdentifier
            - outcomeIdentifier
            - correctResponseIdentifier
            - incorrectResponseIdentifier
          description: >-
            Response processing is the process by which the Delivery Engine
            assigns outcomes based on the candidate's responses. The outcomes
            may be used to provide feedback to the candidate. Response
            processing must only take place in direct response to a user action
            or in response to some expected event, such as the end of a test.
        metadata:
          type: object
          properties:
            subject:
              type: string
              description: Subject area for the assessment item
              example: Math
            grade:
              type: string
              enum:
                - '-1'
                - '0'
                - '1'
                - '2'
                - '3'
                - '4'
                - '5'
                - '6'
                - '7'
                - '8'
                - '9'
                - '10'
                - '11'
                - '12'
                - '13'
              description: Grade level for the assessment item. Must use a value from K-12
              example: '10'
            difficulty:
              type: string
              enum:
                - easy
                - medium
                - hard
              description: Difficulty level of the assessment item
              example: easy
            learningObjectiveSet:
              type: array
              items:
                type: object
                properties:
                  source:
                    type: string
                    description: >-
                      The source of the learning objective set or learning
                      standards.
                    example: CASE
                  learningObjectiveIds:
                    type: array
                    items:
                      type: string
                    description: >-
                      Array of learning objective identifiers. If source is
                      'CASE', these can be the CFItem sourcedIds or CFItem's
                      Human Coding Schema.
                    example:
                      - D1.5.6-8
                      - C2.6.7-8
                      - E3.1.2-3
                required:
                  - source
                  - learningObjectiveIds
              description: Learning objectives associated with this assessment item
              example:
                - source: CASE
                  learningObjectiveIds:
                    - id-123
                    - id-456
                    - id-789
          additionalProperties: true
          description: >-
            Additional custom metadata for assessment items with validation for
            specific fields used by external applications
        modalFeedback:
          type: array
          items:
            type: object
            properties:
              outcomeIdentifier:
                type: string
                description: >-
                  Identifier of the outcome variable that controls when this
                  feedback is displayed. The feedback is shown or hidden based
                  on the value of this outcome variable after response
                  processing.
              identifier:
                type: string
                description: >-
                  Unique identifier for this specific feedback element within
                  the assessment item. Used to reference and control this
                  particular piece of feedback.
              showHide:
                type: string
                enum:
                  - show
                  - hide
                description: >-
                  Determines the feedback visibility behavior. 'show' displays
                  the feedback when the outcome variable matches the identifier,
                  'hide' conceals it when the outcome variable matches.
              content:
                type: string
                description: >-
                  The HTML or text content to be displayed as feedback to the
                  candidate.
              title:
                type: string
                description: >-
                  Optional title displayed in the modal feedback dialog header.
                  Only used with modal feedback presentations.
            required:
              - outcomeIdentifier
              - identifier
              - showHide
              - content
              - title
          description: >-
            Modal feedback shown to candidates in popup dialogs immediately
            following response processing. Cannot contain interaction elements
            and is displayed based on outcome variable values.
        feedbackInline:
          type: array
          items:
            type: object
            properties:
              outcomeIdentifier:
                type: string
                description: >-
                  Identifier of the outcome variable that controls when this
                  feedback is displayed. The feedback is shown or hidden based
                  on the value of this outcome variable after response
                  processing.
              identifier:
                type: string
                description: >-
                  Unique identifier for this specific feedback element within
                  the assessment item. Used to reference and control this
                  particular piece of feedback.
              showHide:
                type: string
                enum:
                  - show
                  - hide
                description: >-
                  Determines the feedback visibility behavior. 'show' displays
                  the feedback when the outcome variable matches the identifier,
                  'hide' conceals it when the outcome variable matches.
              content:
                type: string
                description: >-
                  The HTML or text content to be displayed as feedback to the
                  candidate.
              class:
                type: array
                items:
                  type: string
                description: >-
                  CSS class names applied to the feedback element for styling
                  purposes. Multiple classes can be specified for flexible
                  presentation control.
            required:
              - outcomeIdentifier
              - identifier
              - showHide
              - content
              - class
          description: >-
            Inline feedback embedded within interaction elements, displayed
            alongside choices or input areas. Provides contextual feedback.
        feedbackBlock:
          type: array
          items:
            type: object
            properties:
              outcomeIdentifier:
                type: string
                description: >-
                  Identifier of the outcome variable that controls when this
                  feedback is displayed. The feedback is shown or hidden based
                  on the value of this outcome variable after response
                  processing.
              identifier:
                type: string
                description: >-
                  Unique identifier for this specific feedback element within
                  the assessment item. Used to reference and control this
                  particular piece of feedback.
              showHide:
                type: string
                enum:
                  - show
                  - hide
                description: >-
                  Determines the feedback visibility behavior. 'show' displays
                  the feedback when the outcome variable matches the identifier,
                  'hide' conceals it when the outcome variable matches.
              content:
                type: string
                description: >-
                  The HTML or text content to be displayed as feedback to the
                  candidate.
              class:
                type: array
                items:
                  type: string
                description: >-
                  CSS class names applied to the feedback element for styling
                  purposes. Multiple classes can be specified for flexible
                  presentation control.
            required:
              - outcomeIdentifier
              - identifier
              - showHide
              - content
              - class
          description: >-
            Inline feedback embedded within interaction elements, displayed
            alongside choices or input areas. Provides contextual feedback.
      required:
        - identifier
        - title
        - type
  securitySchemes:
    OAuth2:
      type: oauth2
      flows:
        clientCredentials:
          scopes:
            https://purl.imsglobal.org/spec/qti/v3/scope/readonly: Read access to QTI
            https://purl.imsglobal.org/spec/qti/v3/scope/createput: Create and update access to QTI
            https://purl.imsglobal.org/spec/qti/v3/scope/delete: Delete access to QTI
          tokenUrl: >-
            https://prod-beyond-timeback-api-2-idp.auth.us-east-1.amazoncognito.com/oauth2/token
    MCP:
      type: oauth2
      flows:
        authorizationCode:
          authorizationUrl: >-
            https://prod-beyond-timeback-api-2-idp.auth.us-east-1.amazoncognito.com/oauth2/authorize
          tokenUrl: >-
            https://prod-beyond-timeback-api-2-idp.auth.us-east-1.amazoncognito.com/oauth2/token
          scopes:
            https://purl.imsglobal.org/spec/qti/v3/scope/readonly: Read access to QTI

````