Date Issued: | 2021-02-01 |
Latest version: | http://www.imsglobal.org/cat/latest/ |
IPR and Distribution Notices
Recipients of this document are requested to submit, with their comments, notification of any relevant patent claims or other intellectual property rights of which they may be aware that might be infringed by any implementation of the specification set forth in this document, and to provide supporting documentation.
IMS takes no position regarding the validity or scope of any intellectual property or other rights that might be claimed to pertain to the implementation or use of the technology described in this document or the extent to which any license under such rights might or might not be available; neither does it represent that it has made any effort to identify any such rights. Information on IMS's procedures with respect to rights in IMS specifications can be found at the IMS Intellectual Property Rights web page: http://www.imsglobal.org/ipr/imsipr_policyFinal.pdf.
Copyright © 2021 IMS Global Learning Consortium. All Rights Reserved.
Use of this specification to develop products or services is governed by the license with IMS found on the IMS website: http://www.imsglobal.org/speclicense.html.
Permission is granted to all parties to use excerpts from this document as needed in producing requests for proposals.
The limited permissions granted above are perpetual and will not be revoked by IMS or its successors or assigns.
THIS SPECIFICATION IS BEING OFFERED WITHOUT ANY WARRANTY WHATSOEVER, AND IN PARTICULAR, ANY WARRANTY OF NONINFRINGEMENT IS EXPRESSLY DISCLAIMED. ANY USE OF THIS SPECIFICATION SHALL BE MADE ENTIRELY AT THE IMPLEMENTER'S OWN RISK, AND NEITHER THE CONSORTIUM, NOR ANY OF ITS MEMBERS OR SUBMITTERS, SHALL HAVE ANY LIABILITY WHATSOEVER TO ANY IMPLEMENTER OR THIRD PARTY FOR ANY DAMAGES OF ANY NATURE WHATSOEVER, DIRECTLY OR INDIRECTLY, ARISING FROM THE USE OF THIS SPECIFICATION.
Public contributions, comments and questions can be posted here: www.imsglobal.org/forums/ims-glc-public-forums-and-resources.
© 2021 IMS Global Learning Consortium, Inc.
All Rights Reserved.
Trademark information: http://www.imsglobal.org/copyright.html
Document Name: IMS Computer Adaptive Testing (CAT) Service REST/JSON Binding v1.0
Revision: 2021-02-01
The Computer Adaptive Testing (CAT) specification defines how to implement adaptive testing based upon assessments defined using the IMS Question and Test Interoperability® (QTI®) specification. This specification defines the data that is exchanged, and how the data is exchanged, between an Assessment delivery system and a CAT engine. The CAT engine is responsible for identifying and supplying the set of Items (the encoded questions) to be delivered in an assessment. This approach allows the use of protected algorithms (black box) with different sets of data such as psychometric data, constraints, stopping criteria, etc.
This document is the REST/JSON Binding of the IMS CAT Service Model. This document contains the descriptions of how the service is realised as a set of REST-based endpoints that exchange the data as JSON payloads. A machine-readable version of this Service API is supplied as a set of OpenAPI files. All of the artifacts for this binding are derived from the original service model through a sequence of machine-transformations [I-BAT, 06]
1. Introduction
2.1 Mapping of the Service Operations to the REST Endpoints
2.2 API Root URL and Versioning
3. Using the Endpoint Parameters
4.2 Authorization
4.3 Scopes
4.3.1 "https://purl.imsglobal.org/cat/v1p0/scope/api" Scope
4.3.2 "https://purl.imsglobal.org/cat/v1p0/scope/configure" Scope
4.3.3 "https://purl.imsglobal.org/cat/v1p0/scope/deliver" Scope
5.1 Service Parameter Payload Properties UML/JSON Mapping
5.2 Service Parameter Payload Class UML/JSON Mapping
5.2.1 Section Service Parameter Payload Class Mapping
5.2.2 LUID Service Parameter Payload Class Mapping
5.2.3 ItemSet Service Parameter Payload Class Mapping
5.2.4 Session Service Parameter Payload Class Mapping
5.2.5 NextItemSet Service Parameter Payload Class Mapping
5.2.6 SessionState Service Parameter Payload Class Mapping
5.2.7 Results Service Parameter Payload Class Mapping
5.2.8 AssessmentResult Service Parameter Payload Class Mapping
5.3 Payload Classes UML/JSON Mapping
5.3.1 CandidateResponse Payload Class Mapping
5.3.2 Context Payload Class Mapping
5.3.3 CorrectResponse Payload Class Mapping
5.3.4 ItemResult Payload Class Mapping
5.3.5 KeyValuePair Payload Class Mapping
5.3.6 OutcomeVariable Payload Class Mapping
5.3.7 PCIContext Payload Class Mapping
5.3.8 QTIMetadata Payload Class Mapping
5.3.9 ResponseVariable Payload Class Mapping
5.3.10 SessionIdentifier Payload Class Mapping
5.3.11 TemplateVariable Payload Class Mapping
5.3.12 TestResult Payload Class Mapping
5.3.13 Value Payload Class Mapping
5.3.14 imsx_CodeMinor Payload Class Mapping
5.3.15 imsx_CodeMinorField Payload Class Mapping
5.3.16 imsx_StatusInfo Payload Class Mapping
5.4 Enumerated Class UML/JSON Mapping
6.1 "createSection" Request Payload
6.2 "createSection" Response Payload
6.2.1 Response Payloads for the HTTP Codes (201)
6.2.2 Response Payloads for the HTTP Codes (400, 401, 500, default)
6.3 "createSession" Request Payload
6.4 "createSession" Response Payload
6.4.1 Response Payloads for the HTTP Codes (201)
6.4.2 Response Payloads for the HTTP Codes (400, 401, 404, 500, default)
6.5 "endSection" Request Payload
6.6 "endSection" Response Payload
6.6.1 Response Payloads for the HTTP Codes (204)
6.6.2 Response Payloads for the HTTP Codes (400, 401, 404, 500, default)
6.7 "endSession" Request Payload
6.8 "endSession" Response Payload
6.8.1 Response Payloads for the HTTP Codes (204)
6.8.2 Response Payloads for the HTTP Codes (400, 401, 404, 500, default)
6.9 "getSection" Request Payload
6.10 "getSection" Response Payload
6.10.1 Response Payloads for the HTTP Codes (200)
6.10.2 Response Payloads for the HTTP Codes (400, 401, 404, 500, default)
6.11 "submitResults" Request Payload
6.12 "submitResults" Response Payload
6.12.1 Response Payloads for the HTTP Codes (201)
6.12.2 Response Payloads for the HTTP Codes (400, 401, 404, 500, default)
7. Service OpenAPI Description
7.2 Tags Information
7.4.1 "/sections" Path
7.4.2 "/sections/{sectionIdentifier}" Path
7.4.3 "/sections/{sectionIdentifier}/sessions" Path
7.4.4 "/sections/{sectionIdentifier}/sessions/{sessionIdentifier}" Path
7.4.5 "/sections/{sectionIdentifier}/sessions/{sessionIdentifier}/results" Path
7.5.1 "CreateSessionResponseBodyDType" Definition
7.5.2 "GetSectionResponseBodyDType" Definition
7.5.3 "SubmitResultsResponseBodyDType" Definition
7.5.4 "CreateSectionResponseBodyDType" Definition
7.5.5 "AssessmentResultDType" Definition
7.5.6 "CandidateResponseDType" Definition
7.5.7 "ContextDType" Definition
7.5.8 "CorrectResponseDType" Definition
7.5.9 "ItemResultDType" Definition
7.5.10 "ItemSetDType" Definition
7.5.11 "KeyValuePairDType" Definition
7.5.12 "NextItemSetDType" Definition
7.5.13 "OutcomeVariableDType" Definition
7.5.14 "PCIContextDType" Definition
7.5.15 "QTIMetadataDType" Definition
7.5.16 "ResponseVariableDType" Definition
7.5.17 "ResultsDType" Definition
7.5.18 "SectionDType" Definition
7.5.19 "SessionDType" Definition
7.5.20 "SessionIdentifierDType" Definition
7.5.21 "TemplateVariableDType" Definition
7.5.22 "TestResultDType" Definition
7.5.23 "ValueDType" Definition
7.5.24 "imsx_CodeMinorDType" Definition
8. Extending and Profiling the Service
8.1.1 Proprietary Operations
8.1.2 Profiling the Service
Appendix A REST/JSON Modeling Terms
A1 REST Endpoint Description Explanations
A1.1 REST Endpoint Mapping Table Explanation
A1.2 Query Parameter Table Explanation
A1.3 Error Codes and Handling for each Endpoint Table Explanation
A2 UML to JSON Mapping Description Explanations
A2.1 Service Parameter Payload Properties UML/JSON Mapping Table Definition
A2.2 UML/JSON Payload Class Mapping Table Definition
A2.3 UML/JSON Enumerated and Enumerated List Class Mapping Table Definition
A2.4 UML/JSON Primitive Types Mapping Table Definition
A3 OpenAPI Descriptions Explanations
A3.1a OpenAPI(2) General Information Table Explanation
A3.1b OpenAPI(3) General Information Table Explanation
A3.2 OpenAPI Tags Table Explanation
A3.3 OpenAPI Security Table Explanation
Appendix B OpenAPI Listings
Appendix C JSON Schema Listings
C1 JSON Schemas for Payload Validation
C1.1a JSON Schema for the "createSection" Operation Request Payload Validation.
C1.1b JSON Schema for the "createSection" Operation Response Payload Validation for HTTP Codes (201)
C1.2a JSON Schema for the "createSession" Operation Request Payload Validation.
C1.2b JSON Schema for the "createSession" Operation Response Payload Validation for HTTP Codes (201)
C1.3a JSON Schema for the "endSection" Operation Request Payload Validation.
C1.3b JSON Schema for the "endSection" Operation Response Payload Validation for HTTP Codes (204)
C1.4a JSON Schema for the "endSession" Operation Request Payload Validation.
C1.4b JSON Schema for the "endSession" Operation Response Payload Validation for HTTP Codes (204)
C1.5a JSON Schema for the "getSection" Operation Request Payload Validation.
C1.5b JSON Schema for the "getSection" Operation Response Payload Validation for HTTP Codes (200)
C1.6a JSON Schema for the "submitResults" Operation Request Payload Validation.
C1.6b JSON Schema for the "submitResults" Operation Response Payload Validation for HTTP Codes (201)
Table 2.1 - The Set of REST Endpoint URL-leaf Values.
Table 2.4 - The List of HTTP Codes and Handling for each Endpoint.
Table 4.3.1 "https://purl.imsglobal.org/cat/v1p0/scope/api" Scope
Table 4.3.2 "https://purl.imsglobal.org/cat/v1p0/scope/configure" Scope
Table 4.3.3 "https://purl.imsglobal.org/cat/v1p0/scope/deliver" Scope
Table 6.1.1 - Tabular representation of the JSON payload for the request message for a "createSection" operation.
Table 6.2.1 - Tabular representation of the JSON payload for "201" response messages for a "createSection" operation.
Table 6.2.2 - Tabular representation of the JSON payload for "400, 401, 500, default" response messages for a "createSection" operation.
Table 6.3.1 - Tabular representation of the JSON payload for the request message for a "createSession" operation.
Table 6.4.1 - Tabular representation of the JSON payload for "201" response messages for a "createSession" operation.
Table 6.6.2 - Tabular representation of the JSON payload for "400, 401, 404, 500, default" response messages for a "endSection" operation.
Table 6.8.2 - Tabular representation of the JSON payload for "400, 401, 404, 500, default" response messages for a "endSession" operation.
Table 6.10.1 - Tabular representation of the JSON payload for "200" response messages for a "getSection" operation.
Table 6.10.2 - Tabular representation of the JSON payload for "400, 401, 404, 500, default" response messages for a "getSection" operation.
Table 6.11.1 - Tabular representation of the JSON payload for the request message for a "submitResults" operation.
Table 6.12.1 - Tabular representation of the JSON payload for "201" response messages for a "submitResults" operation.
Table 6.12.2 - Tabular representation of the JSON payload for "400, 401, 404, 500, default" response messages for a "submitResults" operation.
Table 7.1a - The Set of General Information Defined in the OpenAPI(2) Description.
Table 7.1b - The Set of General Information Defined in the OpenAPI(3) Description.
Table 7.2 - The Set of Tags Defined in the OpenAPI Description.
Table 7.3.1 - The Set of OAuth 2.0 Client Credentials Security Information Defined in the OpenAPI Description.
Table 7.4.1 - The Set of HTTP Verbs Permitted on the "/sections" Path.
Table 7.4.2 - The Set of HTTP Verbs Permitted on the "/sections/{sectionIdentifier}" Path.
Table 7.4.3 - The Set of HTTP Verbs Permitted on the "/sections/{sectionIdentifier}/sessions" Path.
Table 7.4.4 - The Set of HTTP Verbs Permitted on the "/sections/{sectionIdentifier}/sessions/{sessionIdentifier}" Path.
Table 7.4.5 - The Set of HTTP Verbs Permitted on the "/sections/{sectionIdentifier}/sessions/{sessionIdentifier}/results" Path.
Table 7.5.1 - OpenAPI JSON Schema description for the "CreateSessionResponseBodyDType" Complex Type.
Table 7.5.2 - OpenAPI JSON Schema description for the "GetSectionResponseBodyDType" Complex Type.
Table 7.5.3 - OpenAPI JSON Schema description for the "SubmitResultsResponseBodyDType" Complex Type.
Table 7.5.4 - OpenAPI JSON Schema description for the "CreateSectionResponseBodyDType" Complex Type.
Table 7.5.5 - OpenAPI JSON Schema description for the "AssessmentResultDType" Complex Type.
Table 7.5.6 - OpenAPI JSON Schema description for the "CandidateResponseDType" Complex Type.
Table 7.5.7 - OpenAPI JSON Schema description for the "ContextDType" Complex Type.
Table 7.5.8 - OpenAPI JSON Schema description for the "CorrectResponseDType" Complex Type.
Table 7.5.9 - OpenAPI JSON Schema description for the "ItemResultDType" Complex Type.
Table 7.5.10 - OpenAPI JSON Schema description for the "ItemSetDType" Complex Type.
Table 7.5.11 - OpenAPI JSON Schema description for the "KeyValuePairDType" Complex Type.
Table 7.5.12 - OpenAPI JSON Schema description for the "NextItemSetDType" Complex Type.
Table 7.5.13 - OpenAPI JSON Schema description for the "OutcomeVariableDType" Complex Type.
Table 7.5.14 - OpenAPI JSON Schema description for the "PCIContextDType" Complex Type.
Table 7.5.15 - OpenAPI JSON Schema description for the "QTIMetadataDType" Complex Type.
Table 7.5.16 - OpenAPI JSON Schema description for the "ResponseVariableDType" Complex Type.
Table 7.5.17 - OpenAPI JSON Schema description for the "ResultsDType" Complex Type.
Table 7.5.18 - OpenAPI JSON Schema description for the "SectionDType" Complex Type.
Table 7.5.19 - OpenAPI JSON Schema description for the "SessionDType" Complex Type.
Table 7.5.20 - OpenAPI JSON Schema description for the "SessionIdentifierDType" Complex Type.
Table 7.5.21 - OpenAPI JSON Schema description for the "TemplateVariableDType" Complex Type.
Table 7.5.22 - OpenAPI JSON Schema description for the "TestResultDType" Complex Type.
Table 7.5.23 - OpenAPI JSON Schema description for the "ValueDType" Complex Type.
Table 7.5.24 - OpenAPI JSON Schema description for the "imsx_CodeMinorDType" Complex Type.
Table 7.5.25 - OpenAPI JSON Schema description for the "imsx_CodeMinorFieldDType" Complex Type.
Table 7.5.26 - OpenAPI JSON Schema description for the "imsx_StatusInfoDType" Complex Type.
Table A1.1 The key to the descriptions of the mapping between a service calls and its REST endpoint URL-leaf
Table A1.2 The key to the descriptions of the data attribute/characteristic tables
Table A1.3 The key to the descriptions of the list of error codes and handling for each endpoint
Table A3.1a The key to the tabular description of the OpenAPI(2) general information
Table A3.1b The key to the tabular description of the OpenAPI(3) general information
Table A3.2 The key to the tabular description of the OpenAPI tags information
Table A3.3 The key to the tabular description of the OpenAPI security information.
Table A3.4 The key to the tabular description of the OpenAPI paths information for an HTTP Verb
Table A3.5 The key to the tabular description of the OpenAPI definitions information
Code 6.1.1 - JSON payload example for the request message for a "createSection" operation.
Code 6.2.1 - JSON payload example for "201" response messages for a "createSection" operation.
Code 6.2.2 - JSON payload example for "400, 401, 500, default" response messages for a "createSection" operation.
Code 6.3.1 - JSON payload example for the request message for a "createSession" operation.
Code 6.4.1 - JSON payload example for "201" response messages for a "createSession" operation.
Code 6.4.2 - JSON payload example for "400, 401, 404, 500, default" response messages for a "createSession" operation.
Code 6.6.2 - JSON payload example for "400, 401, 404, 500, default" response messages for a "endSection" operation.
Code 6.8.2 - JSON payload example for "400, 401, 404, 500, default" response messages for a "endSession" operation.
Code 6.10.1 - JSON payload example for "200" response messages for a "getSection" operation.
Code 6.10.2 - JSON payload example for "400, 401, 404, 500, default" response messages for a "getSection" operation.
Code 6.11.1 - JSON payload example for the request message for a "submitResults" operation.
Code 6.12.1 - JSON payload example for "201" response messages for a "submitResults" operation.
Code 6.12.2 - JSON payload example for "400, 401, 404, 500, default" response messages for a "submitResults" operation.
This document is the Computer Adaptive Testing (CAT) REST/JSON Binding v1.0 and as such it is used as the basis for the implementing the CAT Service Model. The key related documents are:
This service model and this REST/JSON binding is described using the Unified Modeling Language (UML) based upon the IMS Global Model Driven Specification approach and the associated modeling toolkit [I-BAT, 06]. This specification is based upon the concepts of:
All sections marked as non-normative, all authoring guidelines, diagrams (with the exception of the UML diagrams), examples, and notes in this specification are non-normative. Everything else in this specification is normative.
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in [RFC 2119]. This means that from the perspective of conformance:
The Conformance and Certification Guide for this specification may introduce greater normative constraints than those defined here for specific service or implementation categories.
The SHOULD/SHOULD NOT/RECOMMENDED statements MUST NOT be used in any document, or section of a document, that is responsible for defining the information model and/or the associated bindings and/or conformance and certification.
The structure of the rest of this document is:
2. The REST Endpoints | An explanation of the relationship between the logical service operations (as defined in the CAT Service Model [CAT, 20a]) and how these are realized as the corresponding set of REST endpoints (including the set of query parameters that are permitted); |
3. Using the Endpoint Parameters | A detailed explanation of how the permitted set of query parameters should be used to control the volume and type of information that will be supplied by the service provider; |
4. Security Framework | The underlying security framework within which this REST/JSON binding is designed to operate. This includes the details about authentication and how the payload integrity may be protected; |
5. UML to JSON Mappings | The description of how the JSON payloads are derived from the equivalent UML data model definitions [CAT, 20a]. Each UML class and attribute is mapped to the equivalent JSON object and property; |
6. JSON Payloads | Examples of the set of JSON payloads that are sent by the consumer (the request) and returned by the service provider (response). These examples are focused on the expected structure of a request/response and do not include actual payloads; |
7. Service OpenAPI Description | A detailed explanation of the structure of the OpenAPI files that are produced as part of the specification documentation. The associated JSON and YAML files are supplied in Appendix B; |
8. Extending and Profiling the Service | An explanation of how the service can be extended, using the permitted points of extension and/or profiled. Profiling is the process by which the specification is tailored to a specific set of market/domain requirements; |
References | The set of cited documents, normative and informative, that are used to support the technical details in this document; |
Appendix A REST/JSON Modeling Terms | An overview of the model driven approach, the concepts and the terms used by IMS to create the service model REST/JSON binding definitions (based upon a profile of UML) and the accompanying documentation (including this binding); |
Appendix B OpenAPI Listings | The listings of the OpenAPI(JSON) and OpenAPI(YAML) files that have been created to define the REST/JSON binding in a machine-readable format i.e. conforming to the OpenAPI 2.0 and OpenAPI 3.0 specifications; |
Appendix C JSON Schema Listings | The listings of the set of JSON Schema files (based upon IETF JSON Schema Draft 7) that have been created for the validation of the set of JSON payloads that are exchanged as part of this service. |
API | Application Programming Interface |
CAT | Computer Adaptive Testing |
HTML | Hypertext Markup Language |
HTTP | Hypertext Transfer Protocol |
JSON | JavaScript Object Notation |
REST | Representational State Transfer |
UML | Unified Modeling Language |
URI | Uniform Resource Identifier |
URL | Uniform Resource Locator |
YAML | Yet Another Markup Language |
This Section is NORMATIVE.
The mapping between the service operations and the REST Endpoint URL-leaf values are listed in Table 2.1. The syntax and semantics for this mapping are described in Appendix A1.1.
All of the paths MUST also contain, as the base of the path, excluding the host name, the string: "/ims/cat/v1p0".
Query parameters are not permitted for any of the endpoints.
A service provider will either return a data payload or a payload that indicates the cause of the failure. The list of HTTP Codes and handling for each endpoint is shown in Table 2.4. The syntax and semantics for this tabular description are described in Appendix A1.3.
REST Endpoint | HTTP Verb | HTTP Codes and Handling |
---|---|---|
/sections | POST |
|
/sections/{sectionIdentifier} | GET |
|
/sections/{sectionIdentifier} | DELETE |
|
/sections/{sectionIdentifier}/sessions | POST |
|
/sections/{sectionIdentifier}/sessions/{sessionIdentifier} | DELETE |
|
/sections/{sectionIdentifier}/sessions/{sessionIdentifier}/results | POST |
|
This Section is NORMATIVE.
The use of Query Parameters is NOT permitted on the set of endpoints.
[[ ED NOTE: The above statement needs to be confirmed. ]]
As the service will be exposing personal data related to students and their grades, it is important that only authorized users have access to that data. Further, data exchanges should be encrypted to ensure that packet sniffing cannot be used to read the data in transit.
All Requests and Responses MUST be sent using Transport Layer Security (TLS). Exchange of the signed certificates for endpoints between clients and servers is beyond the scope of this specification. Implementers of clients and servers are advised to look at the various 3rd party certificate signing services in order to obtain signed certificates.
Support for TLS 1.2 and/or TLS 1.3 is REQUIRED and SSL MUST NOT be used.
The use of OAuth 2.0 Client Credentials with the Bearer Token obtained using the mechanism described in [RFC 6749] (Section 4.4) is REQUIRED. Details of this are given in the IMS Security Framework [Security, 19].
Authorization will use the OAuth 2.0 Client Credentials Grant mechanism. In this mechanism the client can request an access token using only its client credentials (using the consumer key and secret information) when the client is requesting access to the protected resources under its control, or those of another resource owner that have been previously arranged with the authorization server. In this approach the client issues a client authentication request and receives in response an access token. Issuing of an access token is defined in Section 5 of [RFC 6749].
The request for an access token, including three scopes (scopename1, scopename2 and scopenamex) takes the form of (this uses TLS):
POST /token HTTP/1.1 Host: server.example.com Authorization: Basic czZCaGRSa3F0MzpnWDFmQmF0M2JW Content-Type: application/x-www-form-urlencoded grant_type=client_credentials&scope=scopename1%20scopename2%20scopenamex
The inclusion of scopes is REQUIRED and the set of scopes available for this service are defined in the following subsection. The authorization encoding is produced using the consumer key and secret. Note that the request for an access token MAY use a HTTP GET request.
The authorization encoding is produced using the consumer key and secret. Success results in the granting of the access token with a response of:
HTTP/1.1 200 OK Content-Type: application/json;charset=UTF-8 Cache-Control: no-store Pragma: no-cache { "access_token" : "2YotnFZFEjr1zCsicMWpAA", "token_type" : "bearer", "expires_in" : 3600, "scope" : "scopename1 scopename2 scopenamex" }
The recommended default value for the "expires_in" is 3600s. The authorization server MUST provide the scopes which are made available (either all or a subset of the scopes supplied in the request).
The client utilizes the access token to authenticate with the resource using the HTTP "Authorization" request header field [RFC 2617] with an authentication scheme defined by the specification of the access token type used, such as [RFC 6750]. An example of the use of the bearer token is:
GET /resource/1 HTTP/1.1 Host: provider.example.com Authorization: Bearer 2YotnFZFEjr1zCsicMWpAA
NOTE: This exchange assumes that TLS is used to secure the link.
The set of scopes available in this service are listed in the following Tables.
This enables access to all of the endpoints. The set of service operations covered by this scope are listed in Table 4.3.1.
This enables access to the endoints that permit the management of Sections. The set of service operations covered by this scope are listed in Table 4.3.2.
This enables access to the endoints that permit the management of Sessions. The set of service operations covered by this scope are listed in Table 4.3.3.
This Section is NOT NORMATIVE.
The UML/JSON Mapping for the Service Parameters (excluding those service parameters passed as query parameters on the endpoint URL) to the JSON Payload Properties is given in Table 5.1. The syntax and semantics for this representation is described in Appendix A2.1.
Operation Name | Parameter Name | UML Class | JSON Name | JSON Type | JSON Schema Data Type |
---|---|---|---|---|---|
createSection | N/A (Flat data structure) | Section | N/A (Flat data structure) | Set of Properties | SectionDType |
createSection | sectionIdentifier | DT: LUID (PT: NCName) | sectionIdentifier | Property | N/A |
createSession | N/A (Flat data structure) | Session | N/A (Flat data structure) | Set of Properties | SessionDType |
createSession | sessionIdentifier | DT: LUID (PT: NCName) | sessionIdentifier | Property | N/A |
createSession | N/A (Flat data structure) | NextItemSet | N/A (Flat data structure) | Set of Properties | NextItemSetDType |
createSession | sessionState | DT: SessionState (PT: NormalizedString) | sessionState | Property | N/A |
getSection | itemIdentifiers | ItemSet | itemIdentifiers | Array of Objects | ItemSetDType |
getSection | N/A (Flat data structure) | Section | N/A (Flat data structure) | Set of Properties | SectionDType |
submitResults | N/A (Flat data structure) | Results | N/A (Flat data structure) | Set of Properties | ResultsDType |
submitResults | N/A (Flat data structure) | NextItemSet | N/A (Flat data structure) | Set of Properties | NextItemSetDType |
submitResults | N/A (Flat data structure) | AssessmentResult | N/A (Flat data structure) | Set of Properties | AssessmentResultDType |
submitResults | sessionState | DT: SessionState (PT: NormalizedString) | sessionState | Property | N/A |
The syntax and semantics for the Root Class UML/JSON mapping representations is described in Appendix A2.2.
The UML/JSON Mapping for the "Section" Service Parameter Payload Class is given in Table 5.2.1.
Information Model Details | JSON Binding Details | ||||
---|---|---|---|---|---|
Name | UML Artefact | Data Type | Multiplicity | Name | Type |
Section | Payload Parameter | Container [ Unordered ] | - N/A - | SectionDType | Object |
|
Attribute | QTIMetadata | [0..1] | qtiMetadata | Property |
|
Attribute | PT: String | [0..1] | qtiUsagedata | Property |
|
Attribute | PT: String | [1] | sectionConfiguration | Property |
The UML/JSON Mapping for the "LUID" Service Parameter Payload Class is given in Table 5.2.2.
Information Model Details | JSON Binding Details | ||||
---|---|---|---|---|---|
Name | UML Artefact | Data Type | Multiplicity | Name | Type |
LUID | Payload Parameter | Container [ DerivedType ] AND Inherits [ NCName ] | - N/A - | LUIDDType | Object |
The UML/JSON Mapping for the "ItemSet" Service Parameter Payload Class is given in Table 5.2.3.
Information Model Details | JSON Binding Details | ||||
---|---|---|---|---|---|
Name | UML Artefact | Data Type | Multiplicity | Name | Type |
ItemSet | Payload Parameter | Container [ Unordered ] | - N/A - | ItemSetDType | Object |
|
Attribute | DT: LUID (PT: NCName) | [1.. *] | itemIdentifiers | Array of Properties |
The UML/JSON Mapping for the "Session" Service Parameter Payload Class is given in Table 5.2.4.
Information Model Details | JSON Binding Details | ||||
---|---|---|---|---|---|
Name | UML Artefact | Data Type | Multiplicity | Name | Type |
Session | Payload Parameter | Container [ Unordered ] | - N/A - | SessionDType | Object |
|
Attribute | PT: NormalizedString | [0..1] | personalNeedsAndPreferences | Property |
|
Attribute | PT: NormalizedString | [0..1] | demographics | Property |
|
Attribute | KeyValuePair | [0.. *] | priorData | Array of Properties |
The UML/JSON Mapping for the "NextItemSet" Service Parameter Payload Class is given in Table 5.2.5.
Information Model Details | JSON Binding Details | ||||
---|---|---|---|---|---|
Name | UML Artefact | Data Type | Multiplicity | Name | Type |
NextItemSet | Payload Parameter | Container [ Unordered ] | - N/A - | NextItemSetDType | Object |
|
Attribute | DT: LUID (PT: NCName) | [1.. *] | itemIdentifiers | Array of Properties |
|
Attribute | PT: NonNegativeInteger | [0..1] | stageLength | Property |
The UML/JSON Mapping for the "SessionState" Service Parameter Payload Class is given in Table 5.2.6.
Information Model Details | JSON Binding Details | ||||
---|---|---|---|---|---|
Name | UML Artefact | Data Type | Multiplicity | Name | Type |
SessionState | Payload Parameter | Container [ DerivedType ] AND Inherits [ NormalizedString ] | - N/A - | SessionStateDType | Object |
The UML/JSON Mapping for the "Results" Service Parameter Payload Class is given in Table 5.2.7.
Information Model Details | JSON Binding Details | ||||
---|---|---|---|---|---|
Name | UML Artefact | Data Type | Multiplicity | Name | Type |
Results | Payload Parameter | Container [ Unordered ] | - N/A - | ResultsDType | Object |
|
Attribute | AssessmentResult | [1] | assessmentResult | Property |
|
Attribute | DT: SessionState (PT: NormalizedString) | [0..1] | sessionState | Property |
The UML/JSON Mapping for the "AssessmentResult" Service Parameter Payload Class is given in Table 5.2.8.
Information Model Details | JSON Binding Details | ||||
---|---|---|---|---|---|
Name | UML Artefact | Data Type | Multiplicity | Name | Type |
AssessmentResult | Payload Parameter | Container [ Sequence ] | - N/A - | AssessmentResultDType | Object |
|
Attribute | Context | [0..1] | context | Property |
|
Attribute | TestResult | [0..1] | testResult | Property |
|
Attribute | ItemResult | [0.. *] | itemResult | Array of Properties |
The syntax and semantics for the Data Class UML/JSON mapping representations is described in Appendix A2.2.
The Payload UML/JSON Mapping for the "CandidateResponse" Class is given in Table 5.3.1.
Information Model Details | JSON Binding Details | ||||
---|---|---|---|---|---|
Name | UML Artefact | Data Type | Multiplicity | Name | Type |
CandidateResponse | Core | Container [ Sequence ] | - N/A - | CandidateResponseDType | Object |
|
Attribute | Value | [0.. *] | value | Array of Properties |
The Payload UML/JSON Mapping for the "Context" Class is given in Table 5.3.2.
Information Model Details | JSON Binding Details | ||||
---|---|---|---|---|---|
Name | UML Artefact | Data Type | Multiplicity | Name | Type |
Context | Core | Container [ Sequence ] | - N/A - | ContextDType | Object |
|
Attribute | DT: LUID (PT: NCName) | [0..1] | sourcedId | Property |
|
Attribute | SessionIdentifier | [0.. *] | sessionIdentifiers | Array of Properties |
The Payload UML/JSON Mapping for the "CorrectResponse" Class is given in Table 5.3.3.
Information Model Details | JSON Binding Details | ||||
---|---|---|---|---|---|
Name | UML Artefact | Data Type | Multiplicity | Name | Type |
CorrectResponse | Core | Container [ Sequence ] | - N/A - | CorrectResponseDType | Object |
|
Attribute | PT: String | [0..1] | interpretation | Property |
|
Attribute | Value | [0.. *] | value | Array of Properties |
The Payload UML/JSON Mapping for the "ItemResult" Class is given in Table 5.3.4.
Information Model Details | JSON Binding Details | ||||
---|---|---|---|---|---|
Name | UML Artefact | Data Type | Multiplicity | Name | Type |
ItemResult | Core | Container [ Sequence ] | - N/A - | ItemResultDType | Object |
|
Attribute | DT: LUID (PT: NCName) | [1] | identifier | Property |
|
Attribute | PT: NonNegativeInteger | [0..1] | sequenceIndex | Property |
|
Attribute | PT: DateTime | [1] | datestamp | Property |
|
Attribute | [ Enumeration (SessionStatus) ] | [1] | sessionStatus | Property |
|
Attribute | ResponseVariable | [0.. *] | responseVariables | Array of Properties |
|
Attribute | TemplateVariable | [0.. *] | templateVariables | Array of Properties |
|
Attribute | OutcomeVariable | [0.. *] | outcomeVariables | Array of Properties |
|
Attribute | PT: String | [0..1] | candidateComment | Property |
The Payload UML/JSON Mapping for the "KeyValuePair" Class is given in Table 5.3.5.
Information Model Details | JSON Binding Details | ||||
---|---|---|---|---|---|
Name | UML Artefact | Data Type | Multiplicity | Name | Type |
KeyValuePair | Core | Container [ Unordered ] | - N/A - | KeyValuePairDType | Object |
|
Attribute | PT: AnyURI | [0..1] | glossaryURI | Property |
|
Attribute | PT: String | [1] | key | Property |
|
Attribute | PT: String | [1] | value | Property |
The Payload UML/JSON Mapping for the "OutcomeVariable" Class is given in Table 5.3.6.
Information Model Details | JSON Binding Details | ||||
---|---|---|---|---|---|
Name | UML Artefact | Data Type | Multiplicity | Name | Type |
OutcomeVariable | Core | Container [ Sequence ] | - N/A - | OutcomeVariableDType | Object |
|
Attribute | DT: LUID (PT: NCName) | [1] | identifier | Property |
|
Attribute | [ Enumeration (CardinalityEnum) ] | [1] | cardinality | Property |
|
Attribute | [ Enumeration (BaseTypeEnum) ] | [0..1] | baseType | Property |
|
Attribute | [ Enumeration (ViewEnum) ] | [0.. *] | view | Array of Properties |
|
Attribute | PT: String | [0..1] | interpretation | Property |
|
Attribute | PT: AnyURI | [0..1] | longInterpretation | Property |
|
Attribute | PT: Double | [0..1] | normalMaximum | Property |
|
Attribute | PT: Double | [0..1] | normalMinimum | Property |
|
Attribute | PT: Double | [0..1] | masteryValue | Property |
|
Attribute | Value | [0.. *] | value | Array of Properties |
The Payload UML/JSON Mapping for the "PCIContext" Class is given in Table 5.3.7.
Information Model Details | JSON Binding Details | ||||
---|---|---|---|---|---|
Name | UML Artefact | Data Type | Multiplicity | Name | Type |
PCIContext | Core | Container [ Sequence ] | - N/A - | PCIContextDType | Object |
|
Attribute | PT: NormalizedString | [0..1] | customTypeIdentifier | Property |
|
Attribute | PT: NormalizedString | [0..1] | interactionKind | Property |
The Payload UML/JSON Mapping for the "QTIMetadata" Class is given in Table 5.3.8.
Information Model Details | JSON Binding Details | ||||
---|---|---|---|---|---|
Name | UML Artefact | Data Type | Multiplicity | Name | Type |
QTIMetadata | Core | Container [ Sequence ] | - N/A - | QTIMetadataDType | Object |
|
Attribute | PT: Boolean | [0..1] | itemTemplate | Property |
|
Attribute | PT: Boolean | [0..1] | timeDependent | Property |
|
Attribute | PT: Boolean | [0..1] | composite | Property |
|
Attribute | [ Enumeration (InteractionTypeEnum) ] | [0.. *] | interactionType | Array of Properties |
|
Attribute | PCIContext | [0..1] | portableCustomInteractionContext | Property |
|
Attribute | [ Enumeration (FeedbackTypeEnum) ] | [0..1] | feedbackType | Property |
|
Attribute | PT: Boolean | [0..1] | solutionAvailable | Property |
|
Attribute | [ Enumeration (ScoringModeEnum) ] | [0.. *] | scoringMode | Array of Properties |
|
Attribute | DT: String256 (PT: String) | [0..1] | toolName | Property |
|
Attribute | DT: String256 (PT: String) | [0..1] | toolVersion | Property |
|
Attribute | DT: String256 (PT: String) | [0..1] | toolVendor | Property |
The Payload UML/JSON Mapping for the "ResponseVariable" Class is given in Table 5.3.9.
Information Model Details | JSON Binding Details | ||||
---|---|---|---|---|---|
Name | UML Artefact | Data Type | Multiplicity | Name | Type |
ResponseVariable | Core | Container [ Sequence ] | - N/A - | ResponseVariableDType | Object |
|
Attribute | DT: LUID (PT: NCName) | [1] | identifier | Property |
|
Attribute | [ Enumeration (CardinalityEnum) ] | [1] | cardinality | Property |
|
Attribute | [ Enumeration (BaseTypeEnum) ] | [0..1] | baseType | Property |
|
Attribute | DT: IdentifierList (PT: NCName) | [0.. *] | choiceSequence | Array of Properties |
|
Attribute | CorrectResponse | [0..1] | correctResponse | Property |
|
Attribute | CandidateResponse | [1] | candidateResponse | Property |
The Payload UML/JSON Mapping for the "SessionIdentifier" Class is given in Table 5.3.10.
Information Model Details | JSON Binding Details | ||||
---|---|---|---|---|---|
Name | UML Artefact | Data Type | Multiplicity | Name | Type |
SessionIdentifier | Core | Container [ Sequence ] | - N/A - | SessionIdentifierDType | Object |
|
Attribute | PT: AnyURI | [1] | sourceID | Property |
|
Attribute | DT: LUID (PT: NCName) | [1] | identifier | Property |
The Payload UML/JSON Mapping for the "TemplateVariable" Class is given in Table 5.3.11.
Information Model Details | JSON Binding Details | ||||
---|---|---|---|---|---|
Name | UML Artefact | Data Type | Multiplicity | Name | Type |
TemplateVariable | Core | Container [ Sequence ] | - N/A - | TemplateVariableDType | Object |
|
Attribute | DT: LUID (PT: NCName) | [1] | identifier | Property |
|
Attribute | [ Enumeration (CardinalityEnum) ] | [1] | cardinality | Property |
|
Attribute | [ Enumeration (BaseTypeEnum) ] | [0..1] | baseType | Property |
|
Attribute | Value | [0.. *] | value | Array of Properties |
The Payload UML/JSON Mapping for the "TestResult" Class is given in Table 5.3.12.
Information Model Details | JSON Binding Details | ||||
---|---|---|---|---|---|
Name | UML Artefact | Data Type | Multiplicity | Name | Type |
TestResult | Core | Container [ Sequence ] | - N/A - | TestResultDType | Object |
|
Attribute | DT: LUID (PT: NCName) | [1] | identifier | Property |
|
Attribute | PT: DateTime | [1] | datestamp | Property |
|
Attribute | ResponseVariable | [0.. *] | responseVariables | Array of Properties |
|
Attribute | TemplateVariable | [0.. *] | templateVariables | Array of Properties |
|
Attribute | OutcomeVariable | [0.. *] | outcomeVariables | Array of Properties |
The Payload UML/JSON Mapping for the "Value" Class is given in Table 5.3.13.
Information Model Details | JSON Binding Details | ||||
---|---|---|---|---|---|
Name | UML Artefact | Data Type | Multiplicity | Name | Type |
Value | Core | Container [ Sequence ] | - N/A - | ValueDType | Object |
|
Attribute | DT: LUID (PT: NCName) | [0..1] | fieldIdentifier | Property |
|
Attribute | [ Enumeration (BaseTypeEnum) ] | [0..1] | baseType | Property |
|
Attribute | PT: NormalizedString | [1] | value | Property |
The Payload UML/JSON Mapping for the "imsx_CodeMinor" Class is given in Table 5.3.14.
Information Model Details | JSON Binding Details | ||||
---|---|---|---|---|---|
Name | UML Artefact | Data Type | Multiplicity | Name | Type |
imsx_CodeMinor | Core | Container [ Sequence ] | - N/A - | imsx_CodeMinorDType | Object |
|
Attribute | imsx_CodeMinorField | [1.. *] | imsx_codeMinorField | Array of Properties |
The Payload UML/JSON Mapping for the "imsx_CodeMinorField" Class is given in Table 5.3.15.
Information Model Details | JSON Binding Details | ||||
---|---|---|---|---|---|
Name | UML Artefact | Data Type | Multiplicity | Name | Type |
imsx_CodeMinorField | Core | Container [ Sequence ] | - N/A - | imsx_CodeMinorFieldDType | Object |
|
Attribute | PT: NormalizedString | [1] | imsx_codeMinorFieldName | Property |
|
Attribute | [ Enumeration (imsx_CodeMinorValueEnum) ] | [1] | imsx_codeMinorFieldValue | Property |
The Payload UML/JSON Mapping for the "imsx_StatusInfo" Class is given in Table 5.3.16.
Information Model Details | JSON Binding Details | ||||
---|---|---|---|---|---|
Name | UML Artefact | Data Type | Multiplicity | Name | Type |
imsx_StatusInfo | Core | Container [ Sequence ] | - N/A - | imsx_StatusInfoDType | Object |
|
Attribute | [ Enumeration (imsx_CodeMajorEnum) ] | [1] | imsx_codeMajor | Property |
|
Attribute | [ Enumeration (imsx_SeverityEnum) ] | [1] | imsx_severity | Property |
|
Attribute | PT: String | [0..1] | imsx_description | Property |
|
Attribute | imsx_CodeMinor | [0..1] | imsx_codeMinor | Property |
The definition of the set of enumerated data-types used in this specification is given in Table 5.4. The syntax and semantics for the Enumerated Class UML/JSON mapping representations is described in Appendix A2.3.
There are no enumerated list class definitions.
There are no union class definitions.
The definition of the set of primitive data-types used in this specification is given in Table 5.7. The syntax and semantics for the Primitive Type UML/JSON mapping representations is described in Appendix A2.4.
This Section is NOT NORMATIVE.
A tabular description of the request payload is shown in the Table below.
Property Name | Multiplicity | JSON Data-type | Description |
---|---|---|---|
qtiMetadata | [0..1] | Object | This is the container for the QTI metadata. Part of this metadata uses the IMS QTI 3.0 Metadata model [QTI, 20d]. |
itemTemplate | [0..1] | Boolean | True if the item is actually an item template, in other words, the item changes its appearance based on some random or external factor. An assessmentItem that contains a templateProcessing section. |
timeDependent | [0..1] | Boolean | Whether or not the item is time dependent. A time dependent item takes the length of time taken for an attempt into consideration when scoring. |
composite | [0..1] | Boolean | True if the item comprises more than one interaction, for example, an assessmentItem that contains more than one interaction. |
interactionType | [0..*] | Array [ Enumeration ] | The interaction type(s) of the item. The vocabulary is comprised of the names, as defined in the information model, of the leaf classes derived from interaction. |
portableCustomInteractionContext | [0..1] | Object | When the Item uses a Portable Custom Interaction (PCI), this attribute is used to provide further contextual information about that PCI. |
customTypeIdentifier | [0..1] | String | This is used alongside an 'interactionType' value of 'portableCustomInteraction' to disambiguate which class of PCI is in use as PCIs can vary widely in terms of how they might need to be psychometrically analyzed. This field could potentially also be used to identify which type of a traditional customInteraction is in use by the item. |
interactionKind | [0..1] | String | This is used to provide insight into the nature of the PCI e.g. this is a PCI which allows a user to add notes to a musical stave to author some music that might be given a description of 'authoring'. This information could be used by a psychometrician, etc. as an indication of a similar type of standard interaction. |
feedbackType | [0..1] | Enumeration | Describes the type of feedback, if any, available in the item. If feedback is available then it is described as being non-adaptive or adaptive depending on whether the item is itself adaptive. A non-adaptive item generates feedback based on the responses submitted as part of (the last) attempt only. An adaptive item generates feedback that takes into consideration the path taken through the item, in other words, feedback based on the accumulation of all attempts and not just the last. |
solutionAvailable | [0..1] | Boolean | Set to true if a model solution is available for the item. For example, an assessmentItem that provides correct responses for all declared response variables. |
scoringMode | [0..*] | Array [ Enumeration ] | The scoringMode is used to denote that the way in which the scoring is achieved. If the Item includes the response processing then the mode is 'responseprocessing'. If human scoring is required the value is 'human' and if some form of machine processing is required then the value is 'externalmachine'. |
toolName | [0..1] | String | The name of the tool used to author the evaluation object. |
toolVersion | [0..1] | String | The version of the tool used to author the evaluation object. |
toolVendor | [0..1] | String | The company which produced the tool used to author the evaluation object. |
qtiUsagedata | [0..1] | String | This is the Base64 encoded XML conforming to IMS QTI 3.0 Usage Date data model [QTI, 20c]. |
sectionConfiguration | [1..1] | String | This is the Base64 encoded data containing section configuration, aligned with adaptive engine (black box). This format will be proprietary to each adaptive CAT Engine. |
An example of the request payload is shown in the code block below.
A tabular description of the response payload is shown in the Table below.
Property Name | Multiplicity | JSON Data-type | Description |
---|
An example of the response JSON payload is shown in the code block below. The JSON Schema file that can be used to validate this payload is given in Appendix C1.1b.
{ "sectionIdentifier" : "..String(NCName).." } |
A tabular description of the response payload is shown in the Table below.
An example of the response JSON payload is shown in the code block below. The JSON Schema file that can be used to validate this payload is given in Appendix C1.1c.
A tabular description of the request payload is shown in the Table below.
Property Name | Multiplicity | JSON Data-type | Description |
---|---|---|---|
personalNeedsAndPreferences | [0..1] | String | This is the Base64 encoded XML data for the Personal Needs and Preferences (PNP) for the examinee. This data conforms to the XML as defined in the IMS Access for All Personal Needs and Preferences (AfAPNP) 3.0 XML Binding specification [AFAPNP, 20]. |
demographics | [0..1] | String | The Base64 encoding of the JSON data for the Demographics information for the examinee. This data conforms to the JSON as defined in the IMS OneRoster 1.1 specification [OR, 17]. |
priorData | [0..*] | Array [ Object ] | This is proprietary data that is supplied to the CAT Engine as a key/value pairs. |
glossaryURI | [0..1] | String (Format: uri) | This is a URI to the definition of the data being supplied in this accompanying key/value pair. This definition should provide a human readable description of the data-type and value space for the value being identified by its key. |
key | [1..1] | String | The key for the value to be supplied. |
value | [1..1] | String | The value being supplied. |
An example of the request payload is shown in the code block below.
An example of the response payload is shown in the code block below. The JSON Schema file that can be used to validate this payload is given in Appendix C1.2b.
A tabular description of the response payload is shown in the Table below.
An example of the response JSON payload is shown in the code block below. The JSON Schema file that can be used to validate this payload is given in Appendix C1.2c.
There is no payload for this request.
There is no payload for these responses i.e. only a HTTP response header is returned.
A tabular description of the response payload is shown in the Table below.
An example of the response JSON payload is shown in the code block below. The JSON Schema file that can be used to validate this payload is given in Appendix C1.3c.
There is no payload for this request.
There is no payload for these responses i.e. only a HTTP response header is returned.
A tabular description of the response payload is shown in the Table below.
An example of the response JSON payload is shown in the code block below. The JSON Schema file that can be used to validate this payload is given in Appendix C1.4c.
There is no payload for this request.
An example of the response payload is shown in the code block below. The JSON Schema file that can be used to validate this payload is given in Appendix C1.5b.
A tabular description of the response payload is shown in the Table below.
An example of the response JSON payload is shown in the code block below. The JSON Schema file that can be used to validate this payload is given in Appendix C1.5c.
A tabular description of the request payload is shown in the Table below.
Property Name | Multiplicity | JSON Data-type | Description |
---|---|---|---|
assessmentResult | [1..1] | Object | The set of actual results achieved by the examinee (this is equivalent to the IMS QTI 2.2 Results Reporting data model [QTI, 20b]). |
context | [0..1] | Object | Contains contextual information for the associated testResult and itemResults. |
sourcedId | [0..1] | String | A unique identifier for the test candidate. |
sessionIdentifiers | [0..*] | Array [ Object ] | The system that creates the result (for example, the test delivery system) should assign a session identifier that it can use to identify the session. Subsequent systems that process the result might assign their own identifier to the session which should be added to the context if the result is modified and exported for transport again. |
sourceID | [1..1] | String (Format: uri) | A unique identifier of the system which added this identifier to the result. |
identifier | [1..1] | String | The system that creates the report should add a session identifier. Subsequent systems that process the results might use their own identifier for the session and should add this too if the result is exported again for further transport. |
testResult | [0..1] | Object | A summary report for a test is represented by an assessment result containing a testResult but no itemResults. |
identifier | [1..1] | String | The identifier of the test for which this is a result. |
datestamp | [1..1] | String (Format: date-time) | The date stamp of when this result was recorded. |
responseVariables | [0..*] | Array [ Object ] | Indicates that a Response Variable is being reported. This is the value of one of the responses associated with an Item in the corresponding ASI instance [QTI, 20a]. |
identifier | [1..1] | String | The identifier of the Response Variable. |
cardinality | [1..1] | Enumeration | The cardinality of the Response Variable, taken from the corresponding declaration or definition. |
baseType | [0..1] | Enumeration | The base type of the Response Variable, taken from the corresponding declaration of definition. This value is omitted only for variables with record cardinality. |
choiceSequence | [0..*] | Array [ String ] | When a response variable is bound to an interaction that supports the shuffling of choices, the sequence of choices experienced by the candidate will vary between test instances. When shuffling is in effect, the sequence of choices should be reported as a sequence of choice identifiers using this attribute. |
correctResponse | [0..1] | Object | The correct response may be output as part of the report if desired. Systems are not limited to reporting correct responses declared in responseDeclarations. For example, a correct response may be set by a templateRule or may simply have been suppressed from the declaration passed to the delivery engine e.g. for security. |
interpretation | [0..1] | String | A human readable interpretation of the correct value. |
value | [0..*] | Array [ Object ] | The order of the values is signficant only when the response is of ordered cardinality. |
fieldIdentifier | [0..1] | String | This attribute is only used for specifying the field identifier for a value that forms part of a record. |
baseType | [0..1] | Enumeration | This attribute is only used for specifying the base-type of a value that forms part of a record. |
value | [1..1] | String | The value being supplied. |
candidateResponse | [1..1] | Object | The response given by the candidate. |
value | [0..*] | Array [ Object ] | The value(s) of the response variable. A NULL value, resulting from no response, is indicated by the absence of any value. The order of the values is significant only if the response was declared with ordered cardinality. |
fieldIdentifier | [0..1] | String | This attribute is only used for specifying the field identifier for a value that forms part of a record. |
baseType | [0..1] | Enumeration | This attribute is only used for specifying the base-type of a value that forms part of a record. |
value | [1..1] | String | The value being supplied. |
templateVariables | [0..*] | Array [ Object ] | Indicates that a Template Variable is being reported. This is the value of one of the template variables associated with an Item in the corresponding ASI instance [QTI, 20a]. |
identifier | [1..1] | String | The identifier of the Template Variable. |
cardinality | [1..1] | Enumeration | The cardinality of the Template Variable, taken from the corresponding declaration or definition. |
baseType | [0..1] | Enumeration | The base type of the Template Variable, taken from the corresponding declaration of definition. This value is omitted only for variables with record cardinality. |
value | [0..*] | Array [ Object ] | The value(s) of the template variable. The order of the values is significant only if the template variable was declared with ordered cardinality. |
fieldIdentifier | [0..1] | String | This attribute is only used for specifying the field identifier for a value that forms part of a record. |
baseType | [0..1] | Enumeration | This attribute is only used for specifying the base-type of a value that forms part of a record. |
value | [1..1] | String | The value being supplied. |
outcomeVariables | [0..*] | Array [ Object ] | Indicates that an Outcome Variable is being reported. This is the value of one of the outcomes associated with either an Item or Test and defined in the corresponding ASI instance [QTI, 20a]. |
identifier | [1..1] | String | The identifier of the Outcome Variable. |
cardinality | [1..1] | Enumeration | The cardinality of the Outcome Variable, taken from the corresponding declaration or definition. |
baseType | [0..1] | Enumeration | The base type of the Outcome Variable, taken from the corresponding declaration of definition. This value is omitted only for variables with record cardinality. |
view | [0..*] | Array [ Enumeration ] | The views (if any) declared for the outcome must be copied to the report to enable systems that render the report to hide information not relevant in a specific situation. If no values are given, the outcome's value should be considered relevant in all views. |
interpretation | [0..1] | String | A human readable interpretation of the default value. |
longInterpretation | [0..1] | String (Format: uri) | An optional link to an extended interpretation of the outcome variable's value. |
normalMaximum | [0..1] | Double | The normalMaximum attribute optionally defines the maximum magnitude of numeric outcome variables, it must be a positive value. If given, the outcome's value can be divided by normalMaximum and then truncated (if necessary) to obtain a normalized score in the range [-1.0,1.0]. normalMaximum has no affect on responseProcessing or the values that the outcome variable itself can take. |
normalMinimum | [0..1] | Double | The normalMinimum attribute optionally defines the minimum value of numeric outcome variables, it may be negative. |
masteryValue | [0..1] | Double | The masteryValue attribute optionally defines a value for numeric outcome variables above which the aspect being measured is considered to have been mastered by the candidate. |
value | [0..*] | Array [ Object ] | The value(s) of the outcome variable. The order of the values is significant only if the outcome was declared with ordered cardinality. |
fieldIdentifier | [0..1] | String | This attribute is only used for specifying the field identifier for a value that forms part of a record. |
baseType | [0..1] | Enumeration | This attribute is only used for specifying the base-type of a value that forms part of a record. |
value | [1..1] | String | The value being supplied. |
itemResult | [0..*] | Array [ Object ] | When a test result is given the following item results must relate only to items that were selected for presentation as part of the corresponding test session. Furthermore, all items selected for presentation should be reported with a corresponding itemResult. |
identifier | [1..1] | String | The identifier of the item for which this is a result. For item results that are reported as part of a test result this is the identifier used to refer to the item in the test (see assessmentItemRef). For item results that are reported on their own, this can be any suitable identifier for the item. Where possible, the value should match the identifier attribute on the associated assessmentItem. |
sequenceIndex | [0..1] | Integer (Format: int32; Minimum: 0) | For item results that are reported as part of a test, this attribute must be used to indicate the position of the item within the specific instance of the test. The first item of the first part of the test is defined to have sequence index 1. |
datestamp | [1..1] | String (Format: date-time) | The date stamp of when this result was recorded. |
sessionStatus | [1..1] | Enumeration | The session status is used to interpret the values of the item variables. See the sessionStatus vocabulary. |
responseVariables | [0..*] | Array [ Object ] | Indicates that a Response Variable is being reported. This is the value of one of the responses associated with an Item in the corresponding ASI instance. |
identifier | [1..1] | String | The identifier of the Response Variable. |
cardinality | [1..1] | Enumeration | The cardinality of the Response Variable, taken from the corresponding declaration or definition. |
baseType | [0..1] | Enumeration | The base type of the Response Variable, taken from the corresponding declaration of definition. This value is omitted only for variables with record cardinality. |
choiceSequence | [0..*] | Array [ String ] | When a response variable is bound to an interaction that supports the shuffling of choices, the sequence of choices experienced by the candidate will vary between test instances. When shuffling is in effect, the sequence of choices should be reported as a sequence of choice identifiers using this attribute. |
correctResponse | [0..1] | Object | The correct response may be output as part of the report if desired. Systems are not limited to reporting correct responses declared in responseDeclarations. For example, a correct response may be set by a templateRule or may simply have been suppressed from the declaration passed to the delivery engine e.g. for security. |
interpretation | [0..1] | String | A human readable interpretation of the correct value. |
value | [0..*] | Array [ Object ] | The order of the values is signficant only when the response is of ordered cardinality. |
fieldIdentifier | [0..1] | String | This attribute is only used for specifying the field identifier for a value that forms part of a record. |
baseType | [0..1] | Enumeration | This attribute is only used for specifying the base-type of a value that forms part of a record. |
value | [1..1] | String | The value being supplied. |
candidateResponse | [1..1] | Object | The response given by the candidate. |
value | [0..*] | Array [ Object ] | The value(s) of the response variable. A NULL value, resulting from no response, is indicated by the absence of any value. The order of the values is significant only if the response was declared with ordered cardinality. |
fieldIdentifier | [0..1] | String | This attribute is only used for specifying the field identifier for a value that forms part of a record. |
baseType | [0..1] | Enumeration | This attribute is only used for specifying the base-type of a value that forms part of a record. |
value | [1..1] | String | The value being supplied. |
templateVariables | [0..*] | Array [ Object ] | Indicates that a Template Variable is being reported. This is the value of one of the template variables associated with an Item in the corresponding ASI instance. |
identifier | [1..1] | String | The identifier of the Template Variable. |
cardinality | [1..1] | Enumeration | The cardinality of the Template Variable, taken from the corresponding declaration or definition. |
baseType | [0..1] | Enumeration | The base type of the Template Variable, taken from the corresponding declaration of definition. This value is omitted only for variables with record cardinality. |
value | [0..*] | Array [ Object ] | The value(s) of the template variable. The order of the values is significant only if the template variable was declared with ordered cardinality. |
fieldIdentifier | [0..1] | String | This attribute is only used for specifying the field identifier for a value that forms part of a record. |
baseType | [0..1] | Enumeration | This attribute is only used for specifying the base-type of a value that forms part of a record. |
value | [1..1] | String | The value being supplied. |
outcomeVariables | [0..*] | Array [ Object ] | Indicates that an Outcome Variable is being reported. This is the value of one of the outcomes associated with either an Item or Test and defined in the corresponding ASI instance. |
identifier | [1..1] | String | The identifier of the Outcome Variable. |
cardinality | [1..1] | Enumeration | The cardinality of the Outcome Variable, taken from the corresponding declaration or definition. |
baseType | [0..1] | Enumeration | The base type of the Outcome Variable, taken from the corresponding declaration of definition. This value is omitted only for variables with record cardinality. |
view | [0..*] | Array [ Enumeration ] | The views (if any) declared for the outcome must be copied to the report to enable systems that render the report to hide information not relevant in a specific situation. If no values are given, the outcome's value should be considered relevant in all views. |
interpretation | [0..1] | String | A human readable interpretation of the default value. |
longInterpretation | [0..1] | String (Format: uri) | An optional link to an extended interpretation of the outcome variable's value. |
normalMaximum | [0..1] | Double | The normalMaximum attribute optionally defines the maximum magnitude of numeric outcome variables, it must be a positive value. If given, the outcome's value can be divided by normalMaximum and then truncated (if necessary) to obtain a normalized score in the range [-1.0,1.0]. normalMaximum has no affect on responseProcessing or the values that the outcome variable itself can take. |
normalMinimum | [0..1] | Double | The normalMinimum attribute optionally defines the minimum value of numeric outcome variables, it may be negative. |
masteryValue | [0..1] | Double | The masteryValue attribute optionally defines a value for numeric outcome variables above which the aspect being measured is considered to have been mastered by the candidate. |
value | [0..*] | Array [ Object ] | The value(s) of the outcome variable. The order of the values is significant only if the outcome was declared with ordered cardinality. |
fieldIdentifier | [0..1] | String | This attribute is only used for specifying the field identifier for a value that forms part of a record. |
baseType | [0..1] | Enumeration | This attribute is only used for specifying the base-type of a value that forms part of a record. |
value | [1..1] | String | The value being supplied. |
candidateComment | [0..1] | String | An optional comment supplied by the candidate (see the allowComment in the ASI documentation [QTI, 20a]). |
sessionState | [0..1] | String | The session state information. This is the data that was supplied by the CAT Engine when the session was created or the next set of Items was requested. |
An example of the request payload is shown in the code block below.
An example of the response payload is shown in the code block below. The JSON Schema file that can be used to validate this payload is given in Appendix C1.6b.
A tabular description of the response payload is shown in the Table below.
An example of the response JSON payload is shown in the code block below. The JSON Schema file that can be used to validate this payload is given in Appendix C1.6c.
This Section is NORMATIVE.
The set of General Information defined in the OpenAPI description, and realised in both the JSON and YAML instances, are listed in Tables 7.1a (version 2) and 7.1b (version 3). The syntax and semantics for this information are described in Appendix A3.1.
The set of Tags defined in the OpenAPI description, and realised in both the JSON and YAML instances, is listed in Table 7.2. The syntax and semantics for these Tags are described in Appendix A3.2.
Tag Name | Description |
---|---|
SectionsManager | The set of service operations that manage access to the adaptive Sections being handled by the CAT Engine. The set of endpoints assigned to this tag are:
|
SessionsManager | The set of service operations that manage access to the adaptive Sessions being handled by the CAT Engine. The set of endpoints assigned to this tag are: |
The OAuth 2 Client Credentials security mode is used for this service. Table 7.3.1 describes the OpenAPI information for the configuration of the OAuth 2.0 Client Credentials. The syntax and semantics for this information are described in Appendix A3.3.
The following Tables describe the OpenAPI information for each of the Paths. The syntax and semantics for these Paths are described in Appendix A3.4.
The following Table describes the OpenAPI information for the HTTP Verb "POST" on the "/sections" Path.
HTTP Verb: POST | |||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Operation ID | createSection | ||||||||||||||||||
Summary | The REST "createbp" request message for the "createSection()" API call. | ||||||||||||||||||
Tags | SectionsManager | ||||||||||||||||||
Security and Scopes |
The security modes protecting access to this endpoint are:
The scopes that enable access to this endpoint are:
|
||||||||||||||||||
Description | This is a request to the CAT Engine to create a new adaptive Section. The CAT Engine is responsible for assigning the unique identifier to be used for this Section in other exchanges. This request is NOT idempotent. | ||||||||||||||||||
Path Placeholders | Path placeholders are not permitted. | ||||||||||||||||||
Query Parameters | Query parameters are not permitted. | ||||||||||||||||||
Responses |
|
The following Table describes the OpenAPI information for the HTTP Verb "GET" on the "/sections/{sectionIdentifier}" Path.
HTTP Verb: GET | ||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Operation ID | getSection | |||||||||||||||||||||
Summary | The REST "read" request message for the "getSection()" API call. | |||||||||||||||||||||
Tags | SectionsManager | |||||||||||||||||||||
Security and Scopes |
The security modes protecting access to this endpoint are:
The scopes that enable access to this endpoint are:
|
|||||||||||||||||||||
Description | This request returns the parameters which were used by the CAT engine to create the adaptive section, and the list of the items in the adaptive section's item pool, as configured by the CAT engine. It is recommended that assessment platforms and/or delivery engines use this request to verify that the item pool, as configured by the CAT engine, corresponds exactly to the list of items in the QTI source for the adaptive section. It is also recommended that test administrators verify that each item in the item pool is accessible and deliverable before commencing delivery of candidate sessions. The Get Section request may be used for this, and may be made at any time after a successful Create Section request, as many times as required. | |||||||||||||||||||||
Path Placeholders |
|
|||||||||||||||||||||
Query Parameters | Query parameters are not permitted. | |||||||||||||||||||||
Responses |
|
The following Table describes the OpenAPI information for the HTTP Verb "DELETE" on the "/sections/{sectionIdentifier}" Path.
HTTP Verb: DELETE | ||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Operation ID | endSection | |||||||||||||||||||||
Summary | The REST "delete" request message for the "endSection()" API call. | |||||||||||||||||||||
Tags | SectionsManager | |||||||||||||||||||||
Security and Scopes |
The security modes protecting access to this endpoint are:
The scopes that enable access to this endpoint are:
|
|||||||||||||||||||||
Description | This request ends all candidate sessions for the section which have not already ended, and ends the section. The sectionIdentifier, sessionIdentifiers, and sessionStates returned from previous requests related to the section become invalid. The delivery engine should not make any further requests related to the section or any session for the section. For a REST-based binding this request uses the DELETE HTTP method because of REST conventions, but the CAT engine is not required to physically delete any session or section data. This request should not be repeated once it has succeeded. | |||||||||||||||||||||
Path Placeholders |
|
|||||||||||||||||||||
Query Parameters | Query parameters are not permitted. | |||||||||||||||||||||
Responses |
|
The following Table describes the OpenAPI information for the HTTP Verb "POST" on the "/sections/{sectionIdentifier}/sessions" Path.
HTTP Verb: POST | ||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Operation ID | createSession | |||||||||||||||||||||
Summary | The REST "createbp" request message for the "createSession()" API call. | |||||||||||||||||||||
Tags | SessionsManager | |||||||||||||||||||||
Security and Scopes |
The security modes protecting access to this endpoint are:
The scopes that enable access to this endpoint are:
|
|||||||||||||||||||||
Description | This request initializes a candidate session for the adaptive section. The request optionally provides the CAT engine with information related to the candidate. The CAT engine returns the initial stage (list of items) to be presented to the candidate. This request may be made multiple times after a successful Create Section request, once per candidate, when each candidate enters the adaptive section on the test. This request is NOT idempotent. | |||||||||||||||||||||
Path Placeholders |
|
|||||||||||||||||||||
Query Parameters | Query parameters are not permitted. | |||||||||||||||||||||
Responses |
|
The following Table describes the OpenAPI information for the HTTP Verb "DELETE" on the "/sections/{sectionIdentifier}/sessions/{sessionIdentifier}" Path.
HTTP Verb: DELETE | ||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Operation ID | endSession | |||||||||||||||||||||
Summary | The REST "delete" request message for the "endSession()" API call. | |||||||||||||||||||||
Tags | SessionsManager | |||||||||||||||||||||
Security and Scopes |
The security modes protecting access to this endpoint are:
The scopes that enable access to this endpoint are:
|
|||||||||||||||||||||
Description | This request ends the candidate session. The sessionIdentifier, and the sessionState returned from any previous request in the session, become invalid. The delivery engine should not make any further requests related to the session. For a REST-based binding this request uses the DELETE HTTP method because of REST conventions; but it is not required that CAT engines physically delete data or resources associated with the session. If the identified session cannot be found then the 'unknownobject' status code must be reported. | |||||||||||||||||||||
Path Placeholders |
|
|||||||||||||||||||||
Query Parameters | Query parameters are not permitted. | |||||||||||||||||||||
Responses |
|
The following Table describes the OpenAPI information for the HTTP Verb "POST" on the "/sections/{sectionIdentifier}/sessions/{sessionIdentifier}/results" Path.
HTTP Verb: POST | ||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Operation ID | submitResults | |||||||||||||||||||||
Summary | The REST "update" request message for the "submitResults()" API call. | |||||||||||||||||||||
Tags | SessionsManager | |||||||||||||||||||||
Security and Scopes |
The security modes protecting access to this endpoint are:
The scopes that enable access to this endpoint are:
|
|||||||||||||||||||||
Description | This request sends the results from the current item stage in a candidate session to the CAT engine. The CAT engine returns its computed outcome variable values for the current stage and the test as a whole. It also returns the next item stage to be presented to the candidate. Instead of the next item stage, it may also return an indication that the adaptive section has ended, by returning an empty list for nextItems. If the identified Section/Session cannot be found then the 'unknownobject' status code must be reported. | |||||||||||||||||||||
Path Placeholders |
|
|||||||||||||||||||||
Query Parameters | Query parameters are not permitted. | |||||||||||||||||||||
Responses |
|
The following Tables describe the OpenAPI information for each of the JSON Schema Definitions. The syntax and semantics for these JSON Schema Definition descriptions are described in Appendix A3.5.
This complexType has been created because the response message is a compound structure of more than one returned parameter. The OpenAPI JSON Schema description for the "CreateSessionResponseBodyDType" Complex Type is given in Table 7.5.1.
This complexType has been created because the response message is a compound structure of more than one returned parameter. The OpenAPI JSON Schema description for the "GetSectionResponseBodyDType" Complex Type is given in Table 7.5.2.
This complexType has been created because the response message is a compound structure of more than one returned parameter. The OpenAPI JSON Schema description for the "SubmitResultsResponseBodyDType" Complex Type is given in Table 7.5.3.
This complexType has been created because the response message is a compound structure of more than one returned parameter. The OpenAPI JSON Schema description for the "CreateSectionResponseBodyDType" Complex Type is given in Table 7.5.4.
The OpenAPI JSON Schema description for the "AssessmentResultDType" Complex Type is given in Table 7.5.5.
The OpenAPI JSON Schema description for the "CandidateResponseDType" Complex Type is given in Table 7.5.6.
The OpenAPI JSON Schema description for the "ContextDType" Complex Type is given in Table 7.5.7.
The OpenAPI JSON Schema description for the "CorrectResponseDType" Complex Type is given in Table 7.5.8.
The OpenAPI JSON Schema description for the "ItemResultDType" Complex Type is given in Table 7.5.9.
The OpenAPI JSON Schema description for the "ItemSetDType" Complex Type is given in Table 7.5.10.
The OpenAPI JSON Schema description for the "KeyValuePairDType" Complex Type is given in Table 7.5.11.
The OpenAPI JSON Schema description for the "NextItemSetDType" Complex Type is given in Table 7.5.12.
The OpenAPI JSON Schema description for the "OutcomeVariableDType" Complex Type is given in Table 7.5.13.
The OpenAPI JSON Schema description for the "PCIContextDType" Complex Type is given in Table 7.5.14.
The OpenAPI JSON Schema description for the "QTIMetadataDType" Complex Type is given in Table 7.5.15.
The OpenAPI JSON Schema description for the "ResponseVariableDType" Complex Type is given in Table 7.5.16.
The OpenAPI JSON Schema description for the "ResultsDType" Complex Type is given in Table 7.5.17.
The OpenAPI JSON Schema description for the "SectionDType" Complex Type is given in Table 7.5.18.
The OpenAPI JSON Schema description for the "SessionDType" Complex Type is given in Table 7.5.19.
The OpenAPI JSON Schema description for the "SessionIdentifierDType" Complex Type is given in Table 7.5.20.
The OpenAPI JSON Schema description for the "TemplateVariableDType" Complex Type is given in Table 7.5.21.
The OpenAPI JSON Schema description for the "TestResultDType" Complex Type is given in Table 7.5.22.
The OpenAPI JSON Schema description for the "ValueDType" Complex Type is given in Table 7.5.23.
The OpenAPI JSON Schema description for the "imsx_CodeMinorDType" Complex Type is given in Table 7.5.24.
The OpenAPI JSON Schema description for the "imsx_CodeMinorFieldDType" Complex Type is given in Table 7.5.25.
The OpenAPI JSON Schema description for the "imsx_StatusInfoDType" Complex Type is given in Table 7.5.26.
Proprietary extensions of the service are based upon two approaches:
It is NOT permitted to change the behavior of the current set of operations. Such changes MUST be supported by the creation of new operations.
The definition of new operations should follow the same format as adopted herein. The new operations should be defined using a new interface type. Every operation must result in the return of a status code that describes the final state of the request on the target end system. A new version of the OpenAPI files should also be generated with the new operation definitions.
An example of creating such an extension is given in the accompanying Best Practices document [CAT, 20c].
Currently, data extensions are NOT permitted. Within the OpenAPI files, data extensions are explicitly prohibited by the JSON Schema definition.
This Service can be profiled. In general, Profiling is used to:
Valid Profiles must be restrictive i.e. optional features can be removed or constraints increased but new features must not be added. A Profile of this service is made by annotating the UML supplied with the documentation for the specification.
It is strongly recommended that a profile of this specification is undertaken either by, or with the close support, of IMS Global. However, no matter who is responsible for creating the profile artifacts (documents, OpenAPI files, XSDs, etc.), it is strongly recommended that the IMS specification tools are used. This will ensure that the artifacts are consistent with the base specifications and that useful support documentation is automatically produced e.g. creation of a document that summarizes the differences between the base specification and the profile. Organizations wishing to produce a profile of this specification should contact Lisa Mattson (IMS Global Chief Operations Officer) at: lmattson@imsglobal.org.
[AFAPNP, 20] | Access for All Personal Needs and Preferences (AFA PNP) 3.0 XSD Binding Candidate Final 2.0, Tom Hoffman, Madeleine Rithberg and Colin Smythe, IMS Global Learning Consortium Inc., June 2020, https://www.imsglobal.org/afa/latest. |
[CAT, 20a] | IMS Computer Adaptive Testing (CAT) 1.0 Service Model Public Candidate Final Document, J.Carlson, M.Molenaar, M.McKell and C.Smythe, IMS Global Learning Consortium Inc., November 2020, www.imsglobal.org/spec/cat/latest. |
[CAT, 20b] | IMS Computer Adaptive Testing (CAT) 1.0 Conformance and Certification Public Candidate Final Document, J.Carlson, M.Molenaar, M.McKell and C.Smythe, IMS Global Learning Consortium Inc., November 2020, www.imsglobal.org/spec/cat/latest. |
[CAT, 20c] | IMS Computer Adaptive Testing (CAT) 1.0 Implementation Guide Public Candidate Final Document, J.Carlson, M.Molenaar, M.McKell and C.Smythe, IMS Global Learning Consortium Inc., November 2020, www.imsglobal.org/spec/cat/latest. |
[I-BAT, 06] | IMS Binding Auto-generation Toolkit (I-BAT), C.Smythe, IMS Global Learning Consortium Inc., July, 2006. |
[ISO 8601] | ISO8601:2004 Data elements and interchange formats - Information interchange - Representation of dates and times, ISO, International Standards Organization (ISO), 2000. |
[OAS, 14] | OpenAPI Specification (version 2), D.Miller, J.Harmon, J.Whitlock, K.Hahn, M.Gardiner, M.Ralphson, R.Dolin, R.Ratovsky and T.Tam, OpenAPI Initiative (Linux Foundation), September 2014, https://github.com/OAI/OpenAPI-Specification/blob/master/versions/2.0.md. |
[OAS, 17] | OpenAPI Specification (version 3), D.Miller, J.Whitlock, M.Gardiner, M.Ralphson, R.Ratovsky and U.Sarid, OpenAPI Initiative (Linux Foundation), July 2017, https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.0.0.md. |
[OR, 17] | OneRoster 1.1 REST/JSON Service Final Release 1.0, C.Smythe and P.Nicholls, IMS Global Learning Consortium Inc., April 2017, https://www.imsglobal.org/oneroster-v11-final-specification. |
[QTI, 20a] | IMS Question and Test Interoperability (QTI): Assessment, Section and Item (ASI) Information Model v3.0, Gary Driscoll, Tom Hoffmann, Justin Marks, Paul Grudnitski, Mark Molenaar, Colin Smythe and Mark McKell, IMS Global Learning Consortium Inc., June 2020, https://www.imsglobal.org/question/qtiv3p0/imsqtiv3p0_asi_infomodelcfv1p0.html. |
[QTI, 20b] | IMS Question and Test Interoperability (QTI) 3.0 Results Reporting Information Model 1.0, Gary Driscoll, Tom Hoffmann, Justin Marks, Paul Grudnitski, Mark Molenaar, Colin Smythe and Mark McKell, IMS Global Learning Consortium Inc., June 2020, https://www.imsglobal.org/question/qtiv3p0/imsqtiv3p0_results_infobindcfv1p0.html. |
[QTI, 20c] | IMS Question and Test Interoperability (QTI) 3.0 Usage Data Information Model 1.0, Gary Driscoll, Tom Hoffmann, Justin Marks, Paul Grudnitski, Mark Molenaar, Colin Smythe and Mark McKell, IMS Global Learning Consortium Inc., June 2020, https://www.imsglobal.org/question/qtiv3p0/imsqtiv3p0_usagedata_infobindcfv1p0.html. |
[QTI, 20d] | IMS Question and Test Interoperability (QTI) 3.0 Metadata Information Model 1.0, Gary Driscoll, Tom Hoffmann, Justin Marks, Paul Grudnitski, Mark Molenaar, Colin Smythe and Mark McKell, IMS Global Learning Consortium Inc., June 2020, https://www.imsglobal.org/question/qtiv3p0/imsqtiv3p0_metadatai_infobindcfv1p0.html. |
[RFC 2045] | Multipurpose Internet Mail Extensions (MIME) Part One: Format of Internet Message Bodies, N. Freed and N. Borenstein, IETF (RFC 2045), November 1996, https://www.ietf.org/rfc/rfc2045.txt. |
[RFC 2119] | Key words for use in RFCs to Indicate Requirement Levels, S. Bradner, IETF (RFC 2119), March 1997, https://tools.ietf.org/html/rfc2119. |
[RFC 2617] | HTTP Authentication: Basic and Digest Access Authentication, J. Franks, P. Hallam-Baker, J. Hostetler, S. Lawrence, P. Leach, A. Luotonen and L. Stewart, IETF (RFC 2617), 1999, https://tools.ietf.org/pdf/rfc2617.txt. |
[RFC 3066] | Tags for the Identification of Languages, H.Alvestrand, IETF (RFC 3066), January 2001, https://www.ietf.org/rfc/rfc3066.txt. |
[RFC 6749] | The OAuth 2.0 Authorization Framework, D.Hardt, IETF (RFC 6749), 2012, https://tools.ietf.org/pdf/rfc6749.txt. |
[RFC 6750] | The OAuth 2.0 Authorization Framework: Bearer Token Usage, D.Hardt, IETF (RFC 6750), 2012, https://tools.ietf.org/pdf/rfc6750.txt. |
[URI, 98] | RFC 2396 Uniform Resource Identifiers (URI): Generic Syntax, T. Berners-Lee, R. Fielding and L. Masinter, IETF (RFC 2396), August 1998, https://www.ietf.org/rfc/rfc2396.txt.. |
[VDEX, 04] | IMS Vocabulary Definition Exchange (VDEX) 1.0, A.Cooper, IMS Global Learning Consortium Inc., Februsry 2004, https://www.imsglobal.org/vdex/vdexv1p0/imsvdex_infov1p0.html. |
This Section is NOT NORMATIVE.
Table A1.1 provides the key to the descriptions of the mapping between a service calls and its REST endpoint URL-leaf.
Category | Definition and Usage |
---|---|
Service Call | The name of the service call as defined in the associated Behavioral Model. |
REST Endpoint | The REST endpoint URL leaf that is used to complete the request URL. This value must be appended to the host server (defined by the implementation) and API Root URL and version (defined in the specification). |
HTTP Verb | The HTTP verb that must be used for the request message. This is enumerated as: GET, PUT, POST and DELETE. The rules of mapping are:
|
Table A1.2 provides the key to the descriptions of the query parameters that are permitted for an endpoint.
Category | Definition and Usage |
---|---|
Parameter Name | The name given to the query parameter being described. |
Data Type | This is the data-type of the parameter. The data-type can take many forms:
|
Value Space | The range of valid values for this parameter (including any default value). If the value space is unspecified, it is not known or is not important. This value space must be defined in terms of the associated data-type. |
Multiplicity | A property of the parameter indicating the number of values that may be assigned to the parameter (this occurs as a comma separated list). The values of this property are expressed as a range or shorthand for a range using the notation:
|
Description | Contains descriptions relating to the query parameter and its values space. |
Table A1.3 provides the key to the descriptions of the list of HTTP codes and handling for each endpoint.
Category | Definition and Usage |
---|---|
REST Endpoint | The REST endpoint URL leaf that is used to complete the request URL. This value must be appended to the host server (defined by the implementation) and API Root URL and version (defined in the specification). |
HTTP Verb | The HTTP verb that must be used for the request message. This is enumerated as: GET, PUT, POST and DELETE. The rules of mapping are:
|
HTTP Codes and Handling | The list of HTTP codes that may be returned by the service provider. A description of the cause of the HTTP code is supplied along with a link to the definition of the associated JSON payload structure that contains the detailed status information. |
Table A2.1 provides the key to the descriptions of UML to JSON service parameter mapping tables.
Feature | Definition and Usage |
---|---|
Operation Name | The name operation (this will be a list of all of the operations for the set of defined interfaces). |
Parameter Name | The name of the service parameter (these are the parameters listed for the operation that are not mapped to endpoint query parameters). |
UML Class | The name of the class, the type of the parameter, in the UML diagrams (each class will have an associated stereotype label to denote its modelling interpretation). If the information model description is contained within the same document, this value is hot-linked to that description. |
JSON Name | The equivalent name of the JSON parameter name in the JSON payload. |
JSON Type | The JSON type - this will be either "Object" or "Array of Objects". |
JSON Schema Data Type | The data-type in the context of the JSON Schema. This is hot-linked to the corresponding description table in the binding. |
Table A2.2 provides the key to the descriptions of UML to JSON payload class mapping tables. This table shows the relationship between the two modelling components:
Feature | Definition and Usage |
---|---|
Name | The name of the UML class and the associated set of attributes and characteristics. The first row is used to describe the UML class. Camel-case is used for the attribute and characteristic names. |
UML Artefact | The UML Class will be denoted as "Root" or "Core" depending on the nature of the class. The list of attributes (mapped to JSON properties) and characteristics (mapped to JSON properties) will be identified as either "Attributes" or "Characteristics". |
Data Type | The data-type has several permitted values:
|
Multiplicity | The multiplicity of the child attribute/characteristic. The value for the Class itself is "-N/A-". The multiplicity values are:
|
JSON Name | This is the equivalent name of the UML artefact in the JSON. |
JSON Type | The JSON data-type. For the Class this will have the value "Object". For the attributes the value is either "Property" or "Array of Properties" depending on the multiplicity. For the characteristics the value is either "Properties" or "Array of Properties" depending on the multiplicity. |
Table A2.3 provides the key to the descriptions of UML to JSON enumerated and enumerated list class mapping tables.
Feature | Definition and Usage |
---|---|
Enumeration Class Name or Enumeration List Class Name | The name of the enumeration class or the enumeration list class. |
Description | The list of permitted tokens for the enumeration or list. Each value is separated by the "|" character. |
Table A2.4 provides the key to the descriptions of UML to JSON primitive-type mapping tables.
Feature | Definition and Usage |
---|---|
Primitive Type Name | The name of the primitve type used in the specification. Links to the definition of the primitive types, if provided elsewhere in the document, are supplied. |
Description | The equivalent base data type that is used in the JSON binding. |
These definitions are with respect to the OpenAPI version 2 [OAS, 14] and version 3 [OAS, 17] specifications.
Tables A3.1a and A3.1b provide the key to the OpenAPI(2) and OpenAPI(3) general information respectively.
Category | Definition and Usage |
---|---|
Swagger Version | The version of the OpenAPI/Swagger specification for this OpenAPI description (this must be set as 2.0). |
Specification Title | The title of the specification being described. |
Specification Version | The version of the specification being described. |
Description | A short, human readable description of the specification being described using OpenAPI. |
Terms of Service | The Terms of Service for the API. |
Contact | The contact information for the API. For the IMS OpenAPI released files this will be set as "Lisa Mattson (IMS COO)". When used for an implementation this should be changed to the actual contact person. |
License | The URL for the associated IMS License for the use of this OpenAPI description. |
Host | The host (name or ip) serving the API. For the IMS OpenAPI(2) released files this will be set as "www.imsglobal.org". When used for an implementation this should be changed to the actual host. |
Base Path | The base path that MUST be used in the endpoint URLs (this is relative to the host). |
Schemes | The set of transfer protocols that are supported using this API. This is a comma separated list. |
Consumes | A list of MIME types the APIs can consume. This is a comma separated list. |
Produces | A list of MIME types the APIs can produce. This is a comma separated list. |
Category | Definition and Usage |
---|---|
OpenAPI Version | The version of the OpenAPI specification for this OpenAPI description (this must be set as 3.0.0). |
Specification Title | The title of the specification being described. |
Specification Version | The version of the specification being described. |
Description | A short, human readable description of the specification being described using OpenAPI. |
Terms of Service | The URL for the associated Terms of Service for the use of this OpenAPI description. |
Contact | The contact information for the API. For the IMS OpenAPI released files this will be set as "Lisa Mattson (IMS COO)". When used for an implementation this should be changed to the actual contact person. |
License | The URL for the associated IMS License for the use of this OpenAPI description. |
Servers | The host (name or ip) serving the API. For the IMS OpenAPI(3) released files this will be set as "www.imsglobal.org/{base-path}". When used for an implementation this should be changed to the actual host. |
Table A3.2 provides the key to the tabular description of the OpenAPI tags information (versions 2 and 3).
Category | Definition and Usage |
---|---|
Tag Name | The title of the tag (this must be unique). The tags are derived from the set of Interfaces defined in the Behavioral Model. |
Description | A human readable description of the tag. This is the comment associated with the Interface in the Behavioral Model. The list of associated endpoints assigned to this tag are listed with links to the OpenAPI description of those endpoints. |
Table A3.3 provides the key to the tabular description of the OpenAPI security information.
Category | Definition and Usage |
---|---|
Security Label | The label by which this mode is identified within the OpenAPI file. |
Type | The security mode supported. The permitted values are:
|
Description | A human readable description of the usage of this security scheme. |
Flow | The flow used by the OAuth2 security scheme. The permitted values in OAS2 are:
The permitted values in OAS3 are:
|
Token URL | The token URL to be used for this flow. A value MUST be supplied for the "password", "application" and "accessMode" flows in OAuth 2. |
Authorization URL | The authorization URL to be used for this flow. A value MUST be supplied for the "accessMode" flows in OAuth 2. |
Refresh URL | The refresh URL to be used for this flow. A value MAY be supplied for the "accessMode" flows in OAuth 2. |
Scopes | The set of labels by which the global scope will be identified. |
Global Scope | The default identification of the security mode to be applied to an endpoint. |
Table A3.4 provides the key to the OpenAPI paths information for an HTTP Verb.
Category | Definition and Usage |
---|---|
Operation ID | A unique identifier for the service operation. This is the name of the operation defined in the Behavioral Model. |
Summary | A human readable summary of the objective of the service operation. |
Tags | The tag which has been assigned to this operation. The tag is determined by the Interface under which the operation is defined in the Behavioral Model. |
Security and Scopes | The list of security modes and scopes that MUST be used enable access to this endpoint. |
Description | A human readable summary of the objective of the service operation. This is derived from the associated description of the operation supplied in the Behavioral Model. |
Path Placeholders | The set of placeholders, and their meaning, in the URL path that will be replaced by the appropriate values in the request calls. |
Query Parameters | The set of query parameters that are permitted on the request calls. For each query parameter the following information is supplied:
|
Responses | The set of query responses that are permitted for the request. For each response the following information is supplied:
|
Table A3.5 provides the key to the OpenAPI definitions information.
Category | Definition and Usage |
---|---|
Annotations | The definition of the complex-type as supplied in the data model definition for the associated class. |
Diagram | A visual representation of the definition of the complex-type. These diagrams will be supplied in later versions of the specficiation. |
Type Hierachy | The identification of the superclass upon which this type is based (the superclass is shown on the top line). This indicates the source of the inherited set of JSON properties (this line is only displayed when there is a type hierarchy). |
Model | The set of child properties. This is an ordered list of properties (as per the implied or actual sequence in the object) and accompanied by their multiplicity. In the case where the type is an enumeration or primitiveType then the value is "N/A". The value may also be "Empty" to indicate that no children are permitted. In some situations the value may be "None" denoting that there are no children defined e.g. for a base class from which other classes are derived and which may have children as part of the extension. |
Source | The equivalent JSON Schema (OpenAPI dialect) code for the declaration of the complex-type. This is the full declaration. See the corresponding OpenAPI documentation [OAS, 14] and [OAS, 17] for the description of the permitted contents for this declaration. |
This Section is NORMATIVE.
The OpenAPI 2 (JSON) listing (based upon [OAS, 14]) is shown below (the OpenAPI JSON is available at: https://purl.imsglobal.org/cat/v1p0/schema/openapi/imscatv1p0_openapi2_v1p0.json).
{ "swagger" : "2.0", "info" : { "version" : "1.0", "title" : "Computer Adaptive Testing (CAT) Service OpenAPI (JSON) Definition", "description" : "The Computer Adaptive Testing (CAT) Service enables a standard way of implementing adaptive testing using Question and Test Interoperability (QTI). This service has been described using the IMS Model Driven Specification development approach, this being the Platform Specific Model (PSM) of the service.", "termsOfService" : "Permission is granted to all parties to use excerpts from this document as needed in producing requests for proposals. The limited permissions granted above are perpetual and will not be revoked by IMS or its successors or assigns. THIS API DEFINITION IS BEING OFFERED WITHOUT ANY WARRANTY WHATSOEVER, AND IN PARTICULAR, ANY WARRANTY OF NONINFRINGEMENT IS EXPRESSLY DISCLAIMED. ANY USE OF THIS SPECIFICATION SHALL BE MADE ENTIRELY AT THE IMPLEMENTERS OWN RISK, AND NEITHER THE CONSORTIUM, NOR ANY OF ITS MEMBERS OR SUBMITTERS, SHALL HAVE ANY LIABILITY WHATSOEVER TO ANY IMPLEMENTER OR THIRD PARTY FOR ANY DAMAGES OF ANY NATURE WHATSOEVER, DIRECTLY OR INDIRECTLY, ARISING FROM THE USE OF THIS API DEFINITION.", "contact" : { "name" : "Lisa Mattson (COO), IMS Global ", "url" : "http://www.imsglobal.org", "email" : "lmattson@imsglobal.org" }, "license" : { "name" : "IMS Global", "url" : "https://www.imsglobal.org/license.html" } }, "host" : "www.imsglobal.org", "basePath" : "/ims/cat/v1p0", "schemes" : [ "http","https" ], "tags" : [ { "name" : "SectionsManager", "description" : "The set of service operations that manage access to the adaptive Sections being handled by the CAT Engine." }, { "name" : "SessionsManager", "description" : "The set of service operations that manage access to the adaptive Sessions being handled by the CAT Engine." } ], "securityDefinitions" : { "OAuth2CCG" : { "type" : "oauth2", "description" : "A CAT engine implementation may adopt any scope structure and naming scheme which meets its requirements, including not using scopes at all. The scopes shown here are recommended, not required.", "flow" : "application", "tokenUrl" : "https://www.service-dependent.com/oauth2Token", "scopes" : { "https://purl.imsglobal.org/cat/v1p0/scope/api" : "This enables access to all of the endpoints.", "https://purl.imsglobal.org/cat/v1p0/scope/configure" : "This enables access to the endoints that permit the management of Sections.", "https://purl.imsglobal.org/cat/v1p0/scope/deliver" : "This enables access to the endoints that permit the management of Sessions." } } }, "paths" : { "/sections" : { "post" : { "operationId" : "createSection", "summary" : "The REST createbp request message for the createSection() API call.", "tags" : [ "SectionsManager" ], "description" : "This is a request to the CAT Engine to create a new adaptive Section. The CAT Engine is responsible for assigning the unique identifier to be used for this Section in other exchanges. This request is NOT idempotent.", "parameters" : [ { "name" : "section", "in" : "body", "description" : "The data for the configuration of the new adaptive Section.", "required" : true, "schema" : { "$ref" : "#/definitions/SectionDType" } } ], "security" : [ { "OAuth2CCG" : [ "https://purl.imsglobal.org/cat/v1p0/scope/api", "https://purl.imsglobal.org/cat/v1p0/scope/configure" ] } ], "responses" : { "201" : { "description" : "The response code for when the new Section has been created in the CAT Engine and the associated identifier has been returned.", "schema" : { "$ref" : "#/definitions/CreateSectionResponseBodyDType" } }, "400" : { "description" : "The request has been declared as 'bad'. This will be due to the provision of bad data in the request payloads, including a poorly formed JSON payload. This is accompanied by the 'codeMajor/severity' values of 'failure/error'.", "schema" : { "$ref" : "#/definitions/imsx_StatusInfoDType" } }, "401" : { "description" : "The request was not correctly authorized i.e. 'unauthorisedrequest'. This would be accompanied by the 'codeMajor/severity' values of 'failure/error'. ", "schema" : { "$ref" : "#/definitions/imsx_StatusInfoDType" } }, "500" : { "description" : "This code should be used only if there is catastrophic error and there is not a more appropriate code i.e. 'internal_server_error'. This would be accompanied by the 'codeMajor/severity' values of 'failure/error'. ", "schema" : { "$ref" : "#/definitions/imsx_StatusInfoDType" } }, "default" : { "description" : "This is the response data payload to be supplied when the HTTP code is NOT explicitly defined. This would be accompanied by the 'codeMajor/severity' values of 'failure/error' and the appropriate 'codeMinor' value. The associated HTTP code will also be supplied.", "schema" : { "$ref" : "#/definitions/imsx_StatusInfoDType" } } } } }, "/sections/{sectionIdentifier}" : { "get" : { "operationId" : "getSection", "summary" : "The REST read request message for the getSection() API call.", "tags" : [ "SectionsManager" ], "description" : "This request returns the parameters which were used by the CAT engine to create the adaptive section, and the list of the items in the adaptive section's item pool, as configured by the CAT engine. It is recommended that assessment platforms and/or delivery engines use this request to verify that the item pool, as configured by the CAT engine, corresponds exactly to the list of items in the QTI source for the adaptive section. It is also recommended that test administrators verify that each item in the item pool is accessible and deliverable before commencing delivery of candidate sessions. The Get Section request may be used for this, and may be made at any time after a successful Create Section request, as many times as required.", "parameters" : [ { "name" : "sectionIdentifier", "in" : "path", "description" : "The LUID that identifies the Section for which the data on the CAT Engine is to be obtained.", "required" : true, "type" : "string" } ], "security" : [ { "OAuth2CCG" : [ "https://purl.imsglobal.org/cat/v1p0/scope/api", "https://purl.imsglobal.org/cat/v1p0/scope/configure" ] } ], "responses" : { "200" : { "description" : "The response code for when the list of Items in the section's item pool has been returned. The response message contains the list of Items, the section configuration used to create the section, and any qtiUsagedata and qtiMetadata used to create the section.", "schema" : { "$ref" : "#/definitions/GetSectionResponseBodyDType" } }, "400" : { "description" : "The request has been declared as 'bad'. This will be due to the provision of bad data in the request payloads, including a poorly formed JSON payload. This is accompanied by the 'codeMajor/severity' values of 'failure/error'.", "schema" : { "$ref" : "#/definitions/imsx_StatusInfoDType" } }, "401" : { "description" : "The request was not correctly authorized i.e. 'unauthorisedrequest'. This would be accompanied by the 'codeMajor/severity' values of 'failure/error'. ", "schema" : { "$ref" : "#/definitions/imsx_StatusInfoDType" } }, "404" : { "description" : "The supplied identifier is unknown in the CAT Engine and so the object could not be processed. This would be accompanied by the 'codeMajor/severity' values of 'failure/error'. The statement 'Unknown Object' of should also be presented.", "schema" : { "$ref" : "#/definitions/imsx_StatusInfoDType" } }, "500" : { "description" : "This code should be used only if there is catastrophic error and there is not a more appropriate code i.e. 'internal_server_error'. This would be accompanied by the 'codeMajor/severity' values of 'failure/error'. ", "schema" : { "$ref" : "#/definitions/imsx_StatusInfoDType" } }, "default" : { "description" : "This is the response data payload to be supplied when the HTTP code is NOT explicitly defined. This would be accompanied by the 'codeMajor/severity' values of 'failure/error' and the appropriate 'codeMinor' value. The associated HTTP code will also be supplied.", "schema" : { "$ref" : "#/definitions/imsx_StatusInfoDType" } } } }, "delete" : { "operationId" : "endSection", "summary" : "The REST delete request message for the endSection() API call.", "tags" : [ "SectionsManager" ], "description" : "This request ends all candidate sessions for the section which have not already ended, and ends the section. The sectionIdentifier, sessionIdentifiers, and sessionStates returned from previous requests related to the section become invalid. The delivery engine should not make any further requests related to the section or any session for the section. For a REST-based binding this request uses the DELETE HTTP method because of REST conventions, but the CAT engine is not required to physically delete any session or section data. This request should not be repeated once it has succeeded. ", "parameters" : [ { "name" : "sectionIdentifier", "in" : "path", "description" : "The LUID that identifies the Section to be deleted on the CAT Engine.", "required" : true, "type" : "string" } ], "security" : [ { "OAuth2CCG" : [ "https://purl.imsglobal.org/cat/v1p0/scope/api", "https://purl.imsglobal.org/cat/v1p0/scope/configure" ] } ], "responses" : { "204" : { "description" : "The response code for when the identified Section has been deleted in the CAT Engine. There is no response payload." }, "400" : { "description" : "The request has been declared as 'bad'. This will be due to the provision of bad data in the request payloads, including a poorly formed JSON payload. This is accompanied by the 'codeMajor/severity' values of 'failure/error'.", "schema" : { "$ref" : "#/definitions/imsx_StatusInfoDType" } }, "401" : { "description" : "The request was not correctly authorized i.e. 'unauthorisedrequest'. This would be accompanied by the 'codeMajor/severity' values of 'failure/error'. ", "schema" : { "$ref" : "#/definitions/imsx_StatusInfoDType" } }, "404" : { "description" : "The supplied identifier is unknown in the CAT Engine and so the object could not be processed. This would be accompanied by the 'codeMajor/severity' values of 'failure/error'. The statement 'Unknown Object' of should also be presented.", "schema" : { "$ref" : "#/definitions/imsx_StatusInfoDType" } }, "500" : { "description" : "This code should be used only if there is catastrophic error and there is not a more appropriate code i.e. 'internal_server_error'. This would be accompanied by the 'codeMajor/severity' values of 'failure/error'. ", "schema" : { "$ref" : "#/definitions/imsx_StatusInfoDType" } }, "default" : { "description" : "This is the response data payload to be supplied when the HTTP code is NOT explicitly defined. This would be accompanied by the 'codeMajor/severity' values of 'failure/error' and the appropriate 'codeMinor' value. The associated HTTP code will also be supplied.", "schema" : { "$ref" : "#/definitions/imsx_StatusInfoDType" } } } } }, "/sections/{sectionIdentifier}/sessions" : { "post" : { "operationId" : "createSession", "summary" : "The REST createbp request message for the createSession() API call.", "tags" : [ "SessionsManager" ], "description" : "This request initializes a candidate session for the adaptive section. The request optionally provides the CAT engine with information related to the candidate. The CAT engine returns the initial stage (list of items) to be presented to the candidate. This request may be made multiple times after a successful Create Section request, once per candidate, when each candidate enters the adaptive section on the test. This request is NOT idempotent.", "parameters" : [ { "name" : "sectionIdentifier", "in" : "path", "description" : "The LUID that identifies the Section in the CAT Engine to which this new Session is to be assigned.", "required" : true, "type" : "string" }, { "name" : "session", "in" : "body", "description" : "The Session configuration data including the information about the examinee.", "required" : true, "schema" : { "$ref" : "#/definitions/SessionDType" } } ], "security" : [ { "OAuth2CCG" : [ "https://purl.imsglobal.org/cat/v1p0/scope/api", "https://purl.imsglobal.org/cat/v1p0/scope/deliver" ] } ], "responses" : { "201" : { "description" : "The response code for when the new Session has been created in the CAT Engine and the associated identifier has been returned. The response message consists of the identifier allocated to the session, the initial set of Items to be presented and the session state to be used for later requests.", "schema" : { "$ref" : "#/definitions/CreateSessionResponseBodyDType" } }, "400" : { "description" : "The request has been declared as 'bad'. This will be due to the provision of bad data in the request payloads, including a poorly formed JSON payload. This is accompanied by the 'codeMajor/severity' values of 'failure/error'.", "schema" : { "$ref" : "#/definitions/imsx_StatusInfoDType" } }, "401" : { "description" : "The request was not correctly authorized i.e. 'unauthorisedrequest'. This would be accompanied by the 'codeMajor/severity' values of 'failure/error'. ", "schema" : { "$ref" : "#/definitions/imsx_StatusInfoDType" } }, "404" : { "description" : "The supplied identifier is unknown in the CAT Engine and so the object could not be processed. This would be accompanied by the 'codeMajor/severity' values of 'failure/error'. The statement 'Unknown Object' of should also be presented.", "schema" : { "$ref" : "#/definitions/imsx_StatusInfoDType" } }, "500" : { "description" : "This code should be used only if there is catastrophic error and there is not a more appropriate code i.e. 'internal_server_error'. This would be accompanied by the 'codeMajor/severity' values of 'failure/error'. ", "schema" : { "$ref" : "#/definitions/imsx_StatusInfoDType" } }, "default" : { "description" : "This is the response data payload to be supplied when the HTTP code is NOT explicitly defined. This would be accompanied by the 'codeMajor/severity' values of 'failure/error' and the appropriate 'codeMinor' value. The associated HTTP code will also be supplied.", "schema" : { "$ref" : "#/definitions/imsx_StatusInfoDType" } } } } }, "/sections/{sectionIdentifier}/sessions/{sessionIdentifier}" : { "delete" : { "operationId" : "endSession", "summary" : "The REST delete request message for the endSession() API call.", "tags" : [ "SessionsManager" ], "description" : "This request ends the candidate session. The sessionIdentifier, and the sessionState returned from any previous request in the session, become invalid. The delivery engine should not make any further requests related to the session. For a REST-based binding this request uses the DELETE HTTP method because of REST conventions; but it is not required that CAT engines physically delete data or resources associated with the session. If the identified session cannot be found then the 'unknownobject' status code must be reported.", "parameters" : [ { "name" : "sectionIdentifier", "in" : "path", "description" : "The LUID that identifies the Section to be deleted on the CAT Engine.", "required" : true, "type" : "string" }, { "name" : "sessionIdentifier", "in" : "path", "description" : "The LUID that identifies the Session, in the context of the identified Section, to be deleted on the CAT Engine.", "required" : true, "type" : "string" } ], "security" : [ { "OAuth2CCG" : [ "https://purl.imsglobal.org/cat/v1p0/scope/api", "https://purl.imsglobal.org/cat/v1p0/scope/deliver" ] } ], "responses" : { "204" : { "description" : "The response code for when the identified Session has been deleted in the CAT Engine. There is no response payload." }, "400" : { "description" : "The request has been declared as 'bad'. This will be due to the provision of bad data in the request payloads, including a poorly formed JSON payload. This is accompanied by the 'codeMajor/severity' values of 'failure/error'.", "schema" : { "$ref" : "#/definitions/imsx_StatusInfoDType" } }, "401" : { "description" : "The request was not correctly authorized i.e. 'unauthorisedrequest'. This would be accompanied by the 'codeMajor/severity' values of 'failure/error'. ", "schema" : { "$ref" : "#/definitions/imsx_StatusInfoDType" } }, "404" : { "description" : "The supplied identifier is unknown in the CAT Engine and so the object could not be processed. This would be accompanied by the 'codeMajor/severity' values of 'failure/error'. The statement 'Unknown Object' of should also be presented.", "schema" : { "$ref" : "#/definitions/imsx_StatusInfoDType" } }, "500" : { "description" : "This code should be used only if there is catastrophic error and there is not a more appropriate code i.e. 'internal_server_error'. This would be accompanied by the 'codeMajor/severity' values of 'failure/error'. ", "schema" : { "$ref" : "#/definitions/imsx_StatusInfoDType" } }, "default" : { "description" : "This is the response data payload to be supplied when the HTTP code is NOT explicitly defined. This would be accompanied by the 'codeMajor/severity' values of 'failure/error' and the appropriate 'codeMinor' value. The associated HTTP code will also be supplied.", "schema" : { "$ref" : "#/definitions/imsx_StatusInfoDType" } } } } }, "/sections/{sectionIdentifier}/sessions/{sessionIdentifier}/results" : { "post" : { "operationId" : "submitResults", "summary" : "The REST update request message for the submitResults() API call.", "tags" : [ "SessionsManager" ], "description" : "This request sends the results from the current item stage in a candidate session to the CAT engine. The CAT engine returns its computed outcome variable values for the current stage and the test as a whole. It also returns the next item stage to be presented to the candidate. Instead of the next item stage, it may also return an indication that the adaptive section has ended, by returning an empty list for nextItems. If the identified Section/Session cannot be found then the 'unknownobject' status code must be reported.", "parameters" : [ { "name" : "sectionIdentifier", "in" : "path", "description" : "The LUID that identifies the Section in the CAT Engine to be used.", "required" : true, "type" : "string" }, { "name" : "sessionIdentifier", "in" : "path", "description" : "The LUID that identifies the Session, in the context of the Section, in the CAT Engine to be used.", "required" : true, "type" : "string" }, { "name" : "resultSet", "in" : "body", "description" : "The set of results that have been obtained, so far, by the examinee for the identified session.", "required" : true, "schema" : { "$ref" : "#/definitions/ResultsDType" } } ], "security" : [ { "OAuth2CCG" : [ "https://purl.imsglobal.org/cat/v1p0/scope/api", "https://purl.imsglobal.org/cat/v1p0/scope/deliver" ] } ], "responses" : { "201" : { "description" : "The response code for when the next set of Items to be presented to the examinee has been returned. The response message contains the next set of Items, the session state to be used in later requests and, optionally, the assessment results.", "schema" : { "$ref" : "#/definitions/SubmitResultsResponseBodyDType" } }, "400" : { "description" : "The request has been declared as 'bad'. This will be due to the provision of bad data in the request payloads, including a poorly formed JSON payload. This is accompanied by the 'codeMajor/severity' values of 'failure/error'.", "schema" : { "$ref" : "#/definitions/imsx_StatusInfoDType" } }, "401" : { "description" : "The request was not correctly authorized i.e. 'unauthorisedrequest'. This would be accompanied by the 'codeMajor/severity' values of 'failure/error'. ", "schema" : { "$ref" : "#/definitions/imsx_StatusInfoDType" } }, "404" : { "description" : "The supplied identifier is unknown in the CAT Engine and so the object could not be processed. This would be accompanied by the 'codeMajor/severity' values of 'failure/error'. The statement 'Unknown Object' of should also be presented.", "schema" : { "$ref" : "#/definitions/imsx_StatusInfoDType" } }, "500" : { "description" : "This code should be used only if there is catastrophic error and there is not a more appropriate code i.e. 'internal_server_error'. This would be accompanied by the 'codeMajor/severity' values of 'failure/error'. ", "schema" : { "$ref" : "#/definitions/imsx_StatusInfoDType" } }, "default" : { "description" : "This is the response data payload to be supplied when the HTTP code is NOT explicitly defined. This would be accompanied by the 'codeMajor/severity' values of 'failure/error' and the appropriate 'codeMinor' value. The associated HTTP code will also be supplied.", "schema" : { "$ref" : "#/definitions/imsx_StatusInfoDType" } } } } } }, "definitions" : { "CreateSessionResponseBodyDType" : { "description" : "The response code for when the new Session has been created in the CAT Engine and the associated identifier has been returned. The response message consists of the identifier allocated to the session, the initial set of Items to be presented and the session state to be used for later requests.", "type" : "object", "properties" : { "sessionIdentifier" : { "description" : "Model Primitive Datatype = NCName. The LUID that has been assigned by the CAT Engine to the new Session.", "type" : "string" }, "nextItems" : { "$ref" : "#/definitions/NextItemSetDType" }, "sessionState" : { "description" : "Model Primitive Datatype = NormalizedString. The session state to send back on subsequent calls within this session.", "type" : "string" } }, "additionalProperties" : false }, "GetSectionResponseBodyDType" : { "description" : "The response code for when the list of Items in the section's item pool has been returned. The response message contains the list of Items, the section configuration used to create the section, and any qtiUsagedata and qtiMetadata used to create the section.", "type" : "object", "properties" : { "items" : { "$ref" : "#/definitions/ItemSetDType" }, "section" : { "$ref" : "#/definitions/SectionDType" } }, "additionalProperties" : false }, "SubmitResultsResponseBodyDType" : { "description" : "The response code for when the next set of Items to be presented to the examinee has been returned. The response message contains the next set of Items, the session state to be used in later requests and, optionally, the assessment results.", "type" : "object", "properties" : { "nextItems" : { "$ref" : "#/definitions/NextItemSetDType" }, "assessmentResult" : { "$ref" : "#/definitions/AssessmentResultDType" }, "sessionState" : { "description" : "Model Primitive Datatype = NormalizedString. The session state to send back on subsequent calls within this session.", "type" : "string" } }, "additionalProperties" : false }, "CreateSectionResponseBodyDType" : { "description" : "The response code for when the new Section has been created in the CAT Engine and the associated identifier has been returned.", "type" : "object", "properties" : { "sectionIdentifier" : { "description" : "Model Primitive Datatype = NCName.", "type" : "string" } }, "additionalProperties" : false }, "AssessmentResultDType" : { "description" : "An Assessment Result is used to report the results of a candidate's interaction with a test and/or one or more items attempted. Information about the test is optional, in some systems it may be possible to interact with items that are not organized into a test at all. For example, items that are organized with learning resources and presented individually in a formative context.", "type" : "object", "properties" : { "context" : { "$ref" : "#/definitions/ContextDType" }, "testResult" : { "$ref" : "#/definitions/TestResultDType" }, "itemResult" : { "description" : "When a test result is given the following item results must relate only to items that were selected for presentation as part of the corresponding test session. Furthermore, all items selected for presentation should be reported with a corresponding itemResult.", "type" : "array", "minItems" : 0, "items" : { "$ref" : "#/definitions/ItemResultDType" } } }, "additionalProperties" : false }, "CandidateResponseDType" : { "description" : "The response given by the candidate.", "type" : "object", "properties" : { "value" : { "description" : "The value(s) of the response variable. A NULL value, resulting from no response, is indicated by the absence of any value. The order of the values is significant only if the response was declared with ordered cardinality.", "type" : "array", "minItems" : 0, "items" : { "$ref" : "#/definitions/ValueDType" } } }, "additionalProperties" : false }, "ContextDType" : { "description" : "This is the context for the 'assessmentResult'. It provides the corresponding set of identifiers.", "type" : "object", "properties" : { "sourcedId" : { "description" : "Model Primitive Datatype = NCName. A unique identifier for the test candidate.", "type" : "string" }, "sessionIdentifiers" : { "description" : "The system that creates the result (for example, the test delivery system) should assign a session identifier that it can use to identify the session. Subsequent systems that process the result might assign their own identifier to the session which should be added to the context if the result is modified and exported for transport again.", "type" : "array", "minItems" : 0, "items" : { "$ref" : "#/definitions/SessionIdentifierDType" } } }, "additionalProperties" : false }, "CorrectResponseDType" : { "description" : "The correct response may be output as part of the report if desired. Systems are not limited to reporting correct responses declared in responseDeclarations. For example, a correct response may be set by a templateRule or may simply have been suppressed from the declaration passed to the delivery engine e.g. for security.", "type" : "object", "properties" : { "interpretation" : { "description" : "Model Primitive Datatype = String. A human readable interpretation of the correct value.", "type" : "string" }, "value" : { "description" : "The order of the values is signficant only when the response is of ordered cardinality.", "type" : "array", "minItems" : 0, "items" : { "$ref" : "#/definitions/ValueDType" } } }, "additionalProperties" : false }, "ItemResultDType" : { "description" : "The result of an item session is reported with an itemResult. A report may contain multiple results for the same instance of an item representing multiple attempts, progression through an adaptive item or even more detailed tracking. In these cases, each item result must have a different datestamp.", "type" : "object", "properties" : { "identifier" : { "description" : "Model Primitive Datatype = NCName. The identifier of the item for which this is a result. For item results that are reported as part of a test result this is the identifier used to refer to the item in the test (see assessmentItemRef). For item results that are reported on their own, this can be any suitable identifier for the item. Where possible, the value should match the identifier attribute on the associated assessmentItem.", "type" : "string" }, "sequenceIndex" : { "description" : "Model Primitive Datatype = NonNegativeInteger. For item results that are reported as part of a test, this attribute must be used to indicate the position of the item within the specific instance of the test. The first item of the first part of the test is defined to have sequence index 1.", "type" : "integer", "format" : "int32", "minimum" : 0 }, "datestamp" : { "description" : "Model Primitive Datatype = DateTime. The date stamp of when this result was recorded.", "type" : "string", "format" : "date-time" }, "sessionStatus" : { "description" : "The session status is used to interpret the values of the item variables. See the sessionStatus vocabulary.", "type" : "string", "enum" : [ "final","initial","pendingResponseProcessing","pendingSubmission" ] }, "responseVariables" : { "description" : "Indicates that a Response Variable is being reported. This is the value of one of the responses associated with an Item in the corresponding ASI instance.", "type" : "array", "minItems" : 0, "items" : { "$ref" : "#/definitions/ResponseVariableDType" } }, "templateVariables" : { "description" : "Indicates that a Template Variable is being reported. This is the value of one of the template variables associated with an Item in the corresponding ASI instance.", "type" : "array", "minItems" : 0, "items" : { "$ref" : "#/definitions/TemplateVariableDType" } }, "outcomeVariables" : { "description" : "Indicates that an Outcome Variable is being reported. This is the value of one of the outcomes associated with either an Item or Test and defined in the corresponding ASI instance.", "type" : "array", "minItems" : 0, "items" : { "$ref" : "#/definitions/OutcomeVariableDType" } }, "candidateComment" : { "description" : "Model Primitive Datatype = String. An optional comment supplied by the candidate (see the allowComment in the ASI documentation [QTI, 20a]).", "type" : "string" } }, "required" : [ "identifier","datestamp","sessionStatus" ], "additionalProperties" : false }, "ItemSetDType" : { "description" : "A set of Item identfiers.", "type" : "object", "properties" : { "itemIdentifiers" : { "description" : "Model Primitive Datatype = NCName. The Identifiers for the set of Items. These should be the GUIDs that have been assigned to AssessmentItems when defined using IMS QTI.", "type" : "array", "minItems" : 1, "items" : { "type" : "string" } } }, "required" : [ "itemIdentifiers" ], "additionalProperties" : false }, "KeyValuePairDType" : { "description" : "The container for the values assigned to the Key/Value pair.", "type" : "object", "properties" : { "glossaryURI" : { "description" : "Model Primitive Datatype = AnyURI. This is a URI to the definition of the data being supplied in this accompanying key/value pair. This definition should provide a human readable description of the data-type and value space for the value being identified by its key. ", "type" : "string", "format" : "uri" }, "key" : { "description" : "Model Primitive Datatype = String. The key for the value to be supplied.", "type" : "string" }, "value" : { "description" : "Model Primitive Datatype = String. The value being supplied.", "type" : "string" } }, "required" : [ "key","value" ], "additionalProperties" : false }, "NextItemSetDType" : { "description" : "The container for the information about the set of next Items that should be presented to the examinee.", "type" : "object", "properties" : { "itemIdentifiers" : { "description" : "Model Primitive Datatype = NCName. The Identifiers for the set of Items that should be presented next. These should be the GUIDs that have been assigned to AssessmentItems when defined using IMS QTI.", "type" : "array", "minItems" : 1, "items" : { "type" : "string" } }, "stageLength" : { "description" : "Model Primitive Datatype = NonNegativeInteger. The (minimum) number of items the CAT Engine can present before requesting next items", "type" : "integer", "format" : "int32", "minimum" : 0 } }, "required" : [ "itemIdentifiers" ], "additionalProperties" : false }, "OutcomeVariableDType" : { "description" : "The Item result information related to an 'Outcome Variable'.", "type" : "object", "properties" : { "identifier" : { "description" : "Model Primitive Datatype = NCName. The identifier of the Outcome Variable.", "type" : "string" }, "cardinality" : { "description" : "The cardinality of the Outcome Variable, taken from the corresponding declaration or definition.", "type" : "string", "enum" : [ "multiple","ordered","record","single" ] }, "baseType" : { "description" : "The base type of the Outcome Variable, taken from the corresponding declaration of definition. This value is omitted only for variables with record cardinality.", "type" : "string", "enum" : [ "boolean","directedPair","duration","file","float","identifier","integer","pair","point","string","uri" ] }, "view" : { "description" : "The views (if any) declared for the outcome must be copied to the report to enable systems that render the report to hide information not relevant in a specific situation. If no values are given, the outcome's value should be considered relevant in all views.", "type" : "array", "minItems" : 0, "items" : { "type" : "string", "enum" : [ "author","candidate","proctor","scorer","testConstructor","tutor" ] } }, "interpretation" : { "description" : "Model Primitive Datatype = String. A human readable interpretation of the default value.", "type" : "string" }, "longInterpretation" : { "description" : "Model Primitive Datatype = AnyURI. An optional link to an extended interpretation of the outcome variable's value.", "type" : "string", "format" : "uri" }, "normalMaximum" : { "description" : "Model Primitive Datatype = Double. The normalMaximum attribute optionally defines the maximum magnitude of numeric outcome variables, it must be a positive value. If given, the outcome's value can be divided by normalMaximum and then truncated (if necessary) to obtain a normalized score in the range [-1.0,1.0]. normalMaximum has no affect on responseProcessing or the values that the outcome variable itself can take.", "type" : "number", "format" : "double" }, "normalMinimum" : { "description" : "Model Primitive Datatype = Double. The normalMinimum attribute optionally defines the minimum value of numeric outcome variables, it may be negative.", "type" : "number", "format" : "double" }, "masteryValue" : { "description" : "Model Primitive Datatype = Double. The masteryValue attribute optionally defines a value for numeric outcome variables above which the aspect being measured is considered to have been mastered by the candidate.", "type" : "number", "format" : "double" }, "value" : { "description" : "The value(s) of the outcome variable. The order of the values is significant only if the outcome was declared with ordered cardinality.", "type" : "array", "minItems" : 0, "items" : { "$ref" : "#/definitions/ValueDType" } } }, "required" : [ "identifier","cardinality" ], "additionalProperties" : false }, "PCIContextDType" : { "description" : "This is the container for the contextual information that can be supplied for a PCI used within an Item. The contained information is only relevant when there is an 'interactionType' of 'portableCustomInteraction'.", "type" : "object", "properties" : { "customTypeIdentifier" : { "description" : "Model Primitive Datatype = NormalizedString. This is used alongside an 'interactionType' value of 'portableCustomInteraction' to disambiguate which class of PCI is in use as PCIs can vary widely in terms of how they might need to be psychometrically analyzed. This field could potentially also be used to identify which type of a traditional customInteraction is in use by the item.", "type" : "string" }, "interactionKind" : { "description" : "Model Primitive Datatype = NormalizedString. This is used to provide insight into the nature of the PCI e.g. this is a PCI which allows a user to add notes to a musical stave to author some music that might be given a description of 'authoring'. This information could be used by a psychometrician, etc. as an indication of a similar type of standard interaction.", "type" : "string" } }, "additionalProperties" : false }, "QTIMetadataDType" : { "description" : "This contains the new category of metadata for the recording of QTI specific information.", "type" : "object", "properties" : { "itemTemplate" : { "description" : "Model Primitive Datatype = Boolean. True if the item is actually an item template, in other words, the item changes its appearance based on some random or external factor. An assessmentItem that contains a templateProcessing section.", "type" : "boolean" }, "timeDependent" : { "description" : "Model Primitive Datatype = Boolean. Whether or not the item is time dependent. A time dependent item takes the length of time taken for an attempt into consideration when scoring.", "type" : "boolean" }, "composite" : { "description" : "Model Primitive Datatype = Boolean. True if the item comprises more than one interaction, for example, an assessmentItem that contains more than one interaction.", "type" : "boolean" }, "interactionType" : { "description" : "The interaction type(s) of the item. The vocabulary is comprised of the names, as defined in the information model, of the leaf classes derived from interaction.", "type" : "array", "minItems" : 0, "items" : { "type" : "string", "enum" : [ "associateInteraction","choiceInteraction","customInteraction","drawingInteraction","endAttemptInteraction","extendedTextInteraction","gapMatchInteraction","graphicAssociateInteraction","graphicGapMatchInteraction","graphicOrderInteraction","hotspotInteraction","hottextInteraction","inlineChoiceInteraction","matchInteraction","mediaInteraction","orderInteraction","portableCustomInteraction","positionObjectInteraction","selectPointInteraction","sliderInteraction","textEntryInteraction","uploadInteraction" ] } }, "portableCustomInteractionContext" : { "$ref" : "#/definitions/PCIContextDType" }, "feedbackType" : { "description" : "Describes the type of feedback, if any, available in the item. If feedback is available then it is described as being non-adaptive or adaptive depending on whether the item is itself adaptive. A non-adaptive item generates feedback based on the responses submitted as part of (the last) attempt only. An adaptive item generates feedback that takes into consideration the path taken through the item, in other words, feedback based on the accumulation of all attempts and not just the last.", "type" : "string", "enum" : [ "adaptive","nonadaptive","none" ] }, "solutionAvailable" : { "description" : "Model Primitive Datatype = Boolean. Set to true if a model solution is available for the item. For example, an assessmentItem that provides correct responses for all declared response variables.", "type" : "boolean" }, "scoringMode" : { "description" : "The scoringMode is used to denote that the way in which the scoring is achieved. If the Item includes the response processing then the mode is 'responseprocessing'. If human scoring is required the value is 'human' and if some form of machine processing is required then the value is 'externalmachine'.", "type" : "array", "minItems" : 0, "items" : { "type" : "string", "enum" : [ "human","externalmachine","responseprocessing" ] } }, "toolName" : { "description" : "Model Primitive Datatype = String. The name of the tool used to author the evaluation object.", "type" : "string", "maxLength" : 256 }, "toolVersion" : { "description" : "Model Primitive Datatype = String. The version of the tool used to author the evaluation object.", "type" : "string", "maxLength" : 256 }, "toolVendor" : { "description" : "Model Primitive Datatype = String. The company which produced the tool used to author the evaluation object.", "type" : "string", "maxLength" : 256 } }, "additionalProperties" : false }, "ResponseVariableDType" : { "description" : "The Item result information related to a 'Response Variable'.", "type" : "object", "properties" : { "identifier" : { "description" : "Model Primitive Datatype = NCName. The identifier of the Response Variable.", "type" : "string" }, "cardinality" : { "description" : "The cardinality of the Response Variable, taken from the corresponding declaration or definition.", "type" : "string", "enum" : [ "multiple","ordered","record","single" ] }, "baseType" : { "description" : "The base type of the Response Variable, taken from the corresponding declaration of definition. This value is omitted only for variables with record cardinality.", "type" : "string", "enum" : [ "boolean","directedPair","duration","file","float","identifier","integer","pair","point","string","uri" ] }, "choiceSequence" : { "description" : "Model Primitive Datatype = NCName. When a response variable is bound to an interaction that supports the shuffling of choices, the sequence of choices experienced by the candidate will vary between test instances. When shuffling is in effect, the sequence of choices should be reported as a sequence of choice identifiers using this attribute.", "type" : "array", "minItems" : 0, "items" : { "type" : "string" } }, "correctResponse" : { "$ref" : "#/definitions/CorrectResponseDType" }, "candidateResponse" : { "$ref" : "#/definitions/CandidateResponseDType" } }, "required" : [ "identifier","cardinality","candidateResponse" ], "additionalProperties" : false }, "ResultsDType" : { "description" : "This is the container for the results that have been accrued by the examinee. These are passed to the CAT Engine to support the selection of the next set of Items.", "type" : "object", "properties" : { "assessmentResult" : { "$ref" : "#/definitions/AssessmentResultDType" }, "sessionState" : { "description" : "Model Primitive Datatype = NormalizedString. The session state information. This is the data that was supplied by the CAT Engine when the session was created or the next set of Items was requested.", "type" : "string" } }, "required" : [ "assessmentResult" ], "additionalProperties" : false }, "SectionDType" : { "description" : "The container for the definition of the Section that is to be created in the CAT Engine. A Section is aligned to a QTI AssessmentSection [QTI, 20a].", "type" : "object", "properties" : { "qtiMetadata" : { "$ref" : "#/definitions/QTIMetadataDType" }, "qtiUsagedata" : { "description" : "Model Primitive Datatype = String. This is the Base64 encoded XML conforming to IMS QTI 3.0 Usage Date data model [QTI, 20c].", "type" : "string" }, "sectionConfiguration" : { "description" : "Model Primitive Datatype = String. This is the Base64 encoded data containing section configuration, aligned with adaptive engine (black box). This format will be proprietary to each adaptive CAT Engine.", "type" : "string" } }, "required" : [ "sectionConfiguration" ], "additionalProperties" : false }, "SessionDType" : { "description" : "This is the container for the session configuration data that must be supplied to the CAT Engine when the session is to be created.", "type" : "object", "properties" : { "personalNeedsAndPreferences" : { "description" : "Model Primitive Datatype = NormalizedString. This is the Base64 encoded XML data for the Personal Needs and Preferences (PNP) for the examinee. This data conforms to the XML as defined in the IMS Access for All Personal Needs and Preferences (AfAPNP) 3.0 XML Binding specification [AFAPNP, 20].", "type" : "string" }, "demographics" : { "description" : "Model Primitive Datatype = NormalizedString. The Base64 encoding of the JSON data for the Demographics information for the examinee. This data conforms to the JSON as defined in the IMS OneRoster 1.1 specification [OR, 17].", "type" : "string" }, "priorData" : { "description" : "This is proprietary data that is supplied to the CAT Engine as a key/value pairs.", "type" : "array", "minItems" : 0, "items" : { "$ref" : "#/definitions/KeyValuePairDType" } } }, "additionalProperties" : false }, "SessionIdentifierDType" : { "description" : "The system that creates the result (for example, the test delivery system) should assign a session identifier that it can use to identify the session.", "type" : "object", "properties" : { "sourceID" : { "description" : "Model Primitive Datatype = AnyURI. A unique identifier of the system which added this identifier to the result.", "type" : "string", "format" : "uri" }, "identifier" : { "description" : "Model Primitive Datatype = NCName. The system that creates the report should add a session identifier. Subsequent systems that process the results might use their own identifier for the session and should add this too if the result is exported again for further transport.", "type" : "string" } }, "required" : [ "sourceID","identifier" ], "additionalProperties" : false }, "TemplateVariableDType" : { "description" : "The Item result information related to a 'Template Variable'.", "type" : "object", "properties" : { "identifier" : { "description" : "Model Primitive Datatype = NCName. The identifier of the Template Variable.", "type" : "string" }, "cardinality" : { "description" : "The cardinality of the Template Variable, taken from the corresponding declaration or definition.", "type" : "string", "enum" : [ "multiple","ordered","record","single" ] }, "baseType" : { "description" : "The base type of the Template Variable, taken from the corresponding declaration of definition. This value is omitted only for variables with record cardinality.", "type" : "string", "enum" : [ "boolean","directedPair","duration","file","float","identifier","integer","pair","point","string","uri" ] }, "value" : { "description" : "The value(s) of the template variable. The order of the values is significant only if the template variable was declared with ordered cardinality.", "type" : "array", "minItems" : 0, "items" : { "$ref" : "#/definitions/ValueDType" } } }, "required" : [ "identifier","cardinality" ], "additionalProperties" : false }, "TestResultDType" : { "description" : "The container for the Test result. When a test result is given the following item results must relate only to items that were selected for presentation as part of the corresponding test session. Furthermore, all items selected for presentation should be reported with a corresponding itemResult.", "type" : "object", "properties" : { "identifier" : { "description" : "Model Primitive Datatype = NCName. The identifier of the test for which this is a result.", "type" : "string" }, "datestamp" : { "description" : "Model Primitive Datatype = DateTime. The date stamp of when this result was recorded.", "type" : "string", "format" : "date-time" }, "responseVariables" : { "description" : "Indicates that a Response Variable is being reported. This is the value of one of the responses associated with an Item in the corresponding ASI instance [QTI, 20a].", "type" : "array", "minItems" : 0, "items" : { "$ref" : "#/definitions/ResponseVariableDType" } }, "templateVariables" : { "description" : "Indicates that a Template Variable is being reported. This is the value of one of the template variables associated with an Item in the corresponding ASI instance [QTI, 20a].", "type" : "array", "minItems" : 0, "items" : { "$ref" : "#/definitions/TemplateVariableDType" } }, "outcomeVariables" : { "description" : "Indicates that an Outcome Variable is being reported. This is the value of one of the outcomes associated with either an Item or Test and defined in the corresponding ASI instance [QTI, 20a].", "type" : "array", "minItems" : 0, "items" : { "$ref" : "#/definitions/OutcomeVariableDType" } } }, "required" : [ "identifier","datestamp" ], "additionalProperties" : false }, "ValueDType" : { "description" : "A class that can represent a single value of any baseType in variable declarations and result reports. The base-type is defined by the baseType attribute of the declaration except in the case of variables with record cardinality.", "type" : "object", "properties" : { "fieldIdentifier" : { "description" : "Model Primitive Datatype = NCName. This attribute is only used for specifying the field identifier for a value that forms part of a record.", "type" : "string" }, "baseType" : { "description" : "This attribute is only used for specifying the base-type of a value that forms part of a record.", "type" : "string", "enum" : [ "boolean","directedPair","duration","file","float","identifier","integer","pair","point","string","uri" ] }, "value" : { "description" : "Model Primitive Datatype = NormalizedString. The value being supplied.", "type" : "string" } }, "required" : [ "value" ], "additionalProperties" : false }, "imsx_CodeMinorDType" : { "description" : "This is the container for the set of code minor status codes reported in the responses from the Service Provider.", "type" : "object", "properties" : { "imsx_codeMinorField" : { "description" : "Each reported code minor status code.", "type" : "array", "minItems" : 1, "items" : { "$ref" : "#/definitions/imsx_CodeMinorFieldDType" } } }, "required" : [ "imsx_codeMinorField" ], "additionalProperties" : false }, "imsx_CodeMinorFieldDType" : { "description" : "This is the container for a single code minor status code.", "type" : "object", "properties" : { "imsx_codeMinorFieldName" : { "description" : "Model Primitive Datatype = NormalizedString. This should contain the identity of the system that has produced the code minor status code report.", "type" : "string" }, "imsx_codeMinorFieldValue" : { "description" : "The code minor status code (this is a value from the corresponding enumerated vocabulary).", "type" : "string", "enum" : [ "fullsuccess","forbidden","invaliddata","unauthorisedrequest","internal_server_error","server_busy","unknownobject" ] } }, "required" : [ "imsx_codeMinorFieldName","imsx_codeMinorFieldValue" ], "additionalProperties" : false }, "imsx_StatusInfoDType" : { "description" : "This is the container for the status code and associated information returned within the HTTP messages received from the Service Provider.", "type" : "object", "properties" : { "imsx_codeMajor" : { "description" : "The code major value (from the corresponding enumerated vocabulary).", "type" : "string", "enum" : [ "success","processing","failure","unsupported" ] }, "imsx_severity" : { "description" : "The severity value (from the corresponding enumerated vocabulary).", "type" : "string", "enum" : [ "status","warning","error" ] }, "imsx_description" : { "description" : "Model Primitive Datatype = String. A human readable description supplied by the entity creating the status code information.", "type" : "string" }, "imsx_codeMinor" : { "$ref" : "#/definitions/imsx_CodeMinorDType" } }, "required" : [ "imsx_codeMajor","imsx_severity" ], "additionalProperties" : false } }, "consumes" : [ "application/json" ], "produces" : [ "application/json" ] }
The OpenAPI 3 (JSON) listing (based upon [OAS, 17]) is shown below (the OpenAPI JSON is available at: https://purl.imsglobal.org/cat/v1p0/schema/openapi/imscatv1p0_openapi3_v1p0.json).
{ "openapi" : "3.0.0", "info" : { "version" : "1.0", "title" : "Computer Adaptive Testing (CAT) Service OpenAPI (JSON) Definition", "description" : "The Computer Adaptive Testing (CAT) Service enables a standard way of implementing adaptive testing using Question and Test Interoperability (QTI). This service has been described using the IMS Model Driven Specification development approach, this being the Platform Specific Model (PSM) of the service.", "termsOfService" : "https://www.imsglobal.org/license.html", "contact" : { "name" : "Lisa Mattson (COO), IMS Global ", "url" : "http://www.imsglobal.org", "email" : "lmattson@imsglobal.org" }, "license" : { "name" : "IMS Global", "url" : "https://www.imsglobal.org/license.html" } }, "servers" : [ { "url" : "www.imsglobal.org/ims/cat/v1p0", "description" : "The above Server URL should be changed to the actual server location." } ], "tags" : [ { "name" : "SectionsManager", "description" : "The set of service operations that manage access to the adaptive Sections being handled by the CAT Engine." }, { "name" : "SessionsManager", "description" : "The set of service operations that manage access to the adaptive Sessions being handled by the CAT Engine." } ], "paths" : { "/sections" : { "post" : { "operationId" : "createSection", "summary" : "The REST createbp request message for the createSection() API call.", "tags" : [ "SectionsManager" ], "description" : "This is a request to the CAT Engine to create a new adaptive Section. The CAT Engine is responsible for assigning the unique identifier to be used for this Section in other exchanges. This request is NOT idempotent.", "security" : [ { "OAuth2CCG" : [ "https://purl.imsglobal.org/cat/v1p0/scope/api", "https://purl.imsglobal.org/cat/v1p0/scope/configure" ] } ], "requestBody" : { "description" : "The data for the configuration of the new adaptive Section.", "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/SectionDType" } } }, "required" : true }, "responses" : { "201" : { "description" : "The response code for when the new Section has been created in the CAT Engine and the associated identifier has been returned.", "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/CreateSectionResponseBodyDType" } } } }, "400" : { "description" : "The request has been declared as 'bad'. This will be due to the provision of bad data in the request payloads, including a poorly formed JSON payload. This is accompanied by the 'codeMajor/severity' values of 'failure/error'.", "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/imsx_StatusInfoDType" } } } }, "401" : { "description" : "The request was not correctly authorized i.e. 'unauthorisedrequest'. This would be accompanied by the 'codeMajor/severity' values of 'failure/error'. ", "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/imsx_StatusInfoDType" } } } }, "500" : { "description" : "This code should be used only if there is catastrophic error and there is not a more appropriate code i.e. 'internal_server_error'. This would be accompanied by the 'codeMajor/severity' values of 'failure/error'. ", "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/imsx_StatusInfoDType" } } } }, "default" : { "description" : "This is the response data payload to be supplied when the HTTP code is NOT explicitly defined. This would be accompanied by the 'codeMajor/severity' values of 'failure/error' and the appropriate 'codeMinor' value. The associated HTTP code will also be supplied.", "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/imsx_StatusInfoDType" } } } } } } }, "/sections/{sectionIdentifier}" : { "get" : { "operationId" : "getSection", "summary" : "The REST read request message for the getSection() API call.", "tags" : [ "SectionsManager" ], "description" : "This request returns the parameters which were used by the CAT engine to create the adaptive section, and the list of the items in the adaptive section's item pool, as configured by the CAT engine. It is recommended that assessment platforms and/or delivery engines use this request to verify that the item pool, as configured by the CAT engine, corresponds exactly to the list of items in the QTI source for the adaptive section. It is also recommended that test administrators verify that each item in the item pool is accessible and deliverable before commencing delivery of candidate sessions. The Get Section request may be used for this, and may be made at any time after a successful Create Section request, as many times as required.", "parameters" : [ { "name" : "sectionIdentifier", "in" : "path", "description" : "The LUID that identifies the Section for which the data on the CAT Engine is to be obtained.", "required" : true, "schema" : { "type" : "string" }, "style" : "simple" } ], "security" : [ { "OAuth2CCG" : [ "https://purl.imsglobal.org/cat/v1p0/scope/api", "https://purl.imsglobal.org/cat/v1p0/scope/configure" ] } ], "responses" : { "200" : { "description" : "The response code for when the list of Items in the section's item pool has been returned. The response message contains the list of Items, the section configuration used to create the section, and any qtiUsagedata and qtiMetadata used to create the section.", "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/GetSectionResponseBodyDType" } } } }, "400" : { "description" : "The request has been declared as 'bad'. This will be due to the provision of bad data in the request payloads, including a poorly formed JSON payload. This is accompanied by the 'codeMajor/severity' values of 'failure/error'.", "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/imsx_StatusInfoDType" } } } }, "401" : { "description" : "The request was not correctly authorized i.e. 'unauthorisedrequest'. This would be accompanied by the 'codeMajor/severity' values of 'failure/error'. ", "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/imsx_StatusInfoDType" } } } }, "404" : { "description" : "The supplied identifier is unknown in the CAT Engine and so the object could not be processed. This would be accompanied by the 'codeMajor/severity' values of 'failure/error'. The statement 'Unknown Object' of should also be presented.", "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/imsx_StatusInfoDType" } } } }, "500" : { "description" : "This code should be used only if there is catastrophic error and there is not a more appropriate code i.e. 'internal_server_error'. This would be accompanied by the 'codeMajor/severity' values of 'failure/error'. ", "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/imsx_StatusInfoDType" } } } }, "default" : { "description" : "This is the response data payload to be supplied when the HTTP code is NOT explicitly defined. This would be accompanied by the 'codeMajor/severity' values of 'failure/error' and the appropriate 'codeMinor' value. The associated HTTP code will also be supplied.", "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/imsx_StatusInfoDType" } } } } } }, "delete" : { "operationId" : "endSection", "summary" : "The REST delete request message for the endSection() API call.", "tags" : [ "SectionsManager" ], "description" : "This request ends all candidate sessions for the section which have not already ended, and ends the section. The sectionIdentifier, sessionIdentifiers, and sessionStates returned from previous requests related to the section become invalid. The delivery engine should not make any further requests related to the section or any session for the section. For a REST-based binding this request uses the DELETE HTTP method because of REST conventions, but the CAT engine is not required to physically delete any session or section data. This request should not be repeated once it has succeeded. ", "parameters" : [ { "name" : "sectionIdentifier", "in" : "path", "description" : "The LUID that identifies the Section to be deleted on the CAT Engine.", "required" : true, "schema" : { "type" : "string" }, "style" : "simple" } ], "security" : [ { "OAuth2CCG" : [ "https://purl.imsglobal.org/cat/v1p0/scope/api", "https://purl.imsglobal.org/cat/v1p0/scope/configure" ] } ], "responses" : { "204" : { "description" : "The response code for when the identified Section has been deleted in the CAT Engine. There is no response payload." }, "400" : { "description" : "The request has been declared as 'bad'. This will be due to the provision of bad data in the request payloads, including a poorly formed JSON payload. This is accompanied by the 'codeMajor/severity' values of 'failure/error'.", "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/imsx_StatusInfoDType" } } } }, "401" : { "description" : "The request was not correctly authorized i.e. 'unauthorisedrequest'. This would be accompanied by the 'codeMajor/severity' values of 'failure/error'. ", "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/imsx_StatusInfoDType" } } } }, "404" : { "description" : "The supplied identifier is unknown in the CAT Engine and so the object could not be processed. This would be accompanied by the 'codeMajor/severity' values of 'failure/error'. The statement 'Unknown Object' of should also be presented.", "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/imsx_StatusInfoDType" } } } }, "500" : { "description" : "This code should be used only if there is catastrophic error and there is not a more appropriate code i.e. 'internal_server_error'. This would be accompanied by the 'codeMajor/severity' values of 'failure/error'. ", "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/imsx_StatusInfoDType" } } } }, "default" : { "description" : "This is the response data payload to be supplied when the HTTP code is NOT explicitly defined. This would be accompanied by the 'codeMajor/severity' values of 'failure/error' and the appropriate 'codeMinor' value. The associated HTTP code will also be supplied.", "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/imsx_StatusInfoDType" } } } } } } }, "/sections/{sectionIdentifier}/sessions" : { "post" : { "operationId" : "createSession", "summary" : "The REST createbp request message for the createSession() API call.", "tags" : [ "SessionsManager" ], "description" : "This request initializes a candidate session for the adaptive section. The request optionally provides the CAT engine with information related to the candidate. The CAT engine returns the initial stage (list of items) to be presented to the candidate. This request may be made multiple times after a successful Create Section request, once per candidate, when each candidate enters the adaptive section on the test. This request is NOT idempotent.", "parameters" : [ { "name" : "sectionIdentifier", "in" : "path", "description" : "The LUID that identifies the Section in the CAT Engine to which this new Session is to be assigned.", "required" : true, "schema" : { "type" : "string" }, "style" : "simple" } ], "security" : [ { "OAuth2CCG" : [ "https://purl.imsglobal.org/cat/v1p0/scope/api", "https://purl.imsglobal.org/cat/v1p0/scope/deliver" ] } ], "requestBody" : { "description" : "The Session configuration data including the information about the examinee.", "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/SessionDType" } } }, "required" : true }, "responses" : { "201" : { "description" : "The response code for when the new Session has been created in the CAT Engine and the associated identifier has been returned. The response message consists of the identifier allocated to the session, the initial set of Items to be presented and the session state to be used for later requests.", "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/CreateSessionResponseBodyDType" } } } }, "400" : { "description" : "The request has been declared as 'bad'. This will be due to the provision of bad data in the request payloads, including a poorly formed JSON payload. This is accompanied by the 'codeMajor/severity' values of 'failure/error'.", "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/imsx_StatusInfoDType" } } } }, "401" : { "description" : "The request was not correctly authorized i.e. 'unauthorisedrequest'. This would be accompanied by the 'codeMajor/severity' values of 'failure/error'. ", "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/imsx_StatusInfoDType" } } } }, "404" : { "description" : "The supplied identifier is unknown in the CAT Engine and so the object could not be processed. This would be accompanied by the 'codeMajor/severity' values of 'failure/error'. The statement 'Unknown Object' of should also be presented.", "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/imsx_StatusInfoDType" } } } }, "500" : { "description" : "This code should be used only if there is catastrophic error and there is not a more appropriate code i.e. 'internal_server_error'. This would be accompanied by the 'codeMajor/severity' values of 'failure/error'. ", "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/imsx_StatusInfoDType" } } } }, "default" : { "description" : "This is the response data payload to be supplied when the HTTP code is NOT explicitly defined. This would be accompanied by the 'codeMajor/severity' values of 'failure/error' and the appropriate 'codeMinor' value. The associated HTTP code will also be supplied.", "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/imsx_StatusInfoDType" } } } } } } }, "/sections/{sectionIdentifier}/sessions/{sessionIdentifier}" : { "delete" : { "operationId" : "endSession", "summary" : "The REST delete request message for the endSession() API call.", "tags" : [ "SessionsManager" ], "description" : "This request ends the candidate session. The sessionIdentifier, and the sessionState returned from any previous request in the session, become invalid. The delivery engine should not make any further requests related to the session. For a REST-based binding this request uses the DELETE HTTP method because of REST conventions; but it is not required that CAT engines physically delete data or resources associated with the session. If the identified session cannot be found then the 'unknownobject' status code must be reported.", "parameters" : [ { "name" : "sectionIdentifier", "in" : "path", "description" : "The LUID that identifies the Section to be deleted on the CAT Engine.", "required" : true, "schema" : { "type" : "string" }, "style" : "simple" }, { "name" : "sessionIdentifier", "in" : "path", "description" : "The LUID that identifies the Session, in the context of the identified Section, to be deleted on the CAT Engine.", "required" : true, "schema" : { "type" : "string" }, "style" : "simple" } ], "security" : [ { "OAuth2CCG" : [ "https://purl.imsglobal.org/cat/v1p0/scope/api", "https://purl.imsglobal.org/cat/v1p0/scope/deliver" ] } ], "responses" : { "204" : { "description" : "The response code for when the identified Session has been deleted in the CAT Engine. There is no response payload." }, "400" : { "description" : "The request has been declared as 'bad'. This will be due to the provision of bad data in the request payloads, including a poorly formed JSON payload. This is accompanied by the 'codeMajor/severity' values of 'failure/error'.", "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/imsx_StatusInfoDType" } } } }, "401" : { "description" : "The request was not correctly authorized i.e. 'unauthorisedrequest'. This would be accompanied by the 'codeMajor/severity' values of 'failure/error'. ", "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/imsx_StatusInfoDType" } } } }, "404" : { "description" : "The supplied identifier is unknown in the CAT Engine and so the object could not be processed. This would be accompanied by the 'codeMajor/severity' values of 'failure/error'. The statement 'Unknown Object' of should also be presented.", "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/imsx_StatusInfoDType" } } } }, "500" : { "description" : "This code should be used only if there is catastrophic error and there is not a more appropriate code i.e. 'internal_server_error'. This would be accompanied by the 'codeMajor/severity' values of 'failure/error'. ", "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/imsx_StatusInfoDType" } } } }, "default" : { "description" : "This is the response data payload to be supplied when the HTTP code is NOT explicitly defined. This would be accompanied by the 'codeMajor/severity' values of 'failure/error' and the appropriate 'codeMinor' value. The associated HTTP code will also be supplied.", "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/imsx_StatusInfoDType" } } } } } } }, "/sections/{sectionIdentifier}/sessions/{sessionIdentifier}/results" : { "post" : { "operationId" : "submitResults", "summary" : "The REST update request message for the submitResults() API call.", "tags" : [ "SessionsManager" ], "description" : "This request sends the results from the current item stage in a candidate session to the CAT engine. The CAT engine returns its computed outcome variable values for the current stage and the test as a whole. It also returns the next item stage to be presented to the candidate. Instead of the next item stage, it may also return an indication that the adaptive section has ended, by returning an empty list for nextItems. If the identified Section/Session cannot be found then the 'unknownobject' status code must be reported.", "parameters" : [ { "name" : "sectionIdentifier", "in" : "path", "description" : "The LUID that identifies the Section in the CAT Engine to be used.", "required" : true, "schema" : { "type" : "string" }, "style" : "simple" }, { "name" : "sessionIdentifier", "in" : "path", "description" : "The LUID that identifies the Session, in the context of the Section, in the CAT Engine to be used.", "required" : true, "schema" : { "type" : "string" }, "style" : "simple" } ], "security" : [ { "OAuth2CCG" : [ "https://purl.imsglobal.org/cat/v1p0/scope/api", "https://purl.imsglobal.org/cat/v1p0/scope/deliver" ] } ], "requestBody" : { "description" : "The set of results that have been obtained, so far, by the examinee for the identified session.", "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/ResultsDType" } } }, "required" : true }, "responses" : { "201" : { "description" : "The response code for when the next set of Items to be presented to the examinee has been returned. The response message contains the next set of Items, the session state to be used in later requests and, optionally, the assessment results.", "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/SubmitResultsResponseBodyDType" } } } }, "400" : { "description" : "The request has been declared as 'bad'. This will be due to the provision of bad data in the request payloads, including a poorly formed JSON payload. This is accompanied by the 'codeMajor/severity' values of 'failure/error'.", "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/imsx_StatusInfoDType" } } } }, "401" : { "description" : "The request was not correctly authorized i.e. 'unauthorisedrequest'. This would be accompanied by the 'codeMajor/severity' values of 'failure/error'. ", "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/imsx_StatusInfoDType" } } } }, "404" : { "description" : "The supplied identifier is unknown in the CAT Engine and so the object could not be processed. This would be accompanied by the 'codeMajor/severity' values of 'failure/error'. The statement 'Unknown Object' of should also be presented.", "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/imsx_StatusInfoDType" } } } }, "500" : { "description" : "This code should be used only if there is catastrophic error and there is not a more appropriate code i.e. 'internal_server_error'. This would be accompanied by the 'codeMajor/severity' values of 'failure/error'. ", "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/imsx_StatusInfoDType" } } } }, "default" : { "description" : "This is the response data payload to be supplied when the HTTP code is NOT explicitly defined. This would be accompanied by the 'codeMajor/severity' values of 'failure/error' and the appropriate 'codeMinor' value. The associated HTTP code will also be supplied.", "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/imsx_StatusInfoDType" } } } } } } } }, "components" : { "securitySchemes" : { "OAuth2CCG" : { "type" : "oauth2", "description" : "A CAT engine implementation may adopt any scope structure and naming scheme which meets its requirements, including not using scopes at all. The scopes shown here are recommended, not required.", "flows" : { "clientCredentials" : { "tokenUrl" : "https://www.service-dependent.com/oauth2Token", "scopes" : { "https://purl.imsglobal.org/cat/v1p0/scope/api" : "This enables access to all of the endpoints.", "https://purl.imsglobal.org/cat/v1p0/scope/configure" : "This enables access to the endoints that permit the management of Sections.", "https://purl.imsglobal.org/cat/v1p0/scope/deliver" : "This enables access to the endoints that permit the management of Sessions." } } } } }, "schemas" : { "CreateSessionResponseBodyDType" : { "description" : "The response code for when the new Session has been created in the CAT Engine and the associated identifier has been returned. The response message consists of the identifier allocated to the session, the initial set of Items to be presented and the session state to be used for later requests.", "type" : "object", "properties" : { "sessionIdentifier" : { "description" : "Model Primitive Datatype = NCName. The LUID that has been assigned by the CAT Engine to the new Session.", "type" : "string" }, "nextItems" : { "$ref" : "#/components/schemas/NextItemSetDType" }, "sessionState" : { "description" : "Model Primitive Datatype = NormalizedString. The session state to send back on subsequent calls within this session.", "type" : "string" } }, "additionalProperties" : false }, "GetSectionResponseBodyDType" : { "description" : "The response code for when the list of Items in the section's item pool has been returned. The response message contains the list of Items, the section configuration used to create the section, and any qtiUsagedata and qtiMetadata used to create the section.", "type" : "object", "properties" : { "items" : { "$ref" : "#/components/schemas/ItemSetDType" }, "section" : { "$ref" : "#/components/schemas/SectionDType" } }, "additionalProperties" : false }, "SubmitResultsResponseBodyDType" : { "description" : "The response code for when the next set of Items to be presented to the examinee has been returned. The response message contains the next set of Items, the session state to be used in later requests and, optionally, the assessment results.", "type" : "object", "properties" : { "nextItems" : { "$ref" : "#/components/schemas/NextItemSetDType" }, "assessmentResult" : { "$ref" : "#/components/schemas/AssessmentResultDType" }, "sessionState" : { "description" : "Model Primitive Datatype = NormalizedString. The session state to send back on subsequent calls within this session.", "type" : "string" } }, "additionalProperties" : false }, "CreateSectionResponseBodyDType" : { "description" : "The response code for when the new Section has been created in the CAT Engine and the associated identifier has been returned.", "type" : "object", "properties" : { "sectionIdentifier" : { "description" : "Model Primitive Datatype = NCName.", "type" : "string" } }, "additionalProperties" : false }, "AssessmentResultDType" : { "description" : "An Assessment Result is used to report the results of a candidate's interaction with a test and/or one or more items attempted. Information about the test is optional, in some systems it may be possible to interact with items that are not organized into a test at all. For example, items that are organized with learning resources and presented individually in a formative context.", "type" : "object", "properties" : { "context" : { "$ref" : "#/components/schemas/ContextDType" }, "testResult" : { "$ref" : "#/components/schemas/TestResultDType" }, "itemResult" : { "description" : "When a test result is given the following item results must relate only to items that were selected for presentation as part of the corresponding test session. Furthermore, all items selected for presentation should be reported with a corresponding itemResult.", "type" : "array", "minItems" : 0, "items" : { "$ref" : "#/components/schemas/ItemResultDType" } } }, "additionalProperties" : false }, "CandidateResponseDType" : { "description" : "The response given by the candidate.", "type" : "object", "properties" : { "value" : { "description" : "The value(s) of the response variable. A NULL value, resulting from no response, is indicated by the absence of any value. The order of the values is significant only if the response was declared with ordered cardinality.", "type" : "array", "minItems" : 0, "items" : { "$ref" : "#/components/schemas/ValueDType" } } }, "additionalProperties" : false }, "ContextDType" : { "description" : "This is the context for the 'assessmentResult'. It provides the corresponding set of identifiers.", "type" : "object", "properties" : { "sourcedId" : { "description" : "Model Primitive Datatype = NCName. A unique identifier for the test candidate.", "type" : "string" }, "sessionIdentifiers" : { "description" : "The system that creates the result (for example, the test delivery system) should assign a session identifier that it can use to identify the session. Subsequent systems that process the result might assign their own identifier to the session which should be added to the context if the result is modified and exported for transport again.", "type" : "array", "minItems" : 0, "items" : { "$ref" : "#/components/schemas/SessionIdentifierDType" } } }, "additionalProperties" : false }, "CorrectResponseDType" : { "description" : "The correct response may be output as part of the report if desired. Systems are not limited to reporting correct responses declared in responseDeclarations. For example, a correct response may be set by a templateRule or may simply have been suppressed from the declaration passed to the delivery engine e.g. for security.", "type" : "object", "properties" : { "interpretation" : { "description" : "Model Primitive Datatype = String. A human readable interpretation of the correct value.", "type" : "string" }, "value" : { "description" : "The order of the values is signficant only when the response is of ordered cardinality.", "type" : "array", "minItems" : 0, "items" : { "$ref" : "#/components/schemas/ValueDType" } } }, "additionalProperties" : false }, "ItemResultDType" : { "description" : "The result of an item session is reported with an itemResult. A report may contain multiple results for the same instance of an item representing multiple attempts, progression through an adaptive item or even more detailed tracking. In these cases, each item result must have a different datestamp.", "type" : "object", "properties" : { "identifier" : { "description" : "Model Primitive Datatype = NCName. The identifier of the item for which this is a result. For item results that are reported as part of a test result this is the identifier used to refer to the item in the test (see assessmentItemRef). For item results that are reported on their own, this can be any suitable identifier for the item. Where possible, the value should match the identifier attribute on the associated assessmentItem.", "type" : "string" }, "sequenceIndex" : { "description" : "Model Primitive Datatype = NonNegativeInteger. For item results that are reported as part of a test, this attribute must be used to indicate the position of the item within the specific instance of the test. The first item of the first part of the test is defined to have sequence index 1.", "type" : "integer", "format" : "int32", "minimum" : 0 }, "datestamp" : { "description" : "Model Primitive Datatype = DateTime. The date stamp of when this result was recorded.", "type" : "string", "format" : "date-time" }, "sessionStatus" : { "description" : "The session status is used to interpret the values of the item variables. See the sessionStatus vocabulary.", "type" : "string", "enum" : [ "final","initial","pendingResponseProcessing","pendingSubmission" ] }, "responseVariables" : { "description" : "Indicates that a Response Variable is being reported. This is the value of one of the responses associated with an Item in the corresponding ASI instance.", "type" : "array", "minItems" : 0, "items" : { "$ref" : "#/components/schemas/ResponseVariableDType" } }, "templateVariables" : { "description" : "Indicates that a Template Variable is being reported. This is the value of one of the template variables associated with an Item in the corresponding ASI instance.", "type" : "array", "minItems" : 0, "items" : { "$ref" : "#/components/schemas/TemplateVariableDType" } }, "outcomeVariables" : { "description" : "Indicates that an Outcome Variable is being reported. This is the value of one of the outcomes associated with either an Item or Test and defined in the corresponding ASI instance.", "type" : "array", "minItems" : 0, "items" : { "$ref" : "#/components/schemas/OutcomeVariableDType" } }, "candidateComment" : { "description" : "Model Primitive Datatype = String. An optional comment supplied by the candidate (see the allowComment in the ASI documentation [QTI, 20a]).", "type" : "string" } }, "required" : [ "identifier","datestamp","sessionStatus" ], "additionalProperties" : false }, "ItemSetDType" : { "description" : "A set of Item identfiers.", "type" : "object", "properties" : { "itemIdentifiers" : { "description" : "Model Primitive Datatype = NCName. The Identifiers for the set of Items. These should be the GUIDs that have been assigned to AssessmentItems when defined using IMS QTI.", "type" : "array", "minItems" : 1, "items" : { "type" : "string" } } }, "required" : [ "itemIdentifiers" ], "additionalProperties" : false }, "KeyValuePairDType" : { "description" : "The container for the values assigned to the Key/Value pair.", "type" : "object", "properties" : { "glossaryURI" : { "description" : "Model Primitive Datatype = AnyURI. This is a URI to the definition of the data being supplied in this accompanying key/value pair. This definition should provide a human readable description of the data-type and value space for the value being identified by its key. ", "type" : "string", "format" : "uri" }, "key" : { "description" : "Model Primitive Datatype = String. The key for the value to be supplied.", "type" : "string" }, "value" : { "description" : "Model Primitive Datatype = String. The value being supplied.", "type" : "string" } }, "required" : [ "key","value" ], "additionalProperties" : false }, "NextItemSetDType" : { "description" : "The container for the information about the set of next Items that should be presented to the examinee.", "type" : "object", "properties" : { "itemIdentifiers" : { "description" : "Model Primitive Datatype = NCName. The Identifiers for the set of Items that should be presented next. These should be the GUIDs that have been assigned to AssessmentItems when defined using IMS QTI.", "type" : "array", "minItems" : 1, "items" : { "type" : "string" } }, "stageLength" : { "description" : "Model Primitive Datatype = NonNegativeInteger. The (minimum) number of items the CAT Engine can present before requesting next items", "type" : "integer", "format" : "int32", "minimum" : 0 } }, "required" : [ "itemIdentifiers" ], "additionalProperties" : false }, "OutcomeVariableDType" : { "description" : "The Item result information related to an 'Outcome Variable'.", "type" : "object", "properties" : { "identifier" : { "description" : "Model Primitive Datatype = NCName. The identifier of the Outcome Variable.", "type" : "string" }, "cardinality" : { "description" : "The cardinality of the Outcome Variable, taken from the corresponding declaration or definition.", "type" : "string", "enum" : [ "multiple","ordered","record","single" ] }, "baseType" : { "description" : "The base type of the Outcome Variable, taken from the corresponding declaration of definition. This value is omitted only for variables with record cardinality.", "type" : "string", "enum" : [ "boolean","directedPair","duration","file","float","identifier","integer","pair","point","string","uri" ] }, "view" : { "description" : "The views (if any) declared for the outcome must be copied to the report to enable systems that render the report to hide information not relevant in a specific situation. If no values are given, the outcome's value should be considered relevant in all views.", "type" : "array", "minItems" : 0, "items" : { "type" : "string", "enum" : [ "author","candidate","proctor","scorer","testConstructor","tutor" ] } }, "interpretation" : { "description" : "Model Primitive Datatype = String. A human readable interpretation of the default value.", "type" : "string" }, "longInterpretation" : { "description" : "Model Primitive Datatype = AnyURI. An optional link to an extended interpretation of the outcome variable's value.", "type" : "string", "format" : "uri" }, "normalMaximum" : { "description" : "Model Primitive Datatype = Double. The normalMaximum attribute optionally defines the maximum magnitude of numeric outcome variables, it must be a positive value. If given, the outcome's value can be divided by normalMaximum and then truncated (if necessary) to obtain a normalized score in the range [-1.0,1.0]. normalMaximum has no affect on responseProcessing or the values that the outcome variable itself can take.", "type" : "number", "format" : "double" }, "normalMinimum" : { "description" : "Model Primitive Datatype = Double. The normalMinimum attribute optionally defines the minimum value of numeric outcome variables, it may be negative.", "type" : "number", "format" : "double" }, "masteryValue" : { "description" : "Model Primitive Datatype = Double. The masteryValue attribute optionally defines a value for numeric outcome variables above which the aspect being measured is considered to have been mastered by the candidate.", "type" : "number", "format" : "double" }, "value" : { "description" : "The value(s) of the outcome variable. The order of the values is significant only if the outcome was declared with ordered cardinality.", "type" : "array", "minItems" : 0, "items" : { "$ref" : "#/components/schemas/ValueDType" } } }, "required" : [ "identifier","cardinality" ], "additionalProperties" : false }, "PCIContextDType" : { "description" : "This is the container for the contextual information that can be supplied for a PCI used within an Item. The contained information is only relevant when there is an 'interactionType' of 'portableCustomInteraction'.", "type" : "object", "properties" : { "customTypeIdentifier" : { "description" : "Model Primitive Datatype = NormalizedString. This is used alongside an 'interactionType' value of 'portableCustomInteraction' to disambiguate which class of PCI is in use as PCIs can vary widely in terms of how they might need to be psychometrically analyzed. This field could potentially also be used to identify which type of a traditional customInteraction is in use by the item.", "type" : "string" }, "interactionKind" : { "description" : "Model Primitive Datatype = NormalizedString. This is used to provide insight into the nature of the PCI e.g. this is a PCI which allows a user to add notes to a musical stave to author some music that might be given a description of 'authoring'. This information could be used by a psychometrician, etc. as an indication of a similar type of standard interaction.", "type" : "string" } }, "additionalProperties" : false }, "QTIMetadataDType" : { "description" : "This contains the new category of metadata for the recording of QTI specific information.", "type" : "object", "properties" : { "itemTemplate" : { "description" : "Model Primitive Datatype = Boolean. True if the item is actually an item template, in other words, the item changes its appearance based on some random or external factor. An assessmentItem that contains a templateProcessing section.", "type" : "boolean" }, "timeDependent" : { "description" : "Model Primitive Datatype = Boolean. Whether or not the item is time dependent. A time dependent item takes the length of time taken for an attempt into consideration when scoring.", "type" : "boolean" }, "composite" : { "description" : "Model Primitive Datatype = Boolean. True if the item comprises more than one interaction, for example, an assessmentItem that contains more than one interaction.", "type" : "boolean" }, "interactionType" : { "description" : "The interaction type(s) of the item. The vocabulary is comprised of the names, as defined in the information model, of the leaf classes derived from interaction.", "type" : "array", "minItems" : 0, "items" : { "type" : "string", "enum" : [ "associateInteraction","choiceInteraction","customInteraction","drawingInteraction","endAttemptInteraction","extendedTextInteraction","gapMatchInteraction","graphicAssociateInteraction","graphicGapMatchInteraction","graphicOrderInteraction","hotspotInteraction","hottextInteraction","inlineChoiceInteraction","matchInteraction","mediaInteraction","orderInteraction","portableCustomInteraction","positionObjectInteraction","selectPointInteraction","sliderInteraction","textEntryInteraction","uploadInteraction" ] } }, "portableCustomInteractionContext" : { "$ref" : "#/components/schemas/PCIContextDType" }, "feedbackType" : { "description" : "Describes the type of feedback, if any, available in the item. If feedback is available then it is described as being non-adaptive or adaptive depending on whether the item is itself adaptive. A non-adaptive item generates feedback based on the responses submitted as part of (the last) attempt only. An adaptive item generates feedback that takes into consideration the path taken through the item, in other words, feedback based on the accumulation of all attempts and not just the last.", "type" : "string", "enum" : [ "adaptive","nonadaptive","none" ] }, "solutionAvailable" : { "description" : "Model Primitive Datatype = Boolean. Set to true if a model solution is available for the item. For example, an assessmentItem that provides correct responses for all declared response variables.", "type" : "boolean" }, "scoringMode" : { "description" : "The scoringMode is used to denote that the way in which the scoring is achieved. If the Item includes the response processing then the mode is 'responseprocessing'. If human scoring is required the value is 'human' and if some form of machine processing is required then the value is 'externalmachine'.", "type" : "array", "minItems" : 0, "items" : { "type" : "string", "enum" : [ "human","externalmachine","responseprocessing" ] } }, "toolName" : { "description" : "Model Primitive Datatype = String. The name of the tool used to author the evaluation object.", "type" : "string", "maxLength" : 256 }, "toolVersion" : { "description" : "Model Primitive Datatype = String. The version of the tool used to author the evaluation object.", "type" : "string", "maxLength" : 256 }, "toolVendor" : { "description" : "Model Primitive Datatype = String. The company which produced the tool used to author the evaluation object.", "type" : "string", "maxLength" : 256 } }, "additionalProperties" : false }, "ResponseVariableDType" : { "description" : "The Item result information related to a 'Response Variable'.", "type" : "object", "properties" : { "identifier" : { "description" : "Model Primitive Datatype = NCName. The identifier of the Response Variable.", "type" : "string" }, "cardinality" : { "description" : "The cardinality of the Response Variable, taken from the corresponding declaration or definition.", "type" : "string", "enum" : [ "multiple","ordered","record","single" ] }, "baseType" : { "description" : "The base type of the Response Variable, taken from the corresponding declaration of definition. This value is omitted only for variables with record cardinality.", "type" : "string", "enum" : [ "boolean","directedPair","duration","file","float","identifier","integer","pair","point","string","uri" ] }, "choiceSequence" : { "description" : "Model Primitive Datatype = NCName. When a response variable is bound to an interaction that supports the shuffling of choices, the sequence of choices experienced by the candidate will vary between test instances. When shuffling is in effect, the sequence of choices should be reported as a sequence of choice identifiers using this attribute.", "type" : "array", "minItems" : 0, "items" : { "type" : "string" } }, "correctResponse" : { "$ref" : "#/components/schemas/CorrectResponseDType" }, "candidateResponse" : { "$ref" : "#/components/schemas/CandidateResponseDType" } }, "required" : [ "identifier","cardinality","candidateResponse" ], "additionalProperties" : false }, "ResultsDType" : { "description" : "This is the container for the results that have been accrued by the examinee. These are passed to the CAT Engine to support the selection of the next set of Items.", "type" : "object", "properties" : { "assessmentResult" : { "$ref" : "#/components/schemas/AssessmentResultDType" }, "sessionState" : { "description" : "Model Primitive Datatype = NormalizedString. The session state information. This is the data that was supplied by the CAT Engine when the session was created or the next set of Items was requested.", "type" : "string" } }, "required" : [ "assessmentResult" ], "additionalProperties" : false }, "SectionDType" : { "description" : "The container for the definition of the Section that is to be created in the CAT Engine. A Section is aligned to a QTI AssessmentSection [QTI, 20a].", "type" : "object", "properties" : { "qtiMetadata" : { "$ref" : "#/components/schemas/QTIMetadataDType" }, "qtiUsagedata" : { "description" : "Model Primitive Datatype = String. This is the Base64 encoded XML conforming to IMS QTI 3.0 Usage Date data model [QTI, 20c].", "type" : "string" }, "sectionConfiguration" : { "description" : "Model Primitive Datatype = String. This is the Base64 encoded data containing section configuration, aligned with adaptive engine (black box). This format will be proprietary to each adaptive CAT Engine.", "type" : "string" } }, "required" : [ "sectionConfiguration" ], "additionalProperties" : false }, "SessionDType" : { "description" : "This is the container for the session configuration data that must be supplied to the CAT Engine when the session is to be created.", "type" : "object", "properties" : { "personalNeedsAndPreferences" : { "description" : "Model Primitive Datatype = NormalizedString. This is the Base64 encoded XML data for the Personal Needs and Preferences (PNP) for the examinee. This data conforms to the XML as defined in the IMS Access for All Personal Needs and Preferences (AfAPNP) 3.0 XML Binding specification [AFAPNP, 20].", "type" : "string" }, "demographics" : { "description" : "Model Primitive Datatype = NormalizedString. The Base64 encoding of the JSON data for the Demographics information for the examinee. This data conforms to the JSON as defined in the IMS OneRoster 1.1 specification [OR, 17].", "type" : "string" }, "priorData" : { "description" : "This is proprietary data that is supplied to the CAT Engine as a key/value pairs.", "type" : "array", "minItems" : 0, "items" : { "$ref" : "#/components/schemas/KeyValuePairDType" } } }, "additionalProperties" : false }, "SessionIdentifierDType" : { "description" : "The system that creates the result (for example, the test delivery system) should assign a session identifier that it can use to identify the session.", "type" : "object", "properties" : { "sourceID" : { "description" : "Model Primitive Datatype = AnyURI. A unique identifier of the system which added this identifier to the result.", "type" : "string", "format" : "uri" }, "identifier" : { "description" : "Model Primitive Datatype = NCName. The system that creates the report should add a session identifier. Subsequent systems that process the results might use their own identifier for the session and should add this too if the result is exported again for further transport.", "type" : "string" } }, "required" : [ "sourceID","identifier" ], "additionalProperties" : false }, "TemplateVariableDType" : { "description" : "The Item result information related to a 'Template Variable'.", "type" : "object", "properties" : { "identifier" : { "description" : "Model Primitive Datatype = NCName. The identifier of the Template Variable.", "type" : "string" }, "cardinality" : { "description" : "The cardinality of the Template Variable, taken from the corresponding declaration or definition.", "type" : "string", "enum" : [ "multiple","ordered","record","single" ] }, "baseType" : { "description" : "The base type of the Template Variable, taken from the corresponding declaration of definition. This value is omitted only for variables with record cardinality.", "type" : "string", "enum" : [ "boolean","directedPair","duration","file","float","identifier","integer","pair","point","string","uri" ] }, "value" : { "description" : "The value(s) of the template variable. The order of the values is significant only if the template variable was declared with ordered cardinality.", "type" : "array", "minItems" : 0, "items" : { "$ref" : "#/components/schemas/ValueDType" } } }, "required" : [ "identifier","cardinality" ], "additionalProperties" : false }, "TestResultDType" : { "description" : "The container for the Test result. When a test result is given the following item results must relate only to items that were selected for presentation as part of the corresponding test session. Furthermore, all items selected for presentation should be reported with a corresponding itemResult.", "type" : "object", "properties" : { "identifier" : { "description" : "Model Primitive Datatype = NCName. The identifier of the test for which this is a result.", "type" : "string" }, "datestamp" : { "description" : "Model Primitive Datatype = DateTime. The date stamp of when this result was recorded.", "type" : "string", "format" : "date-time" }, "responseVariables" : { "description" : "Indicates that a Response Variable is being reported. This is the value of one of the responses associated with an Item in the corresponding ASI instance [QTI, 20a].", "type" : "array", "minItems" : 0, "items" : { "$ref" : "#/components/schemas/ResponseVariableDType" } }, "templateVariables" : { "description" : "Indicates that a Template Variable is being reported. This is the value of one of the template variables associated with an Item in the corresponding ASI instance [QTI, 20a].", "type" : "array", "minItems" : 0, "items" : { "$ref" : "#/components/schemas/TemplateVariableDType" } }, "outcomeVariables" : { "description" : "Indicates that an Outcome Variable is being reported. This is the value of one of the outcomes associated with either an Item or Test and defined in the corresponding ASI instance [QTI, 20a].", "type" : "array", "minItems" : 0, "items" : { "$ref" : "#/components/schemas/OutcomeVariableDType" } } }, "required" : [ "identifier","datestamp" ], "additionalProperties" : false }, "ValueDType" : { "description" : "A class that can represent a single value of any baseType in variable declarations and result reports. The base-type is defined by the baseType attribute of the declaration except in the case of variables with record cardinality.", "type" : "object", "properties" : { "fieldIdentifier" : { "description" : "Model Primitive Datatype = NCName. This attribute is only used for specifying the field identifier for a value that forms part of a record.", "type" : "string" }, "baseType" : { "description" : "This attribute is only used for specifying the base-type of a value that forms part of a record.", "type" : "string", "enum" : [ "boolean","directedPair","duration","file","float","identifier","integer","pair","point","string","uri" ] }, "value" : { "description" : "Model Primitive Datatype = NormalizedString. The value being supplied.", "type" : "string" } }, "required" : [ "value" ], "additionalProperties" : false }, "imsx_CodeMinorDType" : { "description" : "This is the container for the set of code minor status codes reported in the responses from the Service Provider.", "type" : "object", "properties" : { "imsx_codeMinorField" : { "description" : "Each reported code minor status code.", "type" : "array", "minItems" : 1, "items" : { "$ref" : "#/components/schemas/imsx_CodeMinorFieldDType" } } }, "required" : [ "imsx_codeMinorField" ], "additionalProperties" : false }, "imsx_CodeMinorFieldDType" : { "description" : "This is the container for a single code minor status code.", "type" : "object", "properties" : { "imsx_codeMinorFieldName" : { "description" : "Model Primitive Datatype = NormalizedString. This should contain the identity of the system that has produced the code minor status code report.", "type" : "string" }, "imsx_codeMinorFieldValue" : { "description" : "The code minor status code (this is a value from the corresponding enumerated vocabulary).", "type" : "string", "enum" : [ "fullsuccess","forbidden","invaliddata","unauthorisedrequest","internal_server_error","server_busy","unknownobject" ] } }, "required" : [ "imsx_codeMinorFieldName","imsx_codeMinorFieldValue" ], "additionalProperties" : false }, "imsx_StatusInfoDType" : { "description" : "This is the container for the status code and associated information returned within the HTTP messages received from the Service Provider.", "type" : "object", "properties" : { "imsx_codeMajor" : { "description" : "The code major value (from the corresponding enumerated vocabulary).", "type" : "string", "enum" : [ "success","processing","failure","unsupported" ] }, "imsx_severity" : { "description" : "The severity value (from the corresponding enumerated vocabulary).", "type" : "string", "enum" : [ "status","warning","error" ] }, "imsx_description" : { "description" : "Model Primitive Datatype = String. A human readable description supplied by the entity creating the status code information.", "type" : "string" }, "imsx_codeMinor" : { "$ref" : "#/components/schemas/imsx_CodeMinorDType" } }, "required" : [ "imsx_codeMajor","imsx_severity" ], "additionalProperties" : false } } } }
The OpenAPI 2 (YAML) listing (based upon [OAS, 14]) is shown below (the OpenAPI YAML is available at: https://purl.imsglobal.org/cat/v1p0/schema/openapi/imscatv1p0_openapi2_v1p0.yaml).
# ##################################################################################### # YAML File Information # ##################################################################################### # # Author: Colin Smythe (IMS Global, UK), Mark McKell (IMS Global, USA) # Date: 9th November, 2020 # Version: 1.0 # Status: IMS Candidate Final # Description: The Computer Adaptive Testing (CAT) Service enables a standard way of implementing adaptive testing using Question and Test Interoperability (QTI). This service has been described using the IMS Model Driven Specification development approach, this being the Platform Specific Model (PSM) of the service. # # History: This is the first release of the Computer Adaptive Testing (CAT) Service definition. # # License: IPR and Distribution Notices # # This machine readable file is derived from the IMS Computer Adaptive Testing (CAT) Service Version 1.0 # found at http://www.imsglobal.org/cat and the original IMS Global schema binding or code base # http://www.imsglobal.org/cat. # # Recipients of this document are requested to submit, with their comments, notification of any relevant # patent claims or other intellectual property rights of which they may be aware that might be infringed by # any implementation of the specification set forth in this document, and to provide supporting documentation. # # IMS takes no position regarding the validity or scope of any intellectual property or other rights that might # be claimed to pertain to the implementation or use of the technology described in this document or the extent # to which any license under such rights might or might not be available; neither does it represent that it has # made any effort to identify any such rights. Information on IMS procedures with respect to rights in IMS # specifications can be found at the IMS Global Intellectual Property Rights web page: http://www.imsglobal.org/ipr/imsipr_policyFinal.pdf. # # Copyright (c) IMS Global Learning Consortium 1999-2021. All Rights Reserved. # # Use of this specification to develop products or services is governed by the license with IMS found on the IMS website: http://www.imsglobal.org/license.html. # # Permission is granted to all parties to use excerpts from this document as needed in producing requests for proposals. # # The limited permissions granted above are perpetual and will not be revoked by IMS or its successors or assigns. # # THIS SPECIFICATION IS BEING OFFERED WITHOUT ANY WARRANTY WHATSOEVER, AND IN PARTICULAR, ANY WARRANTY OF NONINFRINGEMENT IS # EXPRESSLY DISCLAIMED. ANY USE OF THIS SPECIFICATION SHALL BE MADE ENTIRELY AT THE IMPLEMENTERS OWN RISK, AND NEITHER THE CONSORTIUM # NOR ANY OF ITS MEMBERS OR SUBMITTERS, SHALL HAVE ANY LIABILITY WHATSOEVER TO ANY IMPLEMENTER OR THIRD PARTY FOR ANY DAMAGES OF # ANY NATURE WHATSOEVER, DIRECTLY OR INDIRECTLY, ARISING FROM THE USE OF THIS SPECIFICATION. # # Source UML File Information # =========================== # The source file information must be supplied as an XMI file (without diagram layout information). # The supported UML authoring tools are: # (a) Poseidon - v6 (and later) # (b) Papyrus - v1.1.3 (and later) # # Source XSLT File Information # ============================ # XSL Generator: Specificationv1p0_GenerationToolv1.xsl # XSLT Processor: Saxon # Release: 1.0 # Date: 31st January, 2021 # Autogen Engineer: Colin Smythe (IMS Global, UK) # Autogen Date: 2021-01-30 # # IMS Global Auto-generation Binding Tool-kit (I-BAT) # =================================================== # This file was auto-generated using the IMS Global Binding Auto-generation Tool-kit (I-BAT). While every # attempt has been made to ensure that this tool auto-generates the files correctly, users should be aware # that this is an experimental tool. Permission is given to make use of this tool. IMS Global makes no # claim on the materials created by third party users of this tool. Details on how to use this tool # are contained in the IMS Global "I-BAT" documentation available at the IMS Global web-site: # http://www.imsglobal.org. # # Tool Copyright: 2012-2021 (c) IMS Global Learning Consortium Inc. All Rights Reserved. # # ##################################################################################### swagger: '2.0' ##################################################################################### # API Information # ##################################################################################### info: version: '1.0' title: Computer Adaptive Testing (CAT) Service OpenAPI (YAML) Definition description: The Computer Adaptive Testing (CAT) Service enables a standard way of implementing adaptive testing using Question and Test Interoperability (QTI). This service has been described using the IMS Model Driven Specification development approach, this being the Platform Specific Model (PSM) of the service. termsOfService: Permission is granted to all parties to use excerpts from this document as needed in producing requests for proposals. The limited permissions granted above are perpetual and will not be revoked by IMS or its successors or assigns. THIS API DEFINITION IS BEING OFFERED WITHOUT ANY WARRANTY WHATSOEVER, AND IN PARTICULAR, ANY WARRANTY OF NONINFRINGEMENT IS EXPRESSLY DISCLAIMED. ANY USE OF THIS SPECIFICATION SHALL BE MADE ENTIRELY AT THE IMPLEMENTERS OWN RISK, AND NEITHER THE CONSORTIUM, NOR ANY OF ITS MEMBERS OR SUBMITTERS, SHALL HAVE ANY LIABILITY WHATSOEVER TO ANY IMPLEMENTER OR THIRD PARTY FOR ANY DAMAGES OF ANY NATURE WHATSOEVER, DIRECTLY OR INDIRECTLY, ARISING FROM THE USE OF THIS API DEFINITION. contact: name: Lisa Mattson (COO), IMS Global url: http://www.imsglobal.org email: lmattson@imsglobal.org license: name: IMS Global url: https://www.imsglobal.org/license.html ##################################################################################### # Host, Base Path, Schemes and Content Types # ##################################################################################### host: www.imsglobal.org basePath: /ims/cat/v1p0 schemes: - http - https consumes: - application/json produces: - application/json ##################################################################################### # Tags # ##################################################################################### tags: - name: SectionsManager description: | The set of service operations that manage access to the adaptive Sections being handled by the CAT Engine. - name: SessionsManager description: | The set of service operations that manage access to the adaptive Sessions being handled by the CAT Engine. ##################################################################################### # Security # ##################################################################################### securityDefinitions: OAuth2CCG: type: oauth2 description: A CAT engine implementation may adopt any scope structure and naming scheme which meets its requirements, including not using scopes at all. The scopes shown here are recommended, not required. flow: application tokenUrl: https://www.service-dependent.com/oauth2Token scopes: https://purl.imsglobal.org/cat/v1p0/scope/api: This enables access to all of the endpoints. https://purl.imsglobal.org/cat/v1p0/scope/configure: This enables access to the endoints that permit the management of Sections. https://purl.imsglobal.org/cat/v1p0/scope/deliver: This enables access to the endoints that permit the management of Sessions. ##################################################################################### # Paths # ##################################################################################### paths: /sections: post: operationId: createSection summary: The REST createbp request message for the createSection() API call. tags: - SectionsManager description: | This is a request to the CAT Engine to create a new adaptive Section. The CAT Engine is responsible for assigning the unique identifier to be used for this Section in other exchanges. This request is NOT idempotent. parameters: - name: section in: body description: | The data for the configuration of the new adaptive Section. required: true schema: $ref: "#/definitions/SectionDType" security: - OAuth2CCG: - https://purl.imsglobal.org/cat/v1p0/scope/api - https://purl.imsglobal.org/cat/v1p0/scope/configure responses: "201" : description: | The response code for when the new Section has been created in the CAT Engine and the associated identifier has been returned. schema: $ref: "#/definitions/CreateSectionResponseBodyDType" "400" : description: | The request has been declared as 'bad'. This will be due to the provision of bad data in the request payloads, including a poorly formed JSON payload. This is accompanied by the 'codeMajor/severity' values of 'failure/error'. schema: $ref: "#/definitions/imsx_StatusInfoDType" "401" : description: | The request was not correctly authorized i.e. 'unauthorisedrequest'. This would be accompanied by the 'codeMajor/severity' values of 'failure/error'. schema: $ref: "#/definitions/imsx_StatusInfoDType" "500" : description: | This code should be used only if there is catastrophic error and there is not a more appropriate code i.e. 'internal_server_error'. This would be accompanied by the 'codeMajor/severity' values of 'failure/error'. schema: $ref: "#/definitions/imsx_StatusInfoDType" "default" : description: | This is the response data payload to be supplied when the HTTP code is NOT explicitly defined. This would be accompanied by the 'codeMajor/severity' values of 'failure/error' and the appropriate 'codeMinor' value. The associated HTTP code will also be supplied. schema: $ref: "#/definitions/imsx_StatusInfoDType" /sections/{sectionIdentifier}: get: operationId: getSection summary: The REST read request message for the getSection() API call. tags: - SectionsManager description: | This request returns the parameters which were used by the CAT engine to create the adaptive section, and the list of the items in the adaptive section's item pool, as configured by the CAT engine. It is recommended that assessment platforms and/or delivery engines use this request to verify that the item pool, as configured by the CAT engine, corresponds exactly to the list of items in the QTI source for the adaptive section. It is also recommended that test administrators verify that each item in the item pool is accessible and deliverable before commencing delivery of candidate sessions. The Get Section request may be used for this, and may be made at any time after a successful Create Section request, as many times as required. parameters: - name: sectionIdentifier in: path description: | The LUID that identifies the Section for which the data on the CAT Engine is to be obtained. required: true type: string security: - OAuth2CCG: - https://purl.imsglobal.org/cat/v1p0/scope/api - https://purl.imsglobal.org/cat/v1p0/scope/configure responses: "200" : description: | The response code for when the list of Items in the section's item pool has been returned. The response message contains the list of Items, the section configuration used to create the section, and any qtiUsagedata and qtiMetadata used to create the section. schema: $ref: "#/definitions/GetSectionResponseBodyDType" "400" : description: | The request has been declared as 'bad'. This will be due to the provision of bad data in the request payloads, including a poorly formed JSON payload. This is accompanied by the 'codeMajor/severity' values of 'failure/error'. schema: $ref: "#/definitions/imsx_StatusInfoDType" "401" : description: | The request was not correctly authorized i.e. 'unauthorisedrequest'. This would be accompanied by the 'codeMajor/severity' values of 'failure/error'. schema: $ref: "#/definitions/imsx_StatusInfoDType" "404" : description: | The supplied identifier is unknown in the CAT Engine and so the object could not be processed. This would be accompanied by the 'codeMajor/severity' values of 'failure/error'. The statement 'Unknown Object' of should also be presented. schema: $ref: "#/definitions/imsx_StatusInfoDType" "500" : description: | This code should be used only if there is catastrophic error and there is not a more appropriate code i.e. 'internal_server_error'. This would be accompanied by the 'codeMajor/severity' values of 'failure/error'. schema: $ref: "#/definitions/imsx_StatusInfoDType" "default" : description: | This is the response data payload to be supplied when the HTTP code is NOT explicitly defined. This would be accompanied by the 'codeMajor/severity' values of 'failure/error' and the appropriate 'codeMinor' value. The associated HTTP code will also be supplied. schema: $ref: "#/definitions/imsx_StatusInfoDType" delete: operationId: endSection summary: The REST delete request message for the endSection() API call. tags: - SectionsManager description: | This request ends all candidate sessions for the section which have not already ended, and ends the section. The sectionIdentifier, sessionIdentifiers, and sessionStates returned from previous requests related to the section become invalid. The delivery engine should not make any further requests related to the section or any session for the section. For a REST-based binding this request uses the DELETE HTTP method because of REST conventions, but the CAT engine is not required to physically delete any session or section data. This request should not be repeated once it has succeeded. parameters: - name: sectionIdentifier in: path description: | The LUID that identifies the Section to be deleted on the CAT Engine. required: true type: string security: - OAuth2CCG: - https://purl.imsglobal.org/cat/v1p0/scope/api - https://purl.imsglobal.org/cat/v1p0/scope/configure responses: "204" : description: | The response code for when the identified Section has been deleted in the CAT Engine. There is no response payload. "400" : description: | The request has been declared as 'bad'. This will be due to the provision of bad data in the request payloads, including a poorly formed JSON payload. This is accompanied by the 'codeMajor/severity' values of 'failure/error'. schema: $ref: "#/definitions/imsx_StatusInfoDType" "401" : description: | The request was not correctly authorized i.e. 'unauthorisedrequest'. This would be accompanied by the 'codeMajor/severity' values of 'failure/error'. schema: $ref: "#/definitions/imsx_StatusInfoDType" "404" : description: | The supplied identifier is unknown in the CAT Engine and so the object could not be processed. This would be accompanied by the 'codeMajor/severity' values of 'failure/error'. The statement 'Unknown Object' of should also be presented. schema: $ref: "#/definitions/imsx_StatusInfoDType" "500" : description: | This code should be used only if there is catastrophic error and there is not a more appropriate code i.e. 'internal_server_error'. This would be accompanied by the 'codeMajor/severity' values of 'failure/error'. schema: $ref: "#/definitions/imsx_StatusInfoDType" "default" : description: | This is the response data payload to be supplied when the HTTP code is NOT explicitly defined. This would be accompanied by the 'codeMajor/severity' values of 'failure/error' and the appropriate 'codeMinor' value. The associated HTTP code will also be supplied. schema: $ref: "#/definitions/imsx_StatusInfoDType" /sections/{sectionIdentifier}/sessions: post: operationId: createSession summary: The REST createbp request message for the createSession() API call. tags: - SessionsManager description: | This request initializes a candidate session for the adaptive section. The request optionally provides the CAT engine with information related to the candidate. The CAT engine returns the initial stage (list of items) to be presented to the candidate. This request may be made multiple times after a successful Create Section request, once per candidate, when each candidate enters the adaptive section on the test. This request is NOT idempotent. parameters: - name: sectionIdentifier in: path description: | The LUID that identifies the Section in the CAT Engine to which this new Session is to be assigned. required: true type: string - name: session in: body description: | The Session configuration data including the information about the examinee. required: true schema: $ref: "#/definitions/SessionDType" security: - OAuth2CCG: - https://purl.imsglobal.org/cat/v1p0/scope/api - https://purl.imsglobal.org/cat/v1p0/scope/deliver responses: "201" : description: | The response code for when the new Session has been created in the CAT Engine and the associated identifier has been returned. The response message consists of the identifier allocated to the session, the initial set of Items to be presented and the session state to be used for later requests. schema: $ref: "#/definitions/CreateSessionResponseBodyDType" "400" : description: | The request has been declared as 'bad'. This will be due to the provision of bad data in the request payloads, including a poorly formed JSON payload. This is accompanied by the 'codeMajor/severity' values of 'failure/error'. schema: $ref: "#/definitions/imsx_StatusInfoDType" "401" : description: | The request was not correctly authorized i.e. 'unauthorisedrequest'. This would be accompanied by the 'codeMajor/severity' values of 'failure/error'. schema: $ref: "#/definitions/imsx_StatusInfoDType" "404" : description: | The supplied identifier is unknown in the CAT Engine and so the object could not be processed. This would be accompanied by the 'codeMajor/severity' values of 'failure/error'. The statement 'Unknown Object' of should also be presented. schema: $ref: "#/definitions/imsx_StatusInfoDType" "500" : description: | This code should be used only if there is catastrophic error and there is not a more appropriate code i.e. 'internal_server_error'. This would be accompanied by the 'codeMajor/severity' values of 'failure/error'. schema: $ref: "#/definitions/imsx_StatusInfoDType" "default" : description: | This is the response data payload to be supplied when the HTTP code is NOT explicitly defined. This would be accompanied by the 'codeMajor/severity' values of 'failure/error' and the appropriate 'codeMinor' value. The associated HTTP code will also be supplied. schema: $ref: "#/definitions/imsx_StatusInfoDType" /sections/{sectionIdentifier}/sessions/{sessionIdentifier}: delete: operationId: endSession summary: The REST delete request message for the endSession() API call. tags: - SessionsManager description: | This request ends the candidate session. The sessionIdentifier, and the sessionState returned from any previous request in the session, become invalid. The delivery engine should not make any further requests related to the session. For a REST-based binding this request uses the DELETE HTTP method because of REST conventions; but it is not required that CAT engines physically delete data or resources associated with the session. If the identified session cannot be found then the 'unknownobject' status code must be reported. parameters: - name: sectionIdentifier in: path description: | The LUID that identifies the Section to be deleted on the CAT Engine. required: true type: string - name: sessionIdentifier in: path description: | The LUID that identifies the Session, in the context of the identified Section, to be deleted on the CAT Engine. required: true type: string security: - OAuth2CCG: - https://purl.imsglobal.org/cat/v1p0/scope/api - https://purl.imsglobal.org/cat/v1p0/scope/deliver responses: "204" : description: | The response code for when the identified Session has been deleted in the CAT Engine. There is no response payload. "400" : description: | The request has been declared as 'bad'. This will be due to the provision of bad data in the request payloads, including a poorly formed JSON payload. This is accompanied by the 'codeMajor/severity' values of 'failure/error'. schema: $ref: "#/definitions/imsx_StatusInfoDType" "401" : description: | The request was not correctly authorized i.e. 'unauthorisedrequest'. This would be accompanied by the 'codeMajor/severity' values of 'failure/error'. schema: $ref: "#/definitions/imsx_StatusInfoDType" "404" : description: | The supplied identifier is unknown in the CAT Engine and so the object could not be processed. This would be accompanied by the 'codeMajor/severity' values of 'failure/error'. The statement 'Unknown Object' of should also be presented. schema: $ref: "#/definitions/imsx_StatusInfoDType" "500" : description: | This code should be used only if there is catastrophic error and there is not a more appropriate code i.e. 'internal_server_error'. This would be accompanied by the 'codeMajor/severity' values of 'failure/error'. schema: $ref: "#/definitions/imsx_StatusInfoDType" "default" : description: | This is the response data payload to be supplied when the HTTP code is NOT explicitly defined. This would be accompanied by the 'codeMajor/severity' values of 'failure/error' and the appropriate 'codeMinor' value. The associated HTTP code will also be supplied. schema: $ref: "#/definitions/imsx_StatusInfoDType" /sections/{sectionIdentifier}/sessions/{sessionIdentifier}/results: post: operationId: submitResults summary: The REST update request message for the submitResults() API call. tags: - SessionsManager description: | This request sends the results from the current item stage in a candidate session to the CAT engine. The CAT engine returns its computed outcome variable values for the current stage and the test as a whole. It also returns the next item stage to be presented to the candidate. Instead of the next item stage, it may also return an indication that the adaptive section has ended, by returning an empty list for nextItems. If the identified Section/Session cannot be found then the 'unknownobject' status code must be reported. parameters: - name: sectionIdentifier in: path description: | The LUID that identifies the Section in the CAT Engine to be used. required: true type: string - name: sessionIdentifier in: path description: | The LUID that identifies the Session, in the context of the Section, in the CAT Engine to be used. required: true type: string - name: resultSet in: body description: | The set of results that have been obtained, so far, by the examinee for the identified session. required: true schema: $ref: "#/definitions/ResultsDType" security: - OAuth2CCG: - https://purl.imsglobal.org/cat/v1p0/scope/api - https://purl.imsglobal.org/cat/v1p0/scope/deliver responses: "201" : description: | The response code for when the next set of Items to be presented to the examinee has been returned. The response message contains the next set of Items, the session state to be used in later requests and, optionally, the assessment results. schema: $ref: "#/definitions/SubmitResultsResponseBodyDType" "400" : description: | The request has been declared as 'bad'. This will be due to the provision of bad data in the request payloads, including a poorly formed JSON payload. This is accompanied by the 'codeMajor/severity' values of 'failure/error'. schema: $ref: "#/definitions/imsx_StatusInfoDType" "401" : description: | The request was not correctly authorized i.e. 'unauthorisedrequest'. This would be accompanied by the 'codeMajor/severity' values of 'failure/error'. schema: $ref: "#/definitions/imsx_StatusInfoDType" "404" : description: | The supplied identifier is unknown in the CAT Engine and so the object could not be processed. This would be accompanied by the 'codeMajor/severity' values of 'failure/error'. The statement 'Unknown Object' of should also be presented. schema: $ref: "#/definitions/imsx_StatusInfoDType" "500" : description: | This code should be used only if there is catastrophic error and there is not a more appropriate code i.e. 'internal_server_error'. This would be accompanied by the 'codeMajor/severity' values of 'failure/error'. schema: $ref: "#/definitions/imsx_StatusInfoDType" "default" : description: | This is the response data payload to be supplied when the HTTP code is NOT explicitly defined. This would be accompanied by the 'codeMajor/severity' values of 'failure/error' and the appropriate 'codeMinor' value. The associated HTTP code will also be supplied. schema: $ref: "#/definitions/imsx_StatusInfoDType" ##################################################################################### # Definitions # ##################################################################################### definitions: CreateSessionResponseBodyDType: description: | The response code for when the new Session has been created in the CAT Engine and the associated identifier has been returned. The response message consists of the identifier allocated to the session, the initial set of Items to be presented and the session state to be used for later requests. type: object properties: sessionIdentifier: description: Model Primitive Datatype = NCName. type: string nextItems: $ref: "#/definitions/NextItemSetDType" sessionState: description: Model Primitive Datatype = NormalizedString. type: string additionalProperties: false GetSectionResponseBodyDType: description: | The response code for when the list of Items in the section's item pool has been returned. The response message contains the list of Items, the section configuration used to create the section, and any qtiUsagedata and qtiMetadata used to create the section. type: object properties: items: $ref: "#/definitions/ItemSetDType" section: $ref: "#/definitions/SectionDType" additionalProperties: false SubmitResultsResponseBodyDType: description: | The response code for when the next set of Items to be presented to the examinee has been returned. The response message contains the next set of Items, the session state to be used in later requests and, optionally, the assessment results. type: object properties: nextItems: $ref: "#/definitions/NextItemSetDType" assessmentResult: $ref: "#/definitions/AssessmentResultDType" sessionState: description: Model Primitive Datatype = NormalizedString. type: string additionalProperties: false CreateSectionResponseBodyDType: description: | The response code for when the new Section has been created in the CAT Engine and the associated identifier has been returned. type: object properties: sectionIdentifier: description: Model Primitive Datatype = NCName. type: string additionalProperties: false AssessmentResultDType: description: | An Assessment Result is used to report the results of a candidate's interaction with a test and/or one or more items attempted. Information about the test is optional, in some systems it may be possible to interact with items that are not organized into a test at all. For example, items that are organized with learning resources and presented individually in a formative context. type: object properties: context: $ref: "#/definitions/ContextDType" testResult: $ref: "#/definitions/TestResultDType" itemResult: description: | When a test result is given the following item results must relate only to items that were selected for presentation as part of the corresponding test session. Furthermore, all items selected for presentation should be reported with a corresponding itemResult. type: array minItems: 0 items: $ref: "#/definitions/ItemResultDType" additionalProperties: false CandidateResponseDType: description: | The response given by the candidate. type: object properties: value: description: | The value(s) of the response variable. A NULL value, resulting from no response, is indicated by the absence of any value. The order of the values is significant only if the response was declared with ordered cardinality. type: array minItems: 0 items: $ref: "#/definitions/ValueDType" additionalProperties: false ContextDType: description: | This is the context for the 'assessmentResult'. It provides the corresponding set of identifiers. type: object properties: sourcedId: description: A unique identifier for the test candidate. Model Primitive Datatype = NCName. type: string sessionIdentifiers: description: | The system that creates the result (for example, the test delivery system) should assign a session identifier that it can use to identify the session. Subsequent systems that process the result might assign their own identifier to the session which should be added to the context if the result is modified and exported for transport again. type: array minItems: 0 items: $ref: "#/definitions/SessionIdentifierDType" additionalProperties: false CorrectResponseDType: description: | The correct response may be output as part of the report if desired. Systems are not limited to reporting correct responses declared in responseDeclarations. For example, a correct response may be set by a templateRule or may simply have been suppressed from the declaration passed to the delivery engine e.g. for security. type: object properties: interpretation: description: A human readable interpretation of the correct value. Model Primitive Datatype = String. type: string value: description: | The order of the values is signficant only when the response is of ordered cardinality. type: array minItems: 0 items: $ref: "#/definitions/ValueDType" additionalProperties: false ItemResultDType: description: | The result of an item session is reported with an itemResult. A report may contain multiple results for the same instance of an item representing multiple attempts, progression through an adaptive item or even more detailed tracking. In these cases, each item result must have a different datestamp. type: object required: - identifier - datestamp - sessionStatus properties: identifier: description: The identifier of the item for which this is a result. For item results that are reported as part of a test result this is the identifier used to refer to the item in the test (see assessmentItemRef). For item results that are reported on their own, this can be any suitable identifier for the item. Where possible, the value should match the identifier attribute on the associated assessmentItem. Model Primitive Datatype = NCName. type: string sequenceIndex: description: For item results that are reported as part of a test, this attribute must be used to indicate the position of the item within the specific instance of the test. The first item of the first part of the test is defined to have sequence index 1. Model Primitive Datatype = NonNegativeInteger. type: integer format: int32 minimum: 0 datestamp: description: The date stamp of when this result was recorded. Model Primitive Datatype = DateTime. type: string format: date-time sessionStatus: description: | The session status is used to interpret the values of the item variables. See the sessionStatus vocabulary. type: string enum: - final - initial - pendingResponseProcessing - pendingSubmission responseVariables: description: | Indicates that a Response Variable is being reported. This is the value of one of the responses associated with an Item in the corresponding ASI instance. type: array minItems: 0 items: $ref: "#/definitions/ResponseVariableDType" templateVariables: description: | Indicates that a Template Variable is being reported. This is the value of one of the template variables associated with an Item in the corresponding ASI instance. type: array minItems: 0 items: $ref: "#/definitions/TemplateVariableDType" outcomeVariables: description: | Indicates that an Outcome Variable is being reported. This is the value of one of the outcomes associated with either an Item or Test and defined in the corresponding ASI instance. type: array minItems: 0 items: $ref: "#/definitions/OutcomeVariableDType" candidateComment: description: An optional comment supplied by the candidate (see the allowComment in the ASI documentation [QTI, 20a]). Model Primitive Datatype = String. type: string additionalProperties: false ItemSetDType: description: | A set of Item identfiers. type: object required: - itemIdentifiers properties: itemIdentifiers: description: | The Identifiers for the set of Items. These should be the GUIDs that have been assigned to AssessmentItems when defined using IMS QTI. Model Primitive Datatype = NCName. type: array minItems: 1 items: type: string additionalProperties: false KeyValuePairDType: description: | The container for the values assigned to the Key/Value pair. type: object required: - key - value properties: glossaryURI: description: This is a URI to the definition of the data being supplied in this accompanying key/value pair. This definition should provide a human readable description of the data-type and value space for the value being identified by its key. Model Primitive Datatype = AnyURI. type: string format: uri key: description: The key for the value to be supplied. Model Primitive Datatype = String. type: string value: description: The value being supplied. Model Primitive Datatype = String. type: string additionalProperties: false NextItemSetDType: description: | The container for the information about the set of next Items that should be presented to the examinee. type: object required: - itemIdentifiers properties: itemIdentifiers: description: | The Identifiers for the set of Items that should be presented next. These should be the GUIDs that have been assigned to AssessmentItems when defined using IMS QTI. Model Primitive Datatype = NCName. type: array minItems: 1 items: type: string stageLength: description: The (minimum) number of items the CAT Engine can present before requesting next items Model Primitive Datatype = NonNegativeInteger. type: integer format: int32 minimum: 0 additionalProperties: false OutcomeVariableDType: description: | The Item result information related to an 'Outcome Variable'. type: object required: - identifier - cardinality properties: identifier: description: The identifier of the Outcome Variable. Model Primitive Datatype = NCName. type: string cardinality: description: | The cardinality of the Outcome Variable, taken from the corresponding declaration or definition. type: string enum: - multiple - ordered - record - single baseType: description: | The base type of the Outcome Variable, taken from the corresponding declaration of definition. This value is omitted only for variables with record cardinality. type: string enum: - boolean - directedPair - duration - file - float - identifier - integer - pair - point - string - uri view: description: | The views (if any) declared for the outcome must be copied to the report to enable systems that render the report to hide information not relevant in a specific situation. If no values are given, the outcome's value should be considered relevant in all views. type: array minItems: 0 items: type: string enum: - author - candidate - proctor - scorer - testConstructor - tutor interpretation: description: A human readable interpretation of the default value. Model Primitive Datatype = String. type: string longInterpretation: description: An optional link to an extended interpretation of the outcome variable's value. Model Primitive Datatype = AnyURI. type: string format: uri normalMaximum: description: The normalMaximum attribute optionally defines the maximum magnitude of numeric outcome variables, it must be a positive value. If given, the outcome's value can be divided by normalMaximum and then truncated (if necessary) to obtain a normalized score in the range [-1.0,1.0]. normalMaximum has no affect on responseProcessing or the values that the outcome variable itself can take. Model Primitive Datatype = Double. type: number format: double normalMinimum: description: The normalMinimum attribute optionally defines the minimum value of numeric outcome variables, it may be negative. Model Primitive Datatype = Double. type: number format: double masteryValue: description: The masteryValue attribute optionally defines a value for numeric outcome variables above which the aspect being measured is considered to have been mastered by the candidate. Model Primitive Datatype = Double. type: number format: double value: description: | The value(s) of the outcome variable. The order of the values is significant only if the outcome was declared with ordered cardinality. type: array minItems: 0 items: $ref: "#/definitions/ValueDType" additionalProperties: false PCIContextDType: description: | This is the container for the contextual information that can be supplied for a PCI used within an Item. The contained information is only relevant when there is an 'interactionType' of 'portableCustomInteraction'. type: object properties: customTypeIdentifier: description: This is used alongside an 'interactionType' value of 'portableCustomInteraction' to disambiguate which class of PCI is in use as PCIs can vary widely in terms of how they might need to be psychometrically analyzed. This field could potentially also be used to identify which type of a traditional customInteraction is in use by the item. Model Primitive Datatype = NormalizedString. type: string interactionKind: description: This is used to provide insight into the nature of the PCI e.g. this is a PCI which allows a user to add notes to a musical stave to author some music that might be given a description of 'authoring'. This information could be used by a psychometrician, etc. as an indication of a similar type of standard interaction. Model Primitive Datatype = NormalizedString. type: string additionalProperties: false QTIMetadataDType: description: | This contains the new category of metadata for the recording of QTI specific information. type: object properties: itemTemplate: description: True if the item is actually an item template, in other words, the item changes its appearance based on some random or external factor. An assessmentItem that contains a templateProcessing section. Model Primitive Datatype = Boolean. type: boolean timeDependent: description: Whether or not the item is time dependent. A time dependent item takes the length of time taken for an attempt into consideration when scoring. Model Primitive Datatype = Boolean. type: boolean composite: description: True if the item comprises more than one interaction, for example, an assessmentItem that contains more than one interaction. Model Primitive Datatype = Boolean. type: boolean interactionType: description: | The interaction type(s) of the item. The vocabulary is comprised of the names, as defined in the information model, of the leaf classes derived from interaction. type: array minItems: 0 items: type: string enum: - associateInteraction - choiceInteraction - customInteraction - drawingInteraction - endAttemptInteraction - extendedTextInteraction - gapMatchInteraction - graphicAssociateInteraction - graphicGapMatchInteraction - graphicOrderInteraction - hotspotInteraction - hottextInteraction - inlineChoiceInteraction - matchInteraction - mediaInteraction - orderInteraction - portableCustomInteraction - positionObjectInteraction - selectPointInteraction - sliderInteraction - textEntryInteraction - uploadInteraction portableCustomInteractionContext: $ref: "#/definitions/PCIContextDType" feedbackType: description: | Describes the type of feedback, if any, available in the item. If feedback is available then it is described as being non-adaptive or adaptive depending on whether the item is itself adaptive. A non-adaptive item generates feedback based on the responses submitted as part of (the last) attempt only. An adaptive item generates feedback that takes into consideration the path taken through the item, in other words, feedback based on the accumulation of all attempts and not just the last. type: string enum: - adaptive - nonadaptive - none solutionAvailable: description: Set to true if a model solution is available for the item. For example, an assessmentItem that provides correct responses for all declared response variables. Model Primitive Datatype = Boolean. type: boolean scoringMode: description: | The scoringMode is used to denote that the way in which the scoring is achieved. If the Item includes the response processing then the mode is 'responseprocessing'. If human scoring is required the value is 'human' and if some form of machine processing is required then the value is 'externalmachine'. type: array minItems: 0 items: type: string enum: - human - externalmachine - responseprocessing toolName: description: The name of the tool used to author the evaluation object. Model Primitive Datatype = String. type: string toolVersion: description: The version of the tool used to author the evaluation object. Model Primitive Datatype = String. type: string toolVendor: description: The company which produced the tool used to author the evaluation object. Model Primitive Datatype = String. type: string additionalProperties: false ResponseVariableDType: description: | The Item result information related to a 'Response Variable'. type: object required: - identifier - cardinality - candidateResponse properties: identifier: description: The identifier of the Response Variable. Model Primitive Datatype = NCName. type: string cardinality: description: | The cardinality of the Response Variable, taken from the corresponding declaration or definition. type: string enum: - multiple - ordered - record - single baseType: description: | The base type of the Response Variable, taken from the corresponding declaration of definition. This value is omitted only for variables with record cardinality. type: string enum: - boolean - directedPair - duration - file - float - identifier - integer - pair - point - string - uri choiceSequence: description: | When a response variable is bound to an interaction that supports the shuffling of choices, the sequence of choices experienced by the candidate will vary between test instances. When shuffling is in effect, the sequence of choices should be reported as a sequence of choice identifiers using this attribute. Model Primitive Datatype = NCName. type: array minItems: 0 items: type: string correctResponse: $ref: "#/definitions/CorrectResponseDType" candidateResponse: $ref: "#/definitions/CandidateResponseDType" additionalProperties: false ResultsDType: description: | This is the container for the results that have been accrued by the examinee. These are passed to the CAT Engine to support the selection of the next set of Items. type: object required: - assessmentResult properties: assessmentResult: $ref: "#/definitions/AssessmentResultDType" sessionState: description: The session state information. This is the data that was supplied by the CAT Engine when the session was created or the next set of Items was requested. Model Primitive Datatype = NormalizedString. type: string additionalProperties: false SectionDType: description: | The container for the definition of the Section that is to be created in the CAT Engine. A Section is aligned to a QTI AssessmentSection [QTI, 20a]. type: object required: - sectionConfiguration properties: qtiMetadata: $ref: "#/definitions/QTIMetadataDType" qtiUsagedata: description: This is the Base64 encoded XML conforming to IMS QTI 3.0 Usage Date data model [QTI, 20c]. Model Primitive Datatype = String. type: string sectionConfiguration: description: This is the Base64 encoded data containing section configuration, aligned with adaptive engine (black box). This format will be proprietary to each adaptive CAT Engine. Model Primitive Datatype = String. type: string additionalProperties: false SessionDType: description: | This is the container for the session configuration data that must be supplied to the CAT Engine when the session is to be created. type: object properties: personalNeedsAndPreferences: description: This is the Base64 encoded XML data for the Personal Needs and Preferences (PNP) for the examinee. This data conforms to the XML as defined in the IMS Access for All Personal Needs and Preferences (AfAPNP) 3.0 XML Binding specification [AFAPNP, 20]. Model Primitive Datatype = NormalizedString. type: string demographics: description: The Base64 encoding of the JSON data for the Demographics information for the examinee. This data conforms to the JSON as defined in the IMS OneRoster 1.1 specification [OR, 17]. Model Primitive Datatype = NormalizedString. type: string priorData: description: | This is proprietary data that is supplied to the CAT Engine as a key/value pairs. type: array minItems: 0 items: $ref: "#/definitions/KeyValuePairDType" additionalProperties: false SessionIdentifierDType: description: | The system that creates the result (for example, the test delivery system) should assign a session identifier that it can use to identify the session. type: object required: - sourceID - identifier properties: sourceID: description: A unique identifier of the system which added this identifier to the result. Model Primitive Datatype = AnyURI. type: string format: uri identifier: description: The system that creates the report should add a session identifier. Subsequent systems that process the results might use their own identifier for the session and should add this too if the result is exported again for further transport. Model Primitive Datatype = NCName. type: string additionalProperties: false TemplateVariableDType: description: | The Item result information related to a 'Template Variable'. type: object required: - identifier - cardinality properties: identifier: description: The identifier of the Template Variable. Model Primitive Datatype = NCName. type: string cardinality: description: | The cardinality of the Template Variable, taken from the corresponding declaration or definition. type: string enum: - multiple - ordered - record - single baseType: description: | The base type of the Template Variable, taken from the corresponding declaration of definition. This value is omitted only for variables with record cardinality. type: string enum: - boolean - directedPair - duration - file - float - identifier - integer - pair - point - string - uri value: description: | The value(s) of the template variable. The order of the values is significant only if the template variable was declared with ordered cardinality. type: array minItems: 0 items: $ref: "#/definitions/ValueDType" additionalProperties: false TestResultDType: description: | The container for the Test result. When a test result is given the following item results must relate only to items that were selected for presentation as part of the corresponding test session. Furthermore, all items selected for presentation should be reported with a corresponding itemResult. type: object required: - identifier - datestamp properties: identifier: description: The identifier of the test for which this is a result. Model Primitive Datatype = NCName. type: string datestamp: description: The date stamp of when this result was recorded. Model Primitive Datatype = DateTime. type: string format: date-time responseVariables: description: | Indicates that a Response Variable is being reported. This is the value of one of the responses associated with an Item in the corresponding ASI instance [QTI, 20a]. type: array minItems: 0 items: $ref: "#/definitions/ResponseVariableDType" templateVariables: description: | Indicates that a Template Variable is being reported. This is the value of one of the template variables associated with an Item in the corresponding ASI instance [QTI, 20a]. type: array minItems: 0 items: $ref: "#/definitions/TemplateVariableDType" outcomeVariables: description: | Indicates that an Outcome Variable is being reported. This is the value of one of the outcomes associated with either an Item or Test and defined in the corresponding ASI instance [QTI, 20a]. type: array minItems: 0 items: $ref: "#/definitions/OutcomeVariableDType" additionalProperties: false ValueDType: description: | A class that can represent a single value of any baseType in variable declarations and result reports. The base-type is defined by the baseType attribute of the declaration except in the case of variables with record cardinality. type: object required: - value properties: fieldIdentifier: description: This attribute is only used for specifying the field identifier for a value that forms part of a record. Model Primitive Datatype = NCName. type: string baseType: description: | This attribute is only used for specifying the base-type of a value that forms part of a record. type: string enum: - boolean - directedPair - duration - file - float - identifier - integer - pair - point - string - uri value: description: The value being supplied. Model Primitive Datatype = NormalizedString. type: string additionalProperties: false imsx_CodeMinorDType: description: | This is the container for the set of code minor status codes reported in the responses from the Service Provider. type: object required: - imsx_codeMinorField properties: imsx_codeMinorField: description: | Each reported code minor status code. type: array minItems: 1 items: $ref: "#/definitions/imsx_CodeMinorFieldDType" additionalProperties: false imsx_CodeMinorFieldDType: description: | This is the container for a single code minor status code. type: object required: - imsx_codeMinorFieldName - imsx_codeMinorFieldValue properties: imsx_codeMinorFieldName: description: This should contain the identity of the system that has produced the code minor status code report. Model Primitive Datatype = NormalizedString. type: string imsx_codeMinorFieldValue: description: | The code minor status code (this is a value from the corresponding enumerated vocabulary). type: string enum: - fullsuccess - forbidden - invaliddata - unauthorisedrequest - internal_server_error - server_busy - unknownobject additionalProperties: false imsx_StatusInfoDType: description: | This is the container for the status code and associated information returned within the HTTP messages received from the Service Provider. type: object required: - imsx_codeMajor - imsx_severity properties: imsx_codeMajor: description: | The code major value (from the corresponding enumerated vocabulary). type: string enum: - success - processing - failure - unsupported imsx_severity: description: | The severity value (from the corresponding enumerated vocabulary). type: string enum: - status - warning - error imsx_description: description: A human readable description supplied by the entity creating the status code information. Model Primitive Datatype = String. type: string imsx_codeMinor: $ref: "#/definitions/imsx_CodeMinorDType" additionalProperties: false
The OpenAPI 3 (YAML) listing (based upon [OAS, 17]) is shown below (the OpenAPI YAML is available at: https://purl.imsglobal.org/cat/v1p0/schema/openapi/imscatv1p0_openapi3_v1p0.yaml).
# ##################################################################################### # YAML File Information # ##################################################################################### # # Author: Colin Smythe (IMS Global, UK), Mark McKell (IMS Global, USA) # Date: 9th November, 2020 # Version: 1.0 # Status: IMS Candidate Final # Description: The Computer Adaptive Testing (CAT) Service enables a standard way of implementing adaptive testing using Question and Test Interoperability (QTI). This service has been described using the IMS Model Driven Specification development approach, this being the Platform Specific Model (PSM) of the service. # # History: This is the first release of the Computer Adaptive Testing (CAT) Service definition. # # License: IPR and Distribution Notices # # This machine readable file is derived from the IMS Computer Adaptive Testing (CAT) Service Version 1.0 # found at http://www.imsglobal.org/cat and the original IMS Global schema binding or code base # http://www.imsglobal.org/cat. # # Recipients of this document are requested to submit, with their comments, notification of any relevant # patent claims or other intellectual property rights of which they may be aware that might be infringed by # any implementation of the specification set forth in this document, and to provide supporting documentation. # # IMS takes no position regarding the validity or scope of any intellectual property or other rights that might # be claimed to pertain to the implementation or use of the technology described in this document or the extent # to which any license under such rights might or might not be available; neither does it represent that it has # made any effort to identify any such rights. Information on IMS procedures with respect to rights in IMS # specifications can be found at the IMS Global Intellectual Property Rights web page: http://www.imsglobal.org/ipr/imsipr_policyFinal.pdf. # # Copyright (c) IMS Global Learning Consortium 1999-2021. All Rights Reserved. # # Use of this specification to develop products or services is governed by the license with IMS found on the IMS website: http://www.imsglobal.org/license.html. # # Permission is granted to all parties to use excerpts from this document as needed in producing requests for proposals. # # The limited permissions granted above are perpetual and will not be revoked by IMS or its successors or assigns. # # THIS SPECIFICATION IS BEING OFFERED WITHOUT ANY WARRANTY WHATSOEVER, AND IN PARTICULAR, ANY WARRANTY OF NONINFRINGEMENT IS # EXPRESSLY DISCLAIMED. ANY USE OF THIS SPECIFICATION SHALL BE MADE ENTIRELY AT THE IMPLEMENTERS OWN RISK, AND NEITHER THE CONSORTIUM # NOR ANY OF ITS MEMBERS OR SUBMITTERS, SHALL HAVE ANY LIABILITY WHATSOEVER TO ANY IMPLEMENTER OR THIRD PARTY FOR ANY DAMAGES OF # ANY NATURE WHATSOEVER, DIRECTLY OR INDIRECTLY, ARISING FROM THE USE OF THIS SPECIFICATION. # # Source UML File Information # =========================== # The source file information must be supplied as an XMI file (without diagram layout information). # The supported UML authoring tools are: # (a) Poseidon - v6 (and later) # (b) Papyrus - v1.1.3 (and later) # # Source XSLT File Information # ============================ # XSL Generator: Specificationv1p0_GenerationToolv1.xsl # XSLT Processor: Saxon # Release: 1.0 # Date: 31st January, 2021 # Autogen Engineer: Colin Smythe (IMS Global, UK) # Autogen Date: 2021-01-30 # # IMS Global Auto-generation Binding Tool-kit (I-BAT) # =================================================== # This file was auto-generated using the IMS Global Binding Auto-generation Tool-kit (I-BAT). While every # attempt has been made to ensure that this tool auto-generates the files correctly, users should be aware # that this is an experimental tool. Permission is given to make use of this tool. IMS Global makes no # claim on the materials created by third party users of this tool. Details on how to use this tool # are contained in the IMS Global "I-BAT" documentation available at the IMS Global web-site: # http://www.imsglobal.org. # # Tool Copyright: 2012-2021 (c) IMS Global Learning Consortium Inc. All Rights Reserved. # # ##################################################################################### openapi: '3.0.0' ##################################################################################### # API Information # ##################################################################################### info: version: '1.0' title: Computer Adaptive Testing (CAT) Service OpenAPI (YAML) Definition description: The Computer Adaptive Testing (CAT) Service enables a standard way of implementing adaptive testing using Question and Test Interoperability (QTI). This service has been described using the IMS Model Driven Specification development approach, this being the Platform Specific Model (PSM) of the service. termsOfService: https://www.imsglobal.org/license.html contact: name: Lisa Mattson (COO), IMS Global url: http://www.imsglobal.org email: lmattson@imsglobal.org license: name: IMS Global url: https://www.imsglobal.org/license.html ##################################################################################### # Servers # ##################################################################################### servers: - url: www.imsglobal.org/ims/cat/v1p0 description: The above Server URL should be changed to the actual server location. ##################################################################################### # Tags # ##################################################################################### tags: - name: SectionsManager description: | The set of service operations that manage access to the adaptive Sections being handled by the CAT Engine. - name: SessionsManager description: | The set of service operations that manage access to the adaptive Sessions being handled by the CAT Engine. ##################################################################################### # Paths # ##################################################################################### paths: /sections: post: operationId: createSection summary: The REST createbp request message for the createSection() API call. tags: - SectionsManager description: | This is a request to the CAT Engine to create a new adaptive Section. The CAT Engine is responsible for assigning the unique identifier to be used for this Section in other exchanges. This request is NOT idempotent. security: - OAuth2CCG: - https://purl.imsglobal.org/cat/v1p0/scope/api - https://purl.imsglobal.org/cat/v1p0/scope/configure requestBody: description: | The data for the configuration of the new adaptive Section. content: application/json: schema: $ref: "#/components/schemas/SectionDType" required: true responses: "201" : description: | The response code for when the new Section has been created in the CAT Engine and the associated identifier has been returned. content: application/json: schema: $ref: "#/components/schemas/CreateSectionResponseBodyDType" "400" : description: | The request has been declared as 'bad'. This will be due to the provision of bad data in the request payloads, including a poorly formed JSON payload. This is accompanied by the 'codeMajor/severity' values of 'failure/error'. content: application/json: schema: $ref: "#/components/schemas/imsx_StatusInfoDType" "401" : description: | The request was not correctly authorized i.e. 'unauthorisedrequest'. This would be accompanied by the 'codeMajor/severity' values of 'failure/error'. content: application/json: schema: $ref: "#/components/schemas/imsx_StatusInfoDType" "500" : description: | This code should be used only if there is catastrophic error and there is not a more appropriate code i.e. 'internal_server_error'. This would be accompanied by the 'codeMajor/severity' values of 'failure/error'. content: application/json: schema: $ref: "#/components/schemas/imsx_StatusInfoDType" "default" : description: | This is the response data payload to be supplied when the HTTP code is NOT explicitly defined. This would be accompanied by the 'codeMajor/severity' values of 'failure/error' and the appropriate 'codeMinor' value. The associated HTTP code will also be supplied. content: application/json: schema: $ref: "#/components/schemas/imsx_StatusInfoDType" /sections/{sectionIdentifier}: get: operationId: getSection summary: The REST read request message for the getSection() API call. tags: - SectionsManager description: | This request returns the parameters which were used by the CAT engine to create the adaptive section, and the list of the items in the adaptive section's item pool, as configured by the CAT engine. It is recommended that assessment platforms and/or delivery engines use this request to verify that the item pool, as configured by the CAT engine, corresponds exactly to the list of items in the QTI source for the adaptive section. It is also recommended that test administrators verify that each item in the item pool is accessible and deliverable before commencing delivery of candidate sessions. The Get Section request may be used for this, and may be made at any time after a successful Create Section request, as many times as required. parameters: - name: sectionIdentifier in: path description: | The LUID that identifies the Section for which the data on the CAT Engine is to be obtained. required: true schema: type: string style: simple security: - OAuth2CCG: - https://purl.imsglobal.org/cat/v1p0/scope/api - https://purl.imsglobal.org/cat/v1p0/scope/configure responses: "200" : description: | The response code for when the list of Items in the section's item pool has been returned. The response message contains the list of Items, the section configuration used to create the section, and any qtiUsagedata and qtiMetadata used to create the section. content: application/json: schema: $ref: "#/components/schemas/GetSectionResponseBodyDType" "400" : description: | The request has been declared as 'bad'. This will be due to the provision of bad data in the request payloads, including a poorly formed JSON payload. This is accompanied by the 'codeMajor/severity' values of 'failure/error'. content: application/json: schema: $ref: "#/components/schemas/imsx_StatusInfoDType" "401" : description: | The request was not correctly authorized i.e. 'unauthorisedrequest'. This would be accompanied by the 'codeMajor/severity' values of 'failure/error'. content: application/json: schema: $ref: "#/components/schemas/imsx_StatusInfoDType" "404" : description: | The supplied identifier is unknown in the CAT Engine and so the object could not be processed. This would be accompanied by the 'codeMajor/severity' values of 'failure/error'. The statement 'Unknown Object' of should also be presented. content: application/json: schema: $ref: "#/components/schemas/imsx_StatusInfoDType" "500" : description: | This code should be used only if there is catastrophic error and there is not a more appropriate code i.e. 'internal_server_error'. This would be accompanied by the 'codeMajor/severity' values of 'failure/error'. content: application/json: schema: $ref: "#/components/schemas/imsx_StatusInfoDType" "default" : description: | This is the response data payload to be supplied when the HTTP code is NOT explicitly defined. This would be accompanied by the 'codeMajor/severity' values of 'failure/error' and the appropriate 'codeMinor' value. The associated HTTP code will also be supplied. content: application/json: schema: $ref: "#/components/schemas/imsx_StatusInfoDType" delete: operationId: endSection summary: The REST delete request message for the endSection() API call. tags: - SectionsManager description: | This request ends all candidate sessions for the section which have not already ended, and ends the section. The sectionIdentifier, sessionIdentifiers, and sessionStates returned from previous requests related to the section become invalid. The delivery engine should not make any further requests related to the section or any session for the section. For a REST-based binding this request uses the DELETE HTTP method because of REST conventions, but the CAT engine is not required to physically delete any session or section data. This request should not be repeated once it has succeeded. parameters: - name: sectionIdentifier in: path description: | The LUID that identifies the Section to be deleted on the CAT Engine. required: true schema: type: string style: simple security: - OAuth2CCG: - https://purl.imsglobal.org/cat/v1p0/scope/api - https://purl.imsglobal.org/cat/v1p0/scope/configure responses: "204" : description: | The response code for when the identified Section has been deleted in the CAT Engine. There is no response payload. "400" : description: | The request has been declared as 'bad'. This will be due to the provision of bad data in the request payloads, including a poorly formed JSON payload. This is accompanied by the 'codeMajor/severity' values of 'failure/error'. content: application/json: schema: $ref: "#/components/schemas/imsx_StatusInfoDType" "401" : description: | The request was not correctly authorized i.e. 'unauthorisedrequest'. This would be accompanied by the 'codeMajor/severity' values of 'failure/error'. content: application/json: schema: $ref: "#/components/schemas/imsx_StatusInfoDType" "404" : description: | The supplied identifier is unknown in the CAT Engine and so the object could not be processed. This would be accompanied by the 'codeMajor/severity' values of 'failure/error'. The statement 'Unknown Object' of should also be presented. content: application/json: schema: $ref: "#/components/schemas/imsx_StatusInfoDType" "500" : description: | This code should be used only if there is catastrophic error and there is not a more appropriate code i.e. 'internal_server_error'. This would be accompanied by the 'codeMajor/severity' values of 'failure/error'. content: application/json: schema: $ref: "#/components/schemas/imsx_StatusInfoDType" "default" : description: | This is the response data payload to be supplied when the HTTP code is NOT explicitly defined. This would be accompanied by the 'codeMajor/severity' values of 'failure/error' and the appropriate 'codeMinor' value. The associated HTTP code will also be supplied. content: application/json: schema: $ref: "#/components/schemas/imsx_StatusInfoDType" /sections/{sectionIdentifier}/sessions: post: operationId: createSession summary: The REST createbp request message for the createSession() API call. tags: - SessionsManager description: | This request initializes a candidate session for the adaptive section. The request optionally provides the CAT engine with information related to the candidate. The CAT engine returns the initial stage (list of items) to be presented to the candidate. This request may be made multiple times after a successful Create Section request, once per candidate, when each candidate enters the adaptive section on the test. This request is NOT idempotent. parameters: - name: sectionIdentifier in: path description: | The LUID that identifies the Section in the CAT Engine to which this new Session is to be assigned. required: true schema: type: string style: simple security: - OAuth2CCG: - https://purl.imsglobal.org/cat/v1p0/scope/api - https://purl.imsglobal.org/cat/v1p0/scope/deliver requestBody: description: | The Session configuration data including the information about the examinee. content: application/json: schema: $ref: "#/components/schemas/SessionDType" required: true responses: "201" : description: | The response code for when the new Session has been created in the CAT Engine and the associated identifier has been returned. The response message consists of the identifier allocated to the session, the initial set of Items to be presented and the session state to be used for later requests. content: application/json: schema: $ref: "#/components/schemas/CreateSessionResponseBodyDType" "400" : description: | The request has been declared as 'bad'. This will be due to the provision of bad data in the request payloads, including a poorly formed JSON payload. This is accompanied by the 'codeMajor/severity' values of 'failure/error'. content: application/json: schema: $ref: "#/components/schemas/imsx_StatusInfoDType" "401" : description: | The request was not correctly authorized i.e. 'unauthorisedrequest'. This would be accompanied by the 'codeMajor/severity' values of 'failure/error'. content: application/json: schema: $ref: "#/components/schemas/imsx_StatusInfoDType" "404" : description: | The supplied identifier is unknown in the CAT Engine and so the object could not be processed. This would be accompanied by the 'codeMajor/severity' values of 'failure/error'. The statement 'Unknown Object' of should also be presented. content: application/json: schema: $ref: "#/components/schemas/imsx_StatusInfoDType" "500" : description: | This code should be used only if there is catastrophic error and there is not a more appropriate code i.e. 'internal_server_error'. This would be accompanied by the 'codeMajor/severity' values of 'failure/error'. content: application/json: schema: $ref: "#/components/schemas/imsx_StatusInfoDType" "default" : description: | This is the response data payload to be supplied when the HTTP code is NOT explicitly defined. This would be accompanied by the 'codeMajor/severity' values of 'failure/error' and the appropriate 'codeMinor' value. The associated HTTP code will also be supplied. content: application/json: schema: $ref: "#/components/schemas/imsx_StatusInfoDType" /sections/{sectionIdentifier}/sessions/{sessionIdentifier}: delete: operationId: endSession summary: The REST delete request message for the endSession() API call. tags: - SessionsManager description: | This request ends the candidate session. The sessionIdentifier, and the sessionState returned from any previous request in the session, become invalid. The delivery engine should not make any further requests related to the session. For a REST-based binding this request uses the DELETE HTTP method because of REST conventions; but it is not required that CAT engines physically delete data or resources associated with the session. If the identified session cannot be found then the 'unknownobject' status code must be reported. parameters: - name: sectionIdentifier in: path description: | The LUID that identifies the Section to be deleted on the CAT Engine. required: true schema: type: string style: simple - name: sessionIdentifier in: path description: | The LUID that identifies the Session, in the context of the identified Section, to be deleted on the CAT Engine. required: true schema: type: string style: simple security: - OAuth2CCG: - https://purl.imsglobal.org/cat/v1p0/scope/api - https://purl.imsglobal.org/cat/v1p0/scope/deliver responses: "204" : description: | The response code for when the identified Session has been deleted in the CAT Engine. There is no response payload. "400" : description: | The request has been declared as 'bad'. This will be due to the provision of bad data in the request payloads, including a poorly formed JSON payload. This is accompanied by the 'codeMajor/severity' values of 'failure/error'. content: application/json: schema: $ref: "#/components/schemas/imsx_StatusInfoDType" "401" : description: | The request was not correctly authorized i.e. 'unauthorisedrequest'. This would be accompanied by the 'codeMajor/severity' values of 'failure/error'. content: application/json: schema: $ref: "#/components/schemas/imsx_StatusInfoDType" "404" : description: | The supplied identifier is unknown in the CAT Engine and so the object could not be processed. This would be accompanied by the 'codeMajor/severity' values of 'failure/error'. The statement 'Unknown Object' of should also be presented. content: application/json: schema: $ref: "#/components/schemas/imsx_StatusInfoDType" "500" : description: | This code should be used only if there is catastrophic error and there is not a more appropriate code i.e. 'internal_server_error'. This would be accompanied by the 'codeMajor/severity' values of 'failure/error'. content: application/json: schema: $ref: "#/components/schemas/imsx_StatusInfoDType" "default" : description: | This is the response data payload to be supplied when the HTTP code is NOT explicitly defined. This would be accompanied by the 'codeMajor/severity' values of 'failure/error' and the appropriate 'codeMinor' value. The associated HTTP code will also be supplied. content: application/json: schema: $ref: "#/components/schemas/imsx_StatusInfoDType" /sections/{sectionIdentifier}/sessions/{sessionIdentifier}/results: post: operationId: submitResults summary: The REST update request message for the submitResults() API call. tags: - SessionsManager description: | This request sends the results from the current item stage in a candidate session to the CAT engine. The CAT engine returns its computed outcome variable values for the current stage and the test as a whole. It also returns the next item stage to be presented to the candidate. Instead of the next item stage, it may also return an indication that the adaptive section has ended, by returning an empty list for nextItems. If the identified Section/Session cannot be found then the 'unknownobject' status code must be reported. parameters: - name: sectionIdentifier in: path description: | The LUID that identifies the Section in the CAT Engine to be used. required: true schema: type: string style: simple - name: sessionIdentifier in: path description: | The LUID that identifies the Session, in the context of the Section, in the CAT Engine to be used. required: true schema: type: string style: simple security: - OAuth2CCG: - https://purl.imsglobal.org/cat/v1p0/scope/api - https://purl.imsglobal.org/cat/v1p0/scope/deliver requestBody: description: | The set of results that have been obtained, so far, by the examinee for the identified session. content: application/json: schema: $ref: "#/components/schemas/ResultsDType" required: true responses: "201" : description: | The response code for when the next set of Items to be presented to the examinee has been returned. The response message contains the next set of Items, the session state to be used in later requests and, optionally, the assessment results. content: application/json: schema: $ref: "#/components/schemas/SubmitResultsResponseBodyDType" "400" : description: | The request has been declared as 'bad'. This will be due to the provision of bad data in the request payloads, including a poorly formed JSON payload. This is accompanied by the 'codeMajor/severity' values of 'failure/error'. content: application/json: schema: $ref: "#/components/schemas/imsx_StatusInfoDType" "401" : description: | The request was not correctly authorized i.e. 'unauthorisedrequest'. This would be accompanied by the 'codeMajor/severity' values of 'failure/error'. content: application/json: schema: $ref: "#/components/schemas/imsx_StatusInfoDType" "404" : description: | The supplied identifier is unknown in the CAT Engine and so the object could not be processed. This would be accompanied by the 'codeMajor/severity' values of 'failure/error'. The statement 'Unknown Object' of should also be presented. content: application/json: schema: $ref: "#/components/schemas/imsx_StatusInfoDType" "500" : description: | This code should be used only if there is catastrophic error and there is not a more appropriate code i.e. 'internal_server_error'. This would be accompanied by the 'codeMajor/severity' values of 'failure/error'. content: application/json: schema: $ref: "#/components/schemas/imsx_StatusInfoDType" "default" : description: | This is the response data payload to be supplied when the HTTP code is NOT explicitly defined. This would be accompanied by the 'codeMajor/severity' values of 'failure/error' and the appropriate 'codeMinor' value. The associated HTTP code will also be supplied. content: application/json: schema: $ref: "#/components/schemas/imsx_StatusInfoDType" ##################################################################################### # Components # ##################################################################################### components: securitySchemes: OAuth2CCG: type: oauth2 description: | A CAT engine implementation may adopt any scope structure and naming scheme which meets its requirements, including not using scopes at all. The scopes shown here are recommended, not required. flows: clientCredentials: tokenUrl: https://www.service-dependent.com/oauth2Token scopes: https://purl.imsglobal.org/cat/v1p0/scope/api: This enables access to all of the endpoints. https://purl.imsglobal.org/cat/v1p0/scope/configure: This enables access to the endoints that permit the management of Sections. https://purl.imsglobal.org/cat/v1p0/scope/deliver: This enables access to the endoints that permit the management of Sessions. schemas: CreateSessionResponseBodyDType: description: | The response code for when the new Session has been created in the CAT Engine and the associated identifier has been returned. The response message consists of the identifier allocated to the session, the initial set of Items to be presented and the session state to be used for later requests. type: object properties: sessionIdentifier: description: Model Primitive Datatype = NCName. type: string nextItems: $ref: "#/components/schemas/NextItemSetDType" sessionState: description: Model Primitive Datatype = NormalizedString. type: string additionalProperties: false GetSectionResponseBodyDType: description: | The response code for when the list of Items in the section's item pool has been returned. The response message contains the list of Items, the section configuration used to create the section, and any qtiUsagedata and qtiMetadata used to create the section. type: object properties: items: $ref: "#/components/schemas/ItemSetDType" section: $ref: "#/components/schemas/SectionDType" additionalProperties: false SubmitResultsResponseBodyDType: description: | The response code for when the next set of Items to be presented to the examinee has been returned. The response message contains the next set of Items, the session state to be used in later requests and, optionally, the assessment results. type: object properties: nextItems: $ref: "#/components/schemas/NextItemSetDType" assessmentResult: $ref: "#/components/schemas/AssessmentResultDType" sessionState: description: Model Primitive Datatype = NormalizedString. type: string additionalProperties: false CreateSectionResponseBodyDType: description: | The response code for when the new Section has been created in the CAT Engine and the associated identifier has been returned. type: object properties: sectionIdentifier: description: Model Primitive Datatype = NCName. type: string additionalProperties: false AssessmentResultDType: description: | An Assessment Result is used to report the results of a candidate's interaction with a test and/or one or more items attempted. Information about the test is optional, in some systems it may be possible to interact with items that are not organized into a test at all. For example, items that are organized with learning resources and presented individually in a formative context. type: object properties: context: $ref: "#/components/schemas/ContextDType" testResult: $ref: "#/components/schemas/TestResultDType" itemResult: description: | When a test result is given the following item results must relate only to items that were selected for presentation as part of the corresponding test session. Furthermore, all items selected for presentation should be reported with a corresponding itemResult. type: array minItems: 0 items: $ref: "#/components/schemas/ItemResultDType" additionalProperties: false CandidateResponseDType: description: | The response given by the candidate. type: object properties: value: description: | The value(s) of the response variable. A NULL value, resulting from no response, is indicated by the absence of any value. The order of the values is significant only if the response was declared with ordered cardinality. type: array minItems: 0 items: $ref: "#/components/schemas/ValueDType" additionalProperties: false ContextDType: description: | This is the context for the 'assessmentResult'. It provides the corresponding set of identifiers. type: object properties: sourcedId: description: A unique identifier for the test candidate. Model Primitive Datatype = NCName. type: string sessionIdentifiers: description: | The system that creates the result (for example, the test delivery system) should assign a session identifier that it can use to identify the session. Subsequent systems that process the result might assign their own identifier to the session which should be added to the context if the result is modified and exported for transport again. type: array minItems: 0 items: $ref: "#/components/schemas/SessionIdentifierDType" additionalProperties: false CorrectResponseDType: description: | The correct response may be output as part of the report if desired. Systems are not limited to reporting correct responses declared in responseDeclarations. For example, a correct response may be set by a templateRule or may simply have been suppressed from the declaration passed to the delivery engine e.g. for security. type: object properties: interpretation: description: A human readable interpretation of the correct value. Model Primitive Datatype = String. type: string value: description: | The order of the values is signficant only when the response is of ordered cardinality. type: array minItems: 0 items: $ref: "#/components/schemas/ValueDType" additionalProperties: false ItemResultDType: description: | The result of an item session is reported with an itemResult. A report may contain multiple results for the same instance of an item representing multiple attempts, progression through an adaptive item or even more detailed tracking. In these cases, each item result must have a different datestamp. type: object required: - identifier - datestamp - sessionStatus properties: identifier: description: The identifier of the item for which this is a result. For item results that are reported as part of a test result this is the identifier used to refer to the item in the test (see assessmentItemRef). For item results that are reported on their own, this can be any suitable identifier for the item. Where possible, the value should match the identifier attribute on the associated assessmentItem. Model Primitive Datatype = NCName. type: string sequenceIndex: description: For item results that are reported as part of a test, this attribute must be used to indicate the position of the item within the specific instance of the test. The first item of the first part of the test is defined to have sequence index 1. Model Primitive Datatype = NonNegativeInteger. type: integer format: int32 minimum: 0 datestamp: description: The date stamp of when this result was recorded. Model Primitive Datatype = DateTime. type: string format: date-time sessionStatus: description: | The session status is used to interpret the values of the item variables. See the sessionStatus vocabulary. type: string enum: - final - initial - pendingResponseProcessing - pendingSubmission responseVariables: description: | Indicates that a Response Variable is being reported. This is the value of one of the responses associated with an Item in the corresponding ASI instance. type: array minItems: 0 items: $ref: "#/components/schemas/ResponseVariableDType" templateVariables: description: | Indicates that a Template Variable is being reported. This is the value of one of the template variables associated with an Item in the corresponding ASI instance. type: array minItems: 0 items: $ref: "#/components/schemas/TemplateVariableDType" outcomeVariables: description: | Indicates that an Outcome Variable is being reported. This is the value of one of the outcomes associated with either an Item or Test and defined in the corresponding ASI instance. type: array minItems: 0 items: $ref: "#/components/schemas/OutcomeVariableDType" candidateComment: description: An optional comment supplied by the candidate (see the allowComment in the ASI documentation [QTI, 20a]). Model Primitive Datatype = String. type: string additionalProperties: false ItemSetDType: description: | A set of Item identfiers. type: object required: - itemIdentifiers properties: itemIdentifiers: description: | The Identifiers for the set of Items. These should be the GUIDs that have been assigned to AssessmentItems when defined using IMS QTI. Model Primitive Datatype = NCName. type: array minItems: 1 items: type: string additionalProperties: false KeyValuePairDType: description: | The container for the values assigned to the Key/Value pair. type: object required: - key - value properties: glossaryURI: description: This is a URI to the definition of the data being supplied in this accompanying key/value pair. This definition should provide a human readable description of the data-type and value space for the value being identified by its key. Model Primitive Datatype = AnyURI. type: string format: uri key: description: The key for the value to be supplied. Model Primitive Datatype = String. type: string value: description: The value being supplied. Model Primitive Datatype = String. type: string additionalProperties: false NextItemSetDType: description: | The container for the information about the set of next Items that should be presented to the examinee. type: object required: - itemIdentifiers properties: itemIdentifiers: description: | The Identifiers for the set of Items that should be presented next. These should be the GUIDs that have been assigned to AssessmentItems when defined using IMS QTI. Model Primitive Datatype = NCName. type: array minItems: 1 items: type: string stageLength: description: The (minimum) number of items the CAT Engine can present before requesting next items Model Primitive Datatype = NonNegativeInteger. type: integer format: int32 minimum: 0 additionalProperties: false OutcomeVariableDType: description: | The Item result information related to an 'Outcome Variable'. type: object required: - identifier - cardinality properties: identifier: description: The identifier of the Outcome Variable. Model Primitive Datatype = NCName. type: string cardinality: description: | The cardinality of the Outcome Variable, taken from the corresponding declaration or definition. type: string enum: - multiple - ordered - record - single baseType: description: | The base type of the Outcome Variable, taken from the corresponding declaration of definition. This value is omitted only for variables with record cardinality. type: string enum: - boolean - directedPair - duration - file - float - identifier - integer - pair - point - string - uri view: description: | The views (if any) declared for the outcome must be copied to the report to enable systems that render the report to hide information not relevant in a specific situation. If no values are given, the outcome's value should be considered relevant in all views. type: array minItems: 0 items: type: string enum: - author - candidate - proctor - scorer - testConstructor - tutor interpretation: description: A human readable interpretation of the default value. Model Primitive Datatype = String. type: string longInterpretation: description: An optional link to an extended interpretation of the outcome variable's value. Model Primitive Datatype = AnyURI. type: string format: uri normalMaximum: description: The normalMaximum attribute optionally defines the maximum magnitude of numeric outcome variables, it must be a positive value. If given, the outcome's value can be divided by normalMaximum and then truncated (if necessary) to obtain a normalized score in the range [-1.0,1.0]. normalMaximum has no affect on responseProcessing or the values that the outcome variable itself can take. Model Primitive Datatype = Double. type: number format: double normalMinimum: description: The normalMinimum attribute optionally defines the minimum value of numeric outcome variables, it may be negative. Model Primitive Datatype = Double. type: number format: double masteryValue: description: The masteryValue attribute optionally defines a value for numeric outcome variables above which the aspect being measured is considered to have been mastered by the candidate. Model Primitive Datatype = Double. type: number format: double value: description: | The value(s) of the outcome variable. The order of the values is significant only if the outcome was declared with ordered cardinality. type: array minItems: 0 items: $ref: "#/components/schemas/ValueDType" additionalProperties: false PCIContextDType: description: | This is the container for the contextual information that can be supplied for a PCI used within an Item. The contained information is only relevant when there is an 'interactionType' of 'portableCustomInteraction'. type: object properties: customTypeIdentifier: description: This is used alongside an 'interactionType' value of 'portableCustomInteraction' to disambiguate which class of PCI is in use as PCIs can vary widely in terms of how they might need to be psychometrically analyzed. This field could potentially also be used to identify which type of a traditional customInteraction is in use by the item. Model Primitive Datatype = NormalizedString. type: string interactionKind: description: This is used to provide insight into the nature of the PCI e.g. this is a PCI which allows a user to add notes to a musical stave to author some music that might be given a description of 'authoring'. This information could be used by a psychometrician, etc. as an indication of a similar type of standard interaction. Model Primitive Datatype = NormalizedString. type: string additionalProperties: false QTIMetadataDType: description: | This contains the new category of metadata for the recording of QTI specific information. type: object properties: itemTemplate: description: True if the item is actually an item template, in other words, the item changes its appearance based on some random or external factor. An assessmentItem that contains a templateProcessing section. Model Primitive Datatype = Boolean. type: boolean timeDependent: description: Whether or not the item is time dependent. A time dependent item takes the length of time taken for an attempt into consideration when scoring. Model Primitive Datatype = Boolean. type: boolean composite: description: True if the item comprises more than one interaction, for example, an assessmentItem that contains more than one interaction. Model Primitive Datatype = Boolean. type: boolean interactionType: description: | The interaction type(s) of the item. The vocabulary is comprised of the names, as defined in the information model, of the leaf classes derived from interaction. type: array minItems: 0 items: type: string enum: - associateInteraction - choiceInteraction - customInteraction - drawingInteraction - endAttemptInteraction - extendedTextInteraction - gapMatchInteraction - graphicAssociateInteraction - graphicGapMatchInteraction - graphicOrderInteraction - hotspotInteraction - hottextInteraction - inlineChoiceInteraction - matchInteraction - mediaInteraction - orderInteraction - portableCustomInteraction - positionObjectInteraction - selectPointInteraction - sliderInteraction - textEntryInteraction - uploadInteraction portableCustomInteractionContext: $ref: "#/components/schemas/PCIContextDType" feedbackType: description: | Describes the type of feedback, if any, available in the item. If feedback is available then it is described as being non-adaptive or adaptive depending on whether the item is itself adaptive. A non-adaptive item generates feedback based on the responses submitted as part of (the last) attempt only. An adaptive item generates feedback that takes into consideration the path taken through the item, in other words, feedback based on the accumulation of all attempts and not just the last. type: string enum: - adaptive - nonadaptive - none solutionAvailable: description: Set to true if a model solution is available for the item. For example, an assessmentItem that provides correct responses for all declared response variables. Model Primitive Datatype = Boolean. type: boolean scoringMode: description: | The scoringMode is used to denote that the way in which the scoring is achieved. If the Item includes the response processing then the mode is 'responseprocessing'. If human scoring is required the value is 'human' and if some form of machine processing is required then the value is 'externalmachine'. type: array minItems: 0 items: type: string enum: - human - externalmachine - responseprocessing toolName: description: The name of the tool used to author the evaluation object. Model Primitive Datatype = String. type: string toolVersion: description: The version of the tool used to author the evaluation object. Model Primitive Datatype = String. type: string toolVendor: description: The company which produced the tool used to author the evaluation object. Model Primitive Datatype = String. type: string additionalProperties: false ResponseVariableDType: description: | The Item result information related to a 'Response Variable'. type: object required: - identifier - cardinality - candidateResponse properties: identifier: description: The identifier of the Response Variable. Model Primitive Datatype = NCName. type: string cardinality: description: | The cardinality of the Response Variable, taken from the corresponding declaration or definition. type: string enum: - multiple - ordered - record - single baseType: description: | The base type of the Response Variable, taken from the corresponding declaration of definition. This value is omitted only for variables with record cardinality. type: string enum: - boolean - directedPair - duration - file - float - identifier - integer - pair - point - string - uri choiceSequence: description: | When a response variable is bound to an interaction that supports the shuffling of choices, the sequence of choices experienced by the candidate will vary between test instances. When shuffling is in effect, the sequence of choices should be reported as a sequence of choice identifiers using this attribute. Model Primitive Datatype = NCName. type: array minItems: 0 items: type: string correctResponse: $ref: "#/components/schemas/CorrectResponseDType" candidateResponse: $ref: "#/components/schemas/CandidateResponseDType" additionalProperties: false ResultsDType: description: | This is the container for the results that have been accrued by the examinee. These are passed to the CAT Engine to support the selection of the next set of Items. type: object required: - assessmentResult properties: assessmentResult: $ref: "#/components/schemas/AssessmentResultDType" sessionState: description: The session state information. This is the data that was supplied by the CAT Engine when the session was created or the next set of Items was requested. Model Primitive Datatype = NormalizedString. type: string additionalProperties: false SectionDType: description: | The container for the definition of the Section that is to be created in the CAT Engine. A Section is aligned to a QTI AssessmentSection [QTI, 20a]. type: object required: - sectionConfiguration properties: qtiMetadata: $ref: "#/components/schemas/QTIMetadataDType" qtiUsagedata: description: This is the Base64 encoded XML conforming to IMS QTI 3.0 Usage Date data model [QTI, 20c]. Model Primitive Datatype = String. type: string sectionConfiguration: description: This is the Base64 encoded data containing section configuration, aligned with adaptive engine (black box). This format will be proprietary to each adaptive CAT Engine. Model Primitive Datatype = String. type: string additionalProperties: false SessionDType: description: | This is the container for the session configuration data that must be supplied to the CAT Engine when the session is to be created. type: object properties: personalNeedsAndPreferences: description: This is the Base64 encoded XML data for the Personal Needs and Preferences (PNP) for the examinee. This data conforms to the XML as defined in the IMS Access for All Personal Needs and Preferences (AfAPNP) 3.0 XML Binding specification [AFAPNP, 20]. Model Primitive Datatype = NormalizedString. type: string demographics: description: The Base64 encoding of the JSON data for the Demographics information for the examinee. This data conforms to the JSON as defined in the IMS OneRoster 1.1 specification [OR, 17]. Model Primitive Datatype = NormalizedString. type: string priorData: description: | This is proprietary data that is supplied to the CAT Engine as a key/value pairs. type: array minItems: 0 items: $ref: "#/components/schemas/KeyValuePairDType" additionalProperties: false SessionIdentifierDType: description: | The system that creates the result (for example, the test delivery system) should assign a session identifier that it can use to identify the session. type: object required: - sourceID - identifier properties: sourceID: description: A unique identifier of the system which added this identifier to the result. Model Primitive Datatype = AnyURI. type: string format: uri identifier: description: The system that creates the report should add a session identifier. Subsequent systems that process the results might use their own identifier for the session and should add this too if the result is exported again for further transport. Model Primitive Datatype = NCName. type: string additionalProperties: false TemplateVariableDType: description: | The Item result information related to a 'Template Variable'. type: object required: - identifier - cardinality properties: identifier: description: The identifier of the Template Variable. Model Primitive Datatype = NCName. type: string cardinality: description: | The cardinality of the Template Variable, taken from the corresponding declaration or definition. type: string enum: - multiple - ordered - record - single baseType: description: | The base type of the Template Variable, taken from the corresponding declaration of definition. This value is omitted only for variables with record cardinality. type: string enum: - boolean - directedPair - duration - file - float - identifier - integer - pair - point - string - uri value: description: | The value(s) of the template variable. The order of the values is significant only if the template variable was declared with ordered cardinality. type: array minItems: 0 items: $ref: "#/components/schemas/ValueDType" additionalProperties: false TestResultDType: description: | The container for the Test result. When a test result is given the following item results must relate only to items that were selected for presentation as part of the corresponding test session. Furthermore, all items selected for presentation should be reported with a corresponding itemResult. type: object required: - identifier - datestamp properties: identifier: description: The identifier of the test for which this is a result. Model Primitive Datatype = NCName. type: string datestamp: description: The date stamp of when this result was recorded. Model Primitive Datatype = DateTime. type: string format: date-time responseVariables: description: | Indicates that a Response Variable is being reported. This is the value of one of the responses associated with an Item in the corresponding ASI instance [QTI, 20a]. type: array minItems: 0 items: $ref: "#/components/schemas/ResponseVariableDType" templateVariables: description: | Indicates that a Template Variable is being reported. This is the value of one of the template variables associated with an Item in the corresponding ASI instance [QTI, 20a]. type: array minItems: 0 items: $ref: "#/components/schemas/TemplateVariableDType" outcomeVariables: description: | Indicates that an Outcome Variable is being reported. This is the value of one of the outcomes associated with either an Item or Test and defined in the corresponding ASI instance [QTI, 20a]. type: array minItems: 0 items: $ref: "#/components/schemas/OutcomeVariableDType" additionalProperties: false ValueDType: description: | A class that can represent a single value of any baseType in variable declarations and result reports. The base-type is defined by the baseType attribute of the declaration except in the case of variables with record cardinality. type: object required: - value properties: fieldIdentifier: description: This attribute is only used for specifying the field identifier for a value that forms part of a record. Model Primitive Datatype = NCName. type: string baseType: description: | This attribute is only used for specifying the base-type of a value that forms part of a record. type: string enum: - boolean - directedPair - duration - file - float - identifier - integer - pair - point - string - uri value: description: The value being supplied. Model Primitive Datatype = NormalizedString. type: string additionalProperties: false imsx_CodeMinorDType: description: | This is the container for the set of code minor status codes reported in the responses from the Service Provider. type: object required: - imsx_codeMinorField properties: imsx_codeMinorField: description: | Each reported code minor status code. type: array minItems: 1 items: $ref: "#/components/schemas/imsx_CodeMinorFieldDType" additionalProperties: false imsx_CodeMinorFieldDType: description: | This is the container for a single code minor status code. type: object required: - imsx_codeMinorFieldName - imsx_codeMinorFieldValue properties: imsx_codeMinorFieldName: description: This should contain the identity of the system that has produced the code minor status code report. Model Primitive Datatype = NormalizedString. type: string imsx_codeMinorFieldValue: description: | The code minor status code (this is a value from the corresponding enumerated vocabulary). type: string enum: - fullsuccess - forbidden - invaliddata - unauthorisedrequest - internal_server_error - server_busy - unknownobject additionalProperties: false imsx_StatusInfoDType: description: | This is the container for the status code and associated information returned within the HTTP messages received from the Service Provider. type: object required: - imsx_codeMajor - imsx_severity properties: imsx_codeMajor: description: | The code major value (from the corresponding enumerated vocabulary). type: string enum: - success - processing - failure - unsupported imsx_severity: description: | The severity value (from the corresponding enumerated vocabulary). type: string enum: - status - warning - error imsx_description: description: A human readable description supplied by the entity creating the status code information. Model Primitive Datatype = String. type: string imsx_codeMinor: $ref: "#/components/schemas/imsx_CodeMinorDType" additionalProperties: false
This is the set of JSON Schema listing that are used to validate the set of JSON payloads used by this service.
The JSON Schema listing is shown below (the JSON Schema is available at: https://purl.imsglobal.org/cat/v1p0/schema/jsd/catservicegroupv1p0-createsection-requestpayload-schemav1p0.json).
MISSING JSON SCHEMA DESCRIPTION.
The JSON Schema listing is shown below (the JSON Schema is available at: https://purl.imsglobal.org/cat/v1p0/schema/jsd/catservicegroupv1p0-createsection-201-responsepayload-schemav1p0.json).
{ "$schema": "http://json-schema.org/draft-07/schema#", "$id" : "createSection-201-responsepayload-schema.json", "title" : "Computer Adaptive Testing (CAT) Service Version 1.0 IMS Candidate Final JSON Schema Binding (createSection-201-responsepayload-schema)", "description" : "Author-Colin Smythe (IMS Global, UK); Version-1.0; Release Date-9th November, 2020. ", "type" : "object", "properties" : { }, "additionalProperties" : false }
The JSON Schema listing is shown below (the JSON Schema is available at: https://purl.imsglobal.org/cat/v1p0/schema/jsd/catservicegroupv1p0-createsection-400-401-500-default-responsepayload-schemav1p0.json).
{ "$schema": "http://json-schema.org/draft-07/schema#", "$id" : "createSection-400-401-500-default-responsepayload-schema.json", "title" : "Computer Adaptive Testing (CAT) Service Version 1.0 IMS Candidate Final JSON Schema Binding (createSection-400-401-500-default-responsepayload-schema)", "description" : "Author-Colin Smythe (IMS Global, UK); Version-1.0; Release Date-9th November, 2020. ", "type" : "object", "properties" : { "imsx_codeMajor" : { "description" : "The code major value (from the corresponding enumerated vocabulary).", "type" : "string", "enum" : [ "success","processing","failure","unsupported" ] }, "imsx_severity" : { "description" : "The severity value (from the corresponding enumerated vocabulary).", "type" : "string", "enum" : [ "status","warning","error" ] }, "imsx_description" : { "description" : "Model Primitive Datatype = String. A human readable description supplied by the entity creating the status code information.", "type" : "string" }, "imsx_codeMinor" : { "description" : "The set of reported code minor status codes.", "$ref" : "#/definitions/imsx_CodeMinorDType" } }, "required" : [ "imsx_codeMajor","imsx_severity" ], "additionalProperties" : false, "definitions" : { "imsx_CodeMinorDType" : { "description" : "This is the container for the set of code minor status codes reported in the responses from the Service Provider.", "type" : "object", "properties" : { "imsx_codeMinorField" : { "description" : "Each reported code minor status code.", "type" : "array", "minItems" : 1, "items" : { "$ref" : "#/definitions/imsx_CodeMinorFieldDType" } } }, "required" : [ "imsx_codeMinorField" ], "additionalProperties" : false }, "imsx_CodeMinorFieldDType" : { "description" : "This is the container for a single code minor status code.", "type" : "object", "properties" : { "imsx_codeMinorFieldName" : { "description" : "Model Primitive Datatype = NormalizedString. This should contain the identity of the system that has produced the code minor status code report.", "type" : "string" }, "imsx_codeMinorFieldValue" : { "description" : "The code minor status code (this is a value from the corresponding enumerated vocabulary).", "type" : "string", "enum" : [ "fullsuccess","forbidden","invaliddata","unauthorisedrequest","internal_server_error","server_busy","unknownobject" ] } }, "required" : [ "imsx_codeMinorFieldName","imsx_codeMinorFieldValue" ], "additionalProperties" : false } } }
The JSON Schema listing is shown below (the JSON Schema is available at: https://purl.imsglobal.org/cat/v1p0/schema/jsd/catservicegroupv1p0-createsession-requestpayload-schemav1p0.json).
{ "$schema": "http://json-schema.org/draft-07/schema#", "$id" : "createSession-requestpayload-schema.json", "title" : "Computer Adaptive Testing (CAT) Service Version 1.0 IMS Candidate Final JSON Schema Binding (createSession-requestpayload-schema)", "description" : "Author-Colin Smythe (IMS Global, UK); Version-1.0; Release Date-9th November, 2020. ", "type" : "object", "properties" : { "personalNeedsAndPreferences" : { "description" : "Model Primitive Datatype = NormalizedString. This is the Base64 encoded XML data for the Personal Needs and Preferences (PNP) for the examinee. This data conforms to the XML as defined in the IMS Access for All Personal Needs and Preferences (AfAPNP) 3.0 XML Binding specification [AFAPNP, 20].", "type" : "string" }, "demographics" : { "description" : "Model Primitive Datatype = NormalizedString. The Base64 encoding of the JSON data for the Demographics information for the examinee. This data conforms to the JSON as defined in the IMS OneRoster 1.1 specification [OR, 17].", "type" : "string" }, "priorData" : { "description" : "This is proprietary data that is supplied to the CAT Engine as a key/value pairs.", "type" : "array", "minItems" : 0, "items" : { "$ref" : "#/definitions/KeyValuePairDType" } } }, "additionalProperties" : false, "definitions" : { "KeyValuePairDType" : { "description" : "The container for the values assigned to the Key/Value pair.", "type" : "object", "properties" : { "glossaryURI" : { "description" : "Model Primitive Datatype = AnyURI. This is a URI to the definition of the data being supplied in this accompanying key/value pair. This definition should provide a human readable description of the data-type and value space for the value being identified by its key. ", "type" : "string", "format" : "uri" }, "key" : { "description" : "Model Primitive Datatype = String. The key for the value to be supplied.", "type" : "string" }, "value" : { "description" : "Model Primitive Datatype = String. The value being supplied.", "type" : "string" } }, "required" : [ "key","value" ], "additionalProperties" : false } } }
The JSON Schema listing is shown below (the JSON Schema is available at: https://purl.imsglobal.org/cat/v1p0/schema/jsd/catservicegroupv1p0-createsession-201-responsepayload-schemav1p0.json).
{ "$schema": "http://json-schema.org/draft-07/schema#", "$id" : "createSession-201-responsepayload-schema.json", "title" : "Computer Adaptive Testing (CAT) Service Version 1.0 IMS Candidate Final JSON Schema Binding (createSession-201-responsepayload-schema)", "description" : "Author-Colin Smythe (IMS Global, UK); Version-1.0; Release Date-9th November, 2020. ", "type" : "object", "properties" : { }, "additionalProperties" : false }
The JSON Schema listing is shown below (the JSON Schema is available at: https://purl.imsglobal.org/cat/v1p0/schema/jsd/catservicegroupv1p0-createsession-400-401-404-500-default-responsepayload-schemav1p0.json).
{ "$schema": "http://json-schema.org/draft-07/schema#", "$id" : "createSession-400-401-404-500-default-responsepayload-schema.json", "title" : "Computer Adaptive Testing (CAT) Service Version 1.0 IMS Candidate Final JSON Schema Binding (createSession-400-401-404-500-default-responsepayload-schema)", "description" : "Author-Colin Smythe (IMS Global, UK); Version-1.0; Release Date-9th November, 2020. ", "type" : "object", "properties" : { "imsx_codeMajor" : { "description" : "The code major value (from the corresponding enumerated vocabulary).", "type" : "string", "enum" : [ "success","processing","failure","unsupported" ] }, "imsx_severity" : { "description" : "The severity value (from the corresponding enumerated vocabulary).", "type" : "string", "enum" : [ "status","warning","error" ] }, "imsx_description" : { "description" : "Model Primitive Datatype = String. A human readable description supplied by the entity creating the status code information.", "type" : "string" }, "imsx_codeMinor" : { "description" : "The set of reported code minor status codes.", "$ref" : "#/definitions/imsx_CodeMinorDType" } }, "required" : [ "imsx_codeMajor","imsx_severity" ], "additionalProperties" : false, "definitions" : { "imsx_CodeMinorDType" : { "description" : "This is the container for the set of code minor status codes reported in the responses from the Service Provider.", "type" : "object", "properties" : { "imsx_codeMinorField" : { "description" : "Each reported code minor status code.", "type" : "array", "minItems" : 1, "items" : { "$ref" : "#/definitions/imsx_CodeMinorFieldDType" } } }, "required" : [ "imsx_codeMinorField" ], "additionalProperties" : false }, "imsx_CodeMinorFieldDType" : { "description" : "This is the container for a single code minor status code.", "type" : "object", "properties" : { "imsx_codeMinorFieldName" : { "description" : "Model Primitive Datatype = NormalizedString. This should contain the identity of the system that has produced the code minor status code report.", "type" : "string" }, "imsx_codeMinorFieldValue" : { "description" : "The code minor status code (this is a value from the corresponding enumerated vocabulary).", "type" : "string", "enum" : [ "fullsuccess","forbidden","invaliddata","unauthorisedrequest","internal_server_error","server_busy","unknownobject" ] } }, "required" : [ "imsx_codeMinorFieldName","imsx_codeMinorFieldValue" ], "additionalProperties" : false } } }
No request payload is sent for this delete request and so there is no JSON Schema listing.
No payload is returned for this HTTP code and so there is no JSON Schema listing.
The JSON Schema listing is shown below (the JSON Schema is available at: https://purl.imsglobal.org/cat/v1p0/schema/jsd/catservicegroupv1p0-endsection-400-401-404-500-default-responsepayload-schemav1p0.json).
{ "$schema": "http://json-schema.org/draft-07/schema#", "$id" : "endSection-400-401-404-500-default-responsepayload-schema.json", "title" : "Computer Adaptive Testing (CAT) Service Version 1.0 IMS Candidate Final JSON Schema Binding (endSection-400-401-404-500-default-responsepayload-schema)", "description" : "Author-Colin Smythe (IMS Global, UK); Version-1.0; Release Date-9th November, 2020. ", "type" : "object", "properties" : { "imsx_codeMajor" : { "description" : "The code major value (from the corresponding enumerated vocabulary).", "type" : "string", "enum" : [ "success","processing","failure","unsupported" ] }, "imsx_severity" : { "description" : "The severity value (from the corresponding enumerated vocabulary).", "type" : "string", "enum" : [ "status","warning","error" ] }, "imsx_description" : { "description" : "Model Primitive Datatype = String. A human readable description supplied by the entity creating the status code information.", "type" : "string" }, "imsx_codeMinor" : { "description" : "The set of reported code minor status codes.", "$ref" : "#/definitions/imsx_CodeMinorDType" } }, "required" : [ "imsx_codeMajor","imsx_severity" ], "additionalProperties" : false, "definitions" : { "imsx_CodeMinorDType" : { "description" : "This is the container for the set of code minor status codes reported in the responses from the Service Provider.", "type" : "object", "properties" : { "imsx_codeMinorField" : { "description" : "Each reported code minor status code.", "type" : "array", "minItems" : 1, "items" : { "$ref" : "#/definitions/imsx_CodeMinorFieldDType" } } }, "required" : [ "imsx_codeMinorField" ], "additionalProperties" : false }, "imsx_CodeMinorFieldDType" : { "description" : "This is the container for a single code minor status code.", "type" : "object", "properties" : { "imsx_codeMinorFieldName" : { "description" : "Model Primitive Datatype = NormalizedString. This should contain the identity of the system that has produced the code minor status code report.", "type" : "string" }, "imsx_codeMinorFieldValue" : { "description" : "The code minor status code (this is a value from the corresponding enumerated vocabulary).", "type" : "string", "enum" : [ "fullsuccess","forbidden","invaliddata","unauthorisedrequest","internal_server_error","server_busy","unknownobject" ] } }, "required" : [ "imsx_codeMinorFieldName","imsx_codeMinorFieldValue" ], "additionalProperties" : false } } }
No request payload is sent for this delete request and so there is no JSON Schema listing.
No payload is returned for this HTTP code and so there is no JSON Schema listing.
The JSON Schema listing is shown below (the JSON Schema is available at: https://purl.imsglobal.org/cat/v1p0/schema/jsd/catservicegroupv1p0-endsession-400-401-404-500-default-responsepayload-schemav1p0.json).
{ "$schema": "http://json-schema.org/draft-07/schema#", "$id" : "endSession-400-401-404-500-default-responsepayload-schema.json", "title" : "Computer Adaptive Testing (CAT) Service Version 1.0 IMS Candidate Final JSON Schema Binding (endSession-400-401-404-500-default-responsepayload-schema)", "description" : "Author-Colin Smythe (IMS Global, UK); Version-1.0; Release Date-9th November, 2020. ", "type" : "object", "properties" : { "imsx_codeMajor" : { "description" : "The code major value (from the corresponding enumerated vocabulary).", "type" : "string", "enum" : [ "success","processing","failure","unsupported" ] }, "imsx_severity" : { "description" : "The severity value (from the corresponding enumerated vocabulary).", "type" : "string", "enum" : [ "status","warning","error" ] }, "imsx_description" : { "description" : "Model Primitive Datatype = String. A human readable description supplied by the entity creating the status code information.", "type" : "string" }, "imsx_codeMinor" : { "description" : "The set of reported code minor status codes.", "$ref" : "#/definitions/imsx_CodeMinorDType" } }, "required" : [ "imsx_codeMajor","imsx_severity" ], "additionalProperties" : false, "definitions" : { "imsx_CodeMinorDType" : { "description" : "This is the container for the set of code minor status codes reported in the responses from the Service Provider.", "type" : "object", "properties" : { "imsx_codeMinorField" : { "description" : "Each reported code minor status code.", "type" : "array", "minItems" : 1, "items" : { "$ref" : "#/definitions/imsx_CodeMinorFieldDType" } } }, "required" : [ "imsx_codeMinorField" ], "additionalProperties" : false }, "imsx_CodeMinorFieldDType" : { "description" : "This is the container for a single code minor status code.", "type" : "object", "properties" : { "imsx_codeMinorFieldName" : { "description" : "Model Primitive Datatype = NormalizedString. This should contain the identity of the system that has produced the code minor status code report.", "type" : "string" }, "imsx_codeMinorFieldValue" : { "description" : "The code minor status code (this is a value from the corresponding enumerated vocabulary).", "type" : "string", "enum" : [ "fullsuccess","forbidden","invaliddata","unauthorisedrequest","internal_server_error","server_busy","unknownobject" ] } }, "required" : [ "imsx_codeMinorFieldName","imsx_codeMinorFieldValue" ], "additionalProperties" : false } } }
No request payload is sent for this request, only a single path parameter is supplied, and so there is no JSON Schema listing.
The JSON Schema listing is shown below (the JSON Schema is available at: https://purl.imsglobal.org/cat/v1p0/schema/jsd/catservicegroupv1p0-getsection-200-responsepayload-schemav1p0.json).
{ "$schema": "http://json-schema.org/draft-07/schema#", "$id" : "getSection-200-responsepayload-schema.json", "title" : "Computer Adaptive Testing (CAT) Service Version 1.0 IMS Candidate Final JSON Schema Binding (getSection-200-responsepayload-schema)", "description" : "Author-Colin Smythe (IMS Global, UK); Version-1.0; Release Date-9th November, 2020. ", "type" : "object", "properties" : { }, "additionalProperties" : false }
The JSON Schema listing is shown below (the JSON Schema is available at: https://purl.imsglobal.org/cat/v1p0/schema/jsd/catservicegroupv1p0-getsection-400-401-404-500-default-responsepayload-schemav1p0.json).
{ "$schema": "http://json-schema.org/draft-07/schema#", "$id" : "getSection-400-401-404-500-default-responsepayload-schema.json", "title" : "Computer Adaptive Testing (CAT) Service Version 1.0 IMS Candidate Final JSON Schema Binding (getSection-400-401-404-500-default-responsepayload-schema)", "description" : "Author-Colin Smythe (IMS Global, UK); Version-1.0; Release Date-9th November, 2020. ", "type" : "object", "properties" : { "imsx_codeMajor" : { "description" : "The code major value (from the corresponding enumerated vocabulary).", "type" : "string", "enum" : [ "success","processing","failure","unsupported" ] }, "imsx_severity" : { "description" : "The severity value (from the corresponding enumerated vocabulary).", "type" : "string", "enum" : [ "status","warning","error" ] }, "imsx_description" : { "description" : "Model Primitive Datatype = String. A human readable description supplied by the entity creating the status code information.", "type" : "string" }, "imsx_codeMinor" : { "description" : "The set of reported code minor status codes.", "$ref" : "#/definitions/imsx_CodeMinorDType" } }, "required" : [ "imsx_codeMajor","imsx_severity" ], "additionalProperties" : false, "definitions" : { "imsx_CodeMinorDType" : { "description" : "This is the container for the set of code minor status codes reported in the responses from the Service Provider.", "type" : "object", "properties" : { "imsx_codeMinorField" : { "description" : "Each reported code minor status code.", "type" : "array", "minItems" : 1, "items" : { "$ref" : "#/definitions/imsx_CodeMinorFieldDType" } } }, "required" : [ "imsx_codeMinorField" ], "additionalProperties" : false }, "imsx_CodeMinorFieldDType" : { "description" : "This is the container for a single code minor status code.", "type" : "object", "properties" : { "imsx_codeMinorFieldName" : { "description" : "Model Primitive Datatype = NormalizedString. This should contain the identity of the system that has produced the code minor status code report.", "type" : "string" }, "imsx_codeMinorFieldValue" : { "description" : "The code minor status code (this is a value from the corresponding enumerated vocabulary).", "type" : "string", "enum" : [ "fullsuccess","forbidden","invaliddata","unauthorisedrequest","internal_server_error","server_busy","unknownobject" ] } }, "required" : [ "imsx_codeMinorFieldName","imsx_codeMinorFieldValue" ], "additionalProperties" : false } } }
The JSON Schema listing is shown below (the JSON Schema is available at: https://purl.imsglobal.org/cat/v1p0/schema/jsd/catservicegroupv1p0-submitresults-requestpayload-schemav1p0.json).
{ "$schema": "http://json-schema.org/draft-07/schema#", "$id" : "submitResults-requestpayload-schema.json", "title" : "Computer Adaptive Testing (CAT) Service Version 1.0 IMS Candidate Final JSON Schema Binding (submitResults-requestpayload-schema)", "description" : "Author-Colin Smythe (IMS Global, UK); Version-1.0; Release Date-9th November, 2020. ", "type" : "object", "properties" : { "assessmentResult" : { "description" : "The set of actual results achieved by the examinee (this is equivalent to the IMS QTI 2.2 Results Reporting data model [QTI, 20b]).", "$ref" : "#/definitions/AssessmentResultDType" }, "sessionState" : { "description" : "Model Primitive Datatype = NormalizedString. The session state information. This is the data that was supplied by the CAT Engine when the session was created or the next set of Items was requested.", "type" : "string" } }, "required" : [ "assessmentResult" ], "additionalProperties" : false, "definitions" : { "AssessmentResultDType" : { "description" : "An Assessment Result is used to report the results of a candidate's interaction with a test and/or one or more items attempted. Information about the test is optional, in some systems it may be possible to interact with items that are not organized into a test at all. For example, items that are organized with learning resources and presented individually in a formative context.", "type" : "object", "properties" : { "context" : { "description" : "Contains contextual information for the associated testResult and itemResults.", "$ref" : "#/definitions/ContextDType" }, "testResult" : { "description" : "A summary report for a test is represented by an assessment result containing a testResult but no itemResults.", "$ref" : "#/definitions/TestResultDType" }, "itemResult" : { "description" : "When a test result is given the following item results must relate only to items that were selected for presentation as part of the corresponding test session. Furthermore, all items selected for presentation should be reported with a corresponding itemResult.", "type" : "array", "minItems" : 0, "items" : { "$ref" : "#/definitions/ItemResultDType" } } }, "additionalProperties" : false }, "CandidateResponseDType" : { "description" : "The response given by the candidate.", "type" : "object", "properties" : { "value" : { "description" : "The value(s) of the response variable. A NULL value, resulting from no response, is indicated by the absence of any value. The order of the values is significant only if the response was declared with ordered cardinality.", "type" : "array", "minItems" : 0, "items" : { "$ref" : "#/definitions/ValueDType" } } }, "additionalProperties" : false }, "ContextDType" : { "description" : "This is the context for the 'assessmentResult'. It provides the corresponding set of identifiers.", "type" : "object", "properties" : { "sourcedId" : { "description" : "Model Primitive Datatype = NCName. A unique identifier for the test candidate.", "type" : "string" }, "sessionIdentifiers" : { "description" : "The system that creates the result (for example, the test delivery system) should assign a session identifier that it can use to identify the session. Subsequent systems that process the result might assign their own identifier to the session which should be added to the context if the result is modified and exported for transport again.", "type" : "array", "minItems" : 0, "items" : { "$ref" : "#/definitions/SessionIdentifierDType" } } }, "additionalProperties" : false }, "CorrectResponseDType" : { "description" : "The correct response may be output as part of the report if desired. Systems are not limited to reporting correct responses declared in responseDeclarations. For example, a correct response may be set by a templateRule or may simply have been suppressed from the declaration passed to the delivery engine e.g. for security.", "type" : "object", "properties" : { "interpretation" : { "description" : "Model Primitive Datatype = String. A human readable interpretation of the correct value.", "type" : "string" }, "value" : { "description" : "The order of the values is signficant only when the response is of ordered cardinality.", "type" : "array", "minItems" : 0, "items" : { "$ref" : "#/definitions/ValueDType" } } }, "additionalProperties" : false }, "ItemResultDType" : { "description" : "The result of an item session is reported with an itemResult. A report may contain multiple results for the same instance of an item representing multiple attempts, progression through an adaptive item or even more detailed tracking. In these cases, each item result must have a different datestamp.", "type" : "object", "properties" : { "identifier" : { "description" : "Model Primitive Datatype = NCName. The identifier of the item for which this is a result. For item results that are reported as part of a test result this is the identifier used to refer to the item in the test (see assessmentItemRef). For item results that are reported on their own, this can be any suitable identifier for the item. Where possible, the value should match the identifier attribute on the associated assessmentItem.", "type" : "string" }, "sequenceIndex" : { "description" : "Model Primitive Datatype = NonNegativeInteger. For item results that are reported as part of a test, this attribute must be used to indicate the position of the item within the specific instance of the test. The first item of the first part of the test is defined to have sequence index 1.", "type" : "integer", "format" : "int32", "minimum" : 0 }, "datestamp" : { "description" : "Model Primitive Datatype = DateTime. The date stamp of when this result was recorded.", "type" : "string", "format" : "date-time" }, "sessionStatus" : { "description" : "The session status is used to interpret the values of the item variables. See the sessionStatus vocabulary.", "type" : "string", "enum" : [ "final","initial","pendingResponseProcessing","pendingSubmission" ] }, "responseVariables" : { "description" : "Indicates that a Response Variable is being reported. This is the value of one of the responses associated with an Item in the corresponding ASI instance.", "type" : "array", "minItems" : 0, "items" : { "$ref" : "#/definitions/ResponseVariableDType" } }, "templateVariables" : { "description" : "Indicates that a Template Variable is being reported. This is the value of one of the template variables associated with an Item in the corresponding ASI instance.", "type" : "array", "minItems" : 0, "items" : { "$ref" : "#/definitions/TemplateVariableDType" } }, "outcomeVariables" : { "description" : "Indicates that an Outcome Variable is being reported. This is the value of one of the outcomes associated with either an Item or Test and defined in the corresponding ASI instance.", "type" : "array", "minItems" : 0, "items" : { "$ref" : "#/definitions/OutcomeVariableDType" } }, "candidateComment" : { "description" : "Model Primitive Datatype = String. An optional comment supplied by the candidate (see the allowComment in the ASI documentation [QTI, 20a]).", "type" : "string" } }, "required" : [ "identifier","datestamp","sessionStatus" ], "additionalProperties" : false }, "OutcomeVariableDType" : { "description" : "The Item result information related to an 'Outcome Variable'.", "type" : "object", "properties" : { "identifier" : { "description" : "Model Primitive Datatype = NCName. The identifier of the Outcome Variable.", "type" : "string" }, "cardinality" : { "description" : "The cardinality of the Outcome Variable, taken from the corresponding declaration or definition.", "type" : "string", "enum" : [ "multiple","ordered","record","single" ] }, "baseType" : { "description" : "The base type of the Outcome Variable, taken from the corresponding declaration of definition. This value is omitted only for variables with record cardinality.", "type" : "string", "enum" : [ "boolean","directedPair","duration","file","float","identifier","integer","pair","point","string","uri" ] }, "view" : { "description" : "The views (if any) declared for the outcome must be copied to the report to enable systems that render the report to hide information not relevant in a specific situation. If no values are given, the outcome's value should be considered relevant in all views.", "type" : "array", "minItems" : 0, "items" : { "type" : "string", "enum" : [ "author","candidate","proctor","scorer","testConstructor","tutor" ] } }, "interpretation" : { "description" : "Model Primitive Datatype = String. A human readable interpretation of the default value.", "type" : "string" }, "longInterpretation" : { "description" : "Model Primitive Datatype = AnyURI. An optional link to an extended interpretation of the outcome variable's value.", "type" : "string", "format" : "uri" }, "normalMaximum" : { "description" : "Model Primitive Datatype = Double. The normalMaximum attribute optionally defines the maximum magnitude of numeric outcome variables, it must be a positive value. If given, the outcome's value can be divided by normalMaximum and then truncated (if necessary) to obtain a normalized score in the range [-1.0,1.0]. normalMaximum has no affect on responseProcessing or the values that the outcome variable itself can take.", "type" : "number", "format" : "double" }, "normalMinimum" : { "description" : "Model Primitive Datatype = Double. The normalMinimum attribute optionally defines the minimum value of numeric outcome variables, it may be negative.", "type" : "number", "format" : "double" }, "masteryValue" : { "description" : "Model Primitive Datatype = Double. The masteryValue attribute optionally defines a value for numeric outcome variables above which the aspect being measured is considered to have been mastered by the candidate.", "type" : "number", "format" : "double" }, "value" : { "description" : "The value(s) of the outcome variable. The order of the values is significant only if the outcome was declared with ordered cardinality.", "type" : "array", "minItems" : 0, "items" : { "$ref" : "#/definitions/ValueDType" } } }, "required" : [ "identifier","cardinality" ], "additionalProperties" : false }, "ResponseVariableDType" : { "description" : "The Item result information related to a 'Response Variable'.", "type" : "object", "properties" : { "identifier" : { "description" : "Model Primitive Datatype = NCName. The identifier of the Response Variable.", "type" : "string" }, "cardinality" : { "description" : "The cardinality of the Response Variable, taken from the corresponding declaration or definition.", "type" : "string", "enum" : [ "multiple","ordered","record","single" ] }, "baseType" : { "description" : "The base type of the Response Variable, taken from the corresponding declaration of definition. This value is omitted only for variables with record cardinality.", "type" : "string", "enum" : [ "boolean","directedPair","duration","file","float","identifier","integer","pair","point","string","uri" ] }, "choiceSequence" : { "description" : "Model Primitive Datatype = NCName. When a response variable is bound to an interaction that supports the shuffling of choices, the sequence of choices experienced by the candidate will vary between test instances. When shuffling is in effect, the sequence of choices should be reported as a sequence of choice identifiers using this attribute.", "type" : "array", "minItems" : 0, "items" : { "type" : "string" } }, "correctResponse" : { "description" : "The correct response may be output as part of the report if desired. Systems are not limited to reporting correct responses declared in responseDeclarations. For example, a correct response may be set by a templateRule or may simply have been suppressed from the declaration passed to the delivery engine e.g. for security.", "$ref" : "#/definitions/CorrectResponseDType" }, "candidateResponse" : { "description" : "The response given by the candidate.", "$ref" : "#/definitions/CandidateResponseDType" } }, "required" : [ "identifier","cardinality","candidateResponse" ], "additionalProperties" : false }, "SessionIdentifierDType" : { "description" : "The system that creates the result (for example, the test delivery system) should assign a session identifier that it can use to identify the session.", "type" : "object", "properties" : { "sourceID" : { "description" : "Model Primitive Datatype = AnyURI. A unique identifier of the system which added this identifier to the result.", "type" : "string", "format" : "uri" }, "identifier" : { "description" : "Model Primitive Datatype = NCName. The system that creates the report should add a session identifier. Subsequent systems that process the results might use their own identifier for the session and should add this too if the result is exported again for further transport.", "type" : "string" } }, "required" : [ "sourceID","identifier" ], "additionalProperties" : false }, "TemplateVariableDType" : { "description" : "The Item result information related to a 'Template Variable'.", "type" : "object", "properties" : { "identifier" : { "description" : "Model Primitive Datatype = NCName. The identifier of the Template Variable.", "type" : "string" }, "cardinality" : { "description" : "The cardinality of the Template Variable, taken from the corresponding declaration or definition.", "type" : "string", "enum" : [ "multiple","ordered","record","single" ] }, "baseType" : { "description" : "The base type of the Template Variable, taken from the corresponding declaration of definition. This value is omitted only for variables with record cardinality.", "type" : "string", "enum" : [ "boolean","directedPair","duration","file","float","identifier","integer","pair","point","string","uri" ] }, "value" : { "description" : "The value(s) of the template variable. The order of the values is significant only if the template variable was declared with ordered cardinality.", "type" : "array", "minItems" : 0, "items" : { "$ref" : "#/definitions/ValueDType" } } }, "required" : [ "identifier","cardinality" ], "additionalProperties" : false }, "TestResultDType" : { "description" : "The container for the Test result. When a test result is given the following item results must relate only to items that were selected for presentation as part of the corresponding test session. Furthermore, all items selected for presentation should be reported with a corresponding itemResult.", "type" : "object", "properties" : { "identifier" : { "description" : "Model Primitive Datatype = NCName. The identifier of the test for which this is a result.", "type" : "string" }, "datestamp" : { "description" : "Model Primitive Datatype = DateTime. The date stamp of when this result was recorded.", "type" : "string", "format" : "date-time" }, "responseVariables" : { "description" : "Indicates that a Response Variable is being reported. This is the value of one of the responses associated with an Item in the corresponding ASI instance [QTI, 20a].", "type" : "array", "minItems" : 0, "items" : { "$ref" : "#/definitions/ResponseVariableDType" } }, "templateVariables" : { "description" : "Indicates that a Template Variable is being reported. This is the value of one of the template variables associated with an Item in the corresponding ASI instance [QTI, 20a].", "type" : "array", "minItems" : 0, "items" : { "$ref" : "#/definitions/TemplateVariableDType" } }, "outcomeVariables" : { "description" : "Indicates that an Outcome Variable is being reported. This is the value of one of the outcomes associated with either an Item or Test and defined in the corresponding ASI instance [QTI, 20a].", "type" : "array", "minItems" : 0, "items" : { "$ref" : "#/definitions/OutcomeVariableDType" } } }, "required" : [ "identifier","datestamp" ], "additionalProperties" : false }, "ValueDType" : { "description" : "A class that can represent a single value of any baseType in variable declarations and result reports. The base-type is defined by the baseType attribute of the declaration except in the case of variables with record cardinality.", "type" : "object", "properties" : { "fieldIdentifier" : { "description" : "Model Primitive Datatype = NCName. This attribute is only used for specifying the field identifier for a value that forms part of a record.", "type" : "string" }, "baseType" : { "description" : "This attribute is only used for specifying the base-type of a value that forms part of a record.", "type" : "string", "enum" : [ "boolean","directedPair","duration","file","float","identifier","integer","pair","point","string","uri" ] }, "value" : { "description" : "Model Primitive Datatype = NormalizedString. The value being supplied.", "type" : "string" } }, "required" : [ "value" ], "additionalProperties" : false } } }
The JSON Schema listing is shown below (the JSON Schema is available at: https://purl.imsglobal.org/cat/v1p0/schema/jsd/catservicegroupv1p0-submitresults-201-responsepayload-schemav1p0.json).
{ "$schema": "http://json-schema.org/draft-07/schema#", "$id" : "submitResults-201-responsepayload-schema.json", "title" : "Computer Adaptive Testing (CAT) Service Version 1.0 IMS Candidate Final JSON Schema Binding (submitResults-201-responsepayload-schema)", "description" : "Author-Colin Smythe (IMS Global, UK); Version-1.0; Release Date-9th November, 2020. ", "type" : "object", "properties" : { }, "additionalProperties" : false }
The JSON Schema listing is shown below (the JSON Schema is available at: https://purl.imsglobal.org/cat/v1p0/schema/jsd/catservicegroupv1p0-submitresults-400-401-404-500-default-responsepayload-schemav1p0.json).
{ "$schema": "http://json-schema.org/draft-07/schema#", "$id" : "submitResults-400-401-404-500-default-responsepayload-schema.json", "title" : "Computer Adaptive Testing (CAT) Service Version 1.0 IMS Candidate Final JSON Schema Binding (submitResults-400-401-404-500-default-responsepayload-schema)", "description" : "Author-Colin Smythe (IMS Global, UK); Version-1.0; Release Date-9th November, 2020. ", "type" : "object", "properties" : { "imsx_codeMajor" : { "description" : "The code major value (from the corresponding enumerated vocabulary).", "type" : "string", "enum" : [ "success","processing","failure","unsupported" ] }, "imsx_severity" : { "description" : "The severity value (from the corresponding enumerated vocabulary).", "type" : "string", "enum" : [ "status","warning","error" ] }, "imsx_description" : { "description" : "Model Primitive Datatype = String. A human readable description supplied by the entity creating the status code information.", "type" : "string" }, "imsx_codeMinor" : { "description" : "The set of reported code minor status codes.", "$ref" : "#/definitions/imsx_CodeMinorDType" } }, "required" : [ "imsx_codeMajor","imsx_severity" ], "additionalProperties" : false, "definitions" : { "imsx_CodeMinorDType" : { "description" : "This is the container for the set of code minor status codes reported in the responses from the Service Provider.", "type" : "object", "properties" : { "imsx_codeMinorField" : { "description" : "Each reported code minor status code.", "type" : "array", "minItems" : 1, "items" : { "$ref" : "#/definitions/imsx_CodeMinorFieldDType" } } }, "required" : [ "imsx_codeMinorField" ], "additionalProperties" : false }, "imsx_CodeMinorFieldDType" : { "description" : "This is the container for a single code minor status code.", "type" : "object", "properties" : { "imsx_codeMinorFieldName" : { "description" : "Model Primitive Datatype = NormalizedString. This should contain the identity of the system that has produced the code minor status code report.", "type" : "string" }, "imsx_codeMinorFieldValue" : { "description" : "The code minor status code (this is a value from the corresponding enumerated vocabulary).", "type" : "string", "enum" : [ "fullsuccess","forbidden","invaliddata","unauthorisedrequest","internal_server_error","server_busy","unknownobject" ] } }, "required" : [ "imsx_codeMinorFieldName","imsx_codeMinorFieldValue" ], "additionalProperties" : false } } }
Title: | IMS Computer Adaptive Testing (CAT) Service REST/JSON Binding v1.0 |
Editors: | Colin Smythe, IMS Global (UK) Mark McKell, IMS Global (USA) |
Co-chairs: | Jason Carlson, ACT (USA) Mark Molenaar, Independent Expert (The Netherlands) |
Version: | 1.0 |
Version Date: | 2021-02-01 |
Status: | IMS Public Candidate Final |
Summary: | The IMS Computer Adaptive Testing (CAT) Service defines how to implement adaptive testing using Question and Test Interoperability (QTI). This approach allows the use of protected algorithms (black box) with different sets of data such as psychometric data, constraints, stopping criteria, etc. This document contains the REST/JSON Binding definition for the CAT Service. |
Revision Information: | First release of this specification. |
Purpose: | For adoption and implementation by the CAT Task Force. |
Document Location: | https://www.imsglobal.org/spec/cat/latest |
The following individuals contributed to the development of this document:
Arjan Aarnink | Cito (The Netherlands) |
Michelle Barrett | Pacific Metrics (USA) |
Jason Carlson | ACT (USA) |
Paul Grudnitski | Pearson (USA) |
Mark Molenaar | Independent Expert (The Netherlands) |
Wes Munsil | ACT (USA) |
Padraig O'hiceadha | Houghton Miflin Harcourt (Ireland) |
Ed Salvatierra | ACT (USA) |
Amir Sehic | Pacific Metrics (USA) |
Colin Smythe | IMS Global (UK) |
Tjeerd Hans Terpstra | Cito (The Netherlands) |
Version No. | Release Date | Comments |
---|---|---|
Public Candidate Final 1.0 | 9th November, 2020 | The Candidate Final document. This is a declaration that the specification is ready for adoption by Members of the Task Force. The aim is to obtain a certain number of implementations that pass conformance as preparation for Final Release. |
IMS Global Learning Consortium, Inc. ("IMS Global") is publishing the information contained in this document ("Specification") for purposes of scientific, experimental, and scholarly collaboration only.
IMS Global makes no warranty or representation regarding the accuracy or completeness of the Specification.
This material is provided on an "As Is" and "As Available" basis.
The Specification is at all times subject to change and revision without notice.
It is your sole responsibility to evaluate the usefulness, accuracy, and completeness of the Specification as it relates to you.
IMS Global would appreciate receiving your comments and suggestions.
Please contact IMS Global through our website at http://www.imsglobal.org.
Please refer to Document Name: IMS Computer Adaptive Testing (CAT) Service REST/JSON Binding v1.0
Date: 2021-02-01