Skip to main content
POST
/
validate
/
batch
curl --request POST \
  --url https://qti.alpha-1edtech.ai/api/validate/batch \
  --header 'Authorization: Bearer <token>' \
  --header 'Content-Type: application/json' \
  --data '
{
  "schema": "item",
  "xml": [
    "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<qti-assessment-item\n  xmlns=\"http://www.imsglobal.org/xsd/imsqtiasi_v3p0\"\n  xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n  xsi:schemaLocation=\"http://www.imsglobal.org/xsd/imsqtiasi_v3p0 https://purl.imsglobal.org/spec/qti/v3p0/schema/xsd/imsqti_asiv3p0_v1p0.xsd\"\n  identifier=\"xml-choice-item-1\"\n  title=\"Sample Choice Question\"\n  adaptive=\"false\"\n  time-dependent=\"false\">\n\n  <qti-response-declaration identifier=\"RESPONSE\" cardinality=\"single\" base-type=\"identifier\">\n    <qti-correct-response>\n      <qti-value>B</qti-value>\n    </qti-correct-response>\n  </qti-response-declaration>\n\n  <qti-outcome-declaration identifier=\"FEEDBACK\" cardinality=\"single\" base-type=\"identifier\"/>\n  <qti-outcome-declaration identifier=\"FEEDBACK-INLINE\" cardinality=\"single\" base-type=\"identifier\"/>\n\n  <qti-assessment-stimulus-ref identifier=\"Stimulus1\" href=\"stimuli/Stimulus1\" title=\"Math Context\"/>\n  <qti-assessment-stimulus-ref identifier=\"Stimulus2\" href=\"stimuli/Stimulus2\" title=\"Additional Context\"/>\n\n  <qti-item-body>\n    <qti-choice-interaction response-identifier=\"RESPONSE\" shuffle=\"false\" max-choices=\"1\">\n      <qti-prompt>What is 2 + 2?</qti-prompt>\n      <qti-simple-choice identifier=\"A\">\n        3\n        <qti-feedback-inline outcome-identifier=\"FEEDBACK-INLINE\" identifier=\"A\" show-hide=\"show\">\n          <span style=\"color: #D9534F;\">Incorrect: Try counting again.</span>\n        </qti-feedback-inline>\n      </qti-simple-choice>\n      <qti-simple-choice identifier=\"B\">\n        4\n        <qti-feedback-inline outcome-identifier=\"FEEDBACK-INLINE\" identifier=\"B\" show-hide=\"show\">\n          <span style=\"color: #2E8B57;\">Correct: Well done!</span>\n        </qti-feedback-inline>\n      </qti-simple-choice>\n    </qti-choice-interaction>\n  </qti-item-body>\n\n  <qti-response-processing template=\"match_correct\">\n    <qti-response-condition>\n      <qti-response-if>\n        <qti-match>\n          <qti-variable identifier=\"RESPONSE\"/>\n          <qti-correct identifier=\"RESPONSE\"/>\n        </qti-match>\n        <qti-set-outcome-value identifier=\"FEEDBACK\">\n          <qti-base-value base-type=\"identifier\">CORRECT</qti-base-value>\n        </qti-set-outcome-value>\n      </qti-response-if>\n      <qti-response-else>\n        <qti-set-outcome-value identifier=\"FEEDBACK\">\n          <qti-base-value base-type=\"identifier\">INCORRECT</qti-base-value>\n        </qti-set-outcome-value>\n      </qti-response-else>\n    </qti-response-condition>\n  </qti-response-processing>\n\n  <qti-modal-feedback outcome-identifier=\"FEEDBACK\" identifier=\"CORRECT\" show-hide=\"show\">\n    <qti-content-body>\n      <p><strong>Correct!</strong> Well done.</p>\n    </qti-content-body>\n  </qti-modal-feedback>\n\n  <qti-modal-feedback outcome-identifier=\"FEEDBACK\" identifier=\"INCORRECT\" show-hide=\"show\">\n    <qti-content-body>\n      <p><strong>Incorrect.</strong> Please review and try again.</p>\n    </qti-content-body>\n  </qti-modal-feedback>\n</qti-assessment-item>",
    "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<qti-assessment-item\n  xmlns=\"http://www.imsglobal.org/xsd/imsqtiasi_v3p0\"\n  xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n  xsi:schemaLocation=\"http://www.imsglobal.org/xsd/imsqtiasi_v3p0 https://purl.imsglobal.org/spec/qti/v3p0/schema/xsd/imsqti_asiv3p0_v1p0.xsd\"\n  identifier=\"xml-choice-item-1\"\n  title=\"Sample Choice Question\"\n  adaptive=\"false\"\n  time-dependent=\"false\">\n\n  <qti-response-declaration identifier=\"RESPONSE\" cardinality=\"single\" base-type=\"identifier\">\n    <qti-correct-response>\n      <qti-value>B</qti-value>\n    </qti-correct-response>\n  </qti-response-declaration>\n\n  <qti-outcome-declaration identifier=\"FEEDBACK\" cardinality=\"single\" base-type=\"identifier\"/>\n  <qti-outcome-declaration identifier=\"FEEDBACK-INLINE\" cardinality=\"single\" base-type=\"identifier\"/>\n\n  <qti-assessment-stimulus-ref identifier=\"Stimulus1\" href=\"stimuli/Stimulus1\" title=\"Math Context\"/>\n  <qti-assessment-stimulus-ref identifier=\"Stimulus2\" href=\"stimuli/Stimulus2\" title=\"Additional Context\"/>\n\n  <qti-item-body>\n    <qti-choice-interaction response-identifier=\"RESPONSE\" shuffle=\"false\" max-choices=\"1\">\n      <qti-prompt>What is 2 + 2?</qti-prompt>\n      <qti-simple-choice identifier=\"A\">\n        3\n        <qti-feedback-inline outcome-identifier=\"FEEDBACK-INLINE\" identifier=\"A\" show-hide=\"show\">\n          <span style=\"color: #D9534F;\">Incorrect: Try counting again.</span>\n        </qti-feedback-inline>\n      </qti-simple-choice>\n      <qti-simple-choice identifier=\"B\">\n        4\n        <qti-feedback-inline outcome-identifier=\"FEEDBACK-INLINE\" identifier=\"B\" show-hide=\"show\">\n          <span style=\"color: #2E8B57;\">Correct: Well done!</span>\n        </qti-feedback-inline>\n      </qti-simple-choice>\n    </qti-choice-interaction>\n  </qti-item-body>\n\n  <qti-response-processing template=\"match_correct\">\n    <qti-response-condition>\n      <qti-response-if>\n        <qti-match>\n          <qti-variable identifier=\"RESPONSE\"/>\n          <qti-correct identifier=\"RESPONSE\"/>\n        </qti-match>\n        <qti-set-outcome-value identifier=\"FEEDBACK\">\n          <qti-base-value base-type=\"identifier\">CORRECT</qti-base-value>\n        </qti-set-outcome-value>\n      </qti-response-if>\n      <qti-response-else>\n        <qti-set-outcome-value identifier=\"FEEDBACK\">\n          <qti-base-value base-type=\"identifier\">INCORRECT</qti-base-value>\n        </qti-set-outcome-value>\n      </qti-response-else>\n    </qti-response-condition>\n  </qti-response-processing>\n\n  <qti-modal-feedback outcome-identifier=\"FEEDBACK\" identifier=\"CORRECT\" show-hide=\"show\">\n    <qti-content-body>\n      <p><strong>Correct!</strong> Well done.</p>\n    </qti-content-body>\n  </qti-modal-feedback>\n\n  <qti-modal-feedback outcome-identifier=\"FEEDBACK\" identifier=\"INCORRECT\" show-hide=\"show\">\n    <qti-content-body>\n      <p><strong>Incorrect.</strong> Please review and try again.</p>\n    </qti-content-body>\n  </qti-modal-feedback>\n</qti-assessment-item>"
  ]
}
'
{
  "results": [
    {
      "success": "true",
      "entityId": "<string>",
      "xmlContent": "<string>",
      "validationErrors": [
        "<string>"
      ],
      "message": "<string>"
    }
  ]
}

Authorizations

Authorization
string
header
required

The access token received from the authorization server in the OAuth 2.0 flow.

Body

application/json

The stimulus content to create.

Validate a batch of QTI XML strings against the QTI 3.0 XSD specification. You can send Assessment Test, Assessment Item or Stimulus XML strings to be validated along with its schema type of either 'test', 'item', or 'stimulus'. If entityIds are provided, the xml strings attached will be ignored and the rawXml string will be returned as xmlContent from the database.

xml
string[]
required

An array of XML strings to validate against the QTI 3.0 XSD specification. If entityIds are provided, this will be ignored.

schema
enum<string>
required

The schema to validate the XML against. Must be one of 'test', 'item', or 'stimulus'.

Available options:
test,
item,
stimulus
entityIds
string[]
required

An array of entity IDs to validate the XML against. Must be one of 'test', 'item', or 'stimulus'.

Response

Successfully validated XML

results
object[]
required