Skip to main content
POST
/
validate
curl --request POST \
  --url https://qti.alpha-1edtech.ai/api/validate \
  --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>"
}
'
{
  "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 XML string to validate along with its schema type

Validate a QTI XML string against the QTI 3.0 XSD specification. You can send Assessment Test, Assessment Item or Stimulus XML strings to be validated. If entityId is provided, the xml strings attached will be ignored.

schema
enum<string>
required

The schema represents Assessment Test, Assessment Item or Stimulus and must be one of 'test', 'item', or 'stimulus' types.

Available options:
test,
item,
stimulus
xml
string

The XML string to validate against the QTI 3.0 XSD specification. If entityId is provided, this will be ignored.

entityId
string

The entity ID to validate the XML against. Must exist in the database. If entityId is provided, the xml strings attached will be ignored.

Response

Successfully validated XML

success
enum<string>
required

Whether the XML string was validated successfully.

Available options:
true,
false
entityId
string
required

The entity ID of the XML string that was validated. If no entityId is provided, a random identifier will be generated.

xmlContent
string
required

The XML string that was validated. If no xml is provided, the xml string will be the rawXml string that exists in the database.

validationErrors
string[]
required

An array of validation errors that occurred during the validation process. If no validation errors occurred, this will be an empty array.

message
string
required

A message describing the validation process. If the validation was successful this will read 'Valid XML' else it will contain details on the error message.