Download OpenAPI specification:
This a spec for the (REST-) API of the IQB-Testcenter Application. It will be used to make backend's e2e-test and a mock-server for frontend's e2e-tests. It's the basis for our vision of continuous integration.
Retrieves a file from the workspace.
| group_token required | string Example: static:group:sample_group the (group-)auth-token for the workspace |
| path required | string Example: ws_1/Resource/SAMPLE_UNITCONTENTS.HTM filename and path |
(the file's content)
Retrieves a certain test: It's content, state and the mode of current login-session.
laststate is an array of key-value-pairs stored for this test.
The test-mode is basically a string to be interpretated by the frontend. For more details
about that see: https://pages.cms.hu-berlin.de/iqb/testcenter/pages/test-mode.html
run-hot-return and run-hot-restart - the real testing situationrun-review - for reviewers of of units and bookletsrun-trial - for trying out the bookletrun-demo - for showcase onlyFrom the backend's point of view these modes are all the same. Some have special meanings for the backend nevertheless:
monitor-group is the monitor account to supervise a group of testeesmonitor-study is an account to supervise alls groups of a studyrun-hot-restart and demo every session is unique so the test will be restarted everytime a new session is started (eg after logout) and it will not possible to return to the previous session. Provided data from previous sessions will be stored anyway.run-hot-return, run-hot-restart and run-trial - only these types of test wil be broadcasted via Broadcaster, so they can be views in the group-monitor.run-review and run-trial - only these can create, change and delete reviews.| test_id required | integer Example: 1 id of a executed test |
| AuthToken required | any Example: p:0000000000000.00000000000 auth-token for test-user |
{- "mode": "run-hot-return",
- "laststate": {
- "CURRENT_UNIT_ID": "1"
}, - "xml": "(contents of a booklet.xml)"
}Retrieves a certain unit for a certain executed test - the booklet-file XML, last state and lock status.
You can insert an optional parameter /alias/{alias} in the end to obtain data if unit is defined with
an alias in the booklet. This is an HotFix for https://github.com/iqb-berlin/testcenter-frontend/issues/261.
| test_id required | integer Example: 1 id of a executed test |
| unit_name required | string Examples:
unit-name (not alias!) as defined in booklet |
| AuthToken required | any Example: p:0000000000000.00000000000 auth-token for test-user |
{- "state": {
- "PRESENTATIONCOMPLETE": "yes"
}, - "dataParts": {
- "all": "{\"name\":\"Sam Sample\",\"age\":34}",
- "1:UNIT.SAMPLE:v2": "[{\"id\":\"v2\",\"value\":[\"image:h5ki-bd-va4dg-jc2to2mp_6tga4teiw.png\"],\"status\":\"VALUE_CHANGED\"}]"
}, - "unitResponseType": "example-data-format",
- "definition": ""
}adds a review item to unit in a test
| test_id required | string Example: 1 test-id - id of a test execution. |
| unit_name required | string Example: UNIT.SAMPLE unit-name (or alias) as defined in booklet |
| AuthToken required | any Example: p:0000000000000.00000000000 auth-token for test-user |
| priority | integer priority, 1=critical, 2=medium, 3=optional |
| entry required | string text of the review entry |
| reviewer | string or null name of the reviewer |
| categories | string whitespace separated list of categories |
| originalUnitId | string original unit id, in case the unit id in the URL was overwritten by an alias |
{- "entry": "I am a critical review item for unit 1",
- "reviewer": "John Doe",
- "priority": 1,
- "categories": "content whatever",
- "originalUnitId": ""
}adds a review item to a certain booklet
| test_id required | string Example: 1 test-id - id of a test execution. |
| AuthToken required | any Example: p:0000000000000.00000000000 auth-token for test-user |
| priority | integer priority, 1=critical, 2=medium, 3=optional |
| entry required | string text of the review entry |
| reviewer | string or null name of the reviewer |
| categories | string whitespace separated list of categories |
{- "entry": "I am a critical review item for booklet 1",
- "reviewer": "John Doe",
- "priority": 1,
- "categories": "content whatever"
}Retrieves all review items for a specific unit in a test. Only returns reviews created by the authenticated user.
| test_id required | integer Example: 1 test-id - id of a test execution |
| unit_name required | string Example: UNIT.SAMPLE unit-name (or alias) as defined in booklet |
| AuthToken required | any Example: p:0000000000000.00000000000 auth-token for test-user |
[- {
- "id": 1,
- "unit_name": "UNIT.SAMPLE",
- "test_id": 1,
- "person_id": 5,
- "reviewtime": "2025-12-17 14:30:00+00",
- "priority": 2,
- "categories": "content design",
- "entry": "This is a review comment",
- "reviewer": "John Doe",
- "page": null,
- "pagelabel": null,
- "userAgent": "Mozilla/5.0...",
- "originalUnitId": "UNIT.SAMPLE"
}, - {
- "id": 2,
- "unit_name": "UNIT.SAMPLE",
- "test_id": 1,
- "person_id": 5,
- "reviewtime": "2025-12-17 15:00:00+00",
- "priority": 1,
- "categories": "tech",
- "entry": "Another review",
- "reviewer": null,
- "page": 3,
- "pagelabel": "Unit 1.2",
- "userAgent": "Mozilla/5.0...",
- "originalUnitId": "UNIT.SAMPLE"
}
]Retrieves all review items for a specific booklet/test. Only returns reviews created by the authenticated user.
| test_id required | integer Example: 1 test-id - id of a test execution |
| AuthToken required | any Example: p:0000000000000.00000000000 auth-token for test-user |
[- {
- "id": 1,
- "booklet_id": 1,
- "person_id": 5,
- "reviewtime": "2025-12-17 14:30:00+00",
- "priority": 1,
- "categories": "content",
- "entry": "This booklet needs improvement",
- "reviewer": "John Doe",
- "userAgent": "Mozilla/5.0..."
}, - {
- "id": 2,
- "booklet_id": 1,
- "person_id": 5,
- "reviewtime": "2025-12-17 15:30:00+00",
- "priority": 2,
- "categories": "design",
- "entry": "Navigation could be better",
- "reviewer": null,
- "userAgent": "Mozilla/5.0..."
}
]Updates an existing review item for a unit. Users can only update their own reviews.
| test_id required | integer Example: 1 test_id - id of a test execution |
| unit_name required | string Example: UNIT.SAMPLE unit-name (or alias) as defined in booklet |
| review_id required | integer Example: 1 unique ID of the review to update |
| AuthToken required | any Example: p:0000000000000.00000000000 auth-token for test-user |
| priority | integer priority, 0=lowest, 3=highest |
| entry required | string text of the review entry |
| reviewer | string or null name of the reviewer |
| categories | string whitespace separated list of categories |
| userAgent | string user agent string |
{- "entry": "Updated review comment",
- "reviewer": "John Doe",
- "priority": 3,
- "categories": "content design",
- "userAgent": "Mozilla/5.0..."
}Deletes an existing review item for a unit. Users can only delete their own reviews.
| test_id required | integer Example: 1 test-id - id of a test execution |
| unit_name required | string Example: UNIT.SAMPLE unit-name (or alias) as defined in booklet |
| review_id required | integer Example: 1 unique ID of the review to delete |
| AuthToken required | any Example: p:0000000000000.00000000000 auth-token for test-user |
Updates an existing review item for a booklet/test. Users can only update their own reviews.
| test_id required | integer Example: 1 test-id - id of a test execution |
| review_id required | integer Example: 1 unique ID of the review to update |
| AuthToken required | any Example: p:0000000000000.00000000000 auth-token for test-user |
| priority | integer priority, 0=lowest, 3=highest |
| entry required | string text of the review entry |
| reviewer | string or null name of the reviewer |
| categories | string whitespace separated list of categories |
| userAgent | string user agent string |
{- "entry": "Updated booklet review",
- "reviewer": "John Doe",
- "priority": 2,
- "categories": " tech",
- "userAgent": "Mozilla/5.0..."
}Deletes an existing review item for a booklet/test. Users can only delete their own reviews.
| test_id required | integer Example: 1 test-id - id of a test execution |
| review_id required | integer Example: 1 unique ID of the review to delete |
| AuthToken required | any Example: p:0000000000000.00000000000 auth-token for test-user |
when running a test this endpoint is used to store given responses. Format and content of responses are business of the corresponding player, the endpoints take everything as raw, may it be JSON or XML or whatever.
| test_id required | string Example: 1 test-id - id of a test execution. |
| unit_name required | string Example: UNIT.SAMPLE unit-name (or alias) as defined in booklet |
| AuthToken required | any Example: p:0000000000000.00000000000 auth-token for test-user |
| response required | string response data |
| timeStamp required | integer timestamp of the response |
| responseType | string TODO what is this? |
| originalUnitId | string original unit id, in case the unit id in the URL was overwritten by an alias |
{- "response": "I am the answers to your questions.",
- "timeStamp": 1582550888563
}Updates the state (a key-value list) of a unit in a running test with a given key-value pair. Some known state-keys are: - 'PRESENTATIONCOMPLETE' - 'RESPONSECOMPLETE' - 'PAGE_NR' - 'PAGE_COUNT' - 'PAGE_NAME' but all strings are allowed. For more about states see - https://github.com/iqb-berlin/testcenter/blob/master/frontend/src/app/test-controller/interfaces/test-controller.interfaces.ts - https://verona-interfaces.github.io/player/#operation-subscribe-vopStateChangedNotification
| test_id required | string Example: 1 test-id - id of a test execution. |
| unit_name required | string Example: 1 unit-name (or alias) as defined in booklet |
| AuthToken required | any Example: p:0000000000000.00000000000 auth-token for test-user |
| key required | string The key of this state |
| content required | string The value of this state. For logs this is optional, since a log can be only a single string. |
| timeStamp required | number Because every state change gets logged a timestamp is necessary |
[- {
- "key": "PRESENTATIONCOMPLETE",
- "content": "yes\n",
- "timeStamp": 50003
}, - {
- "key": "SOME_OTHER_KEY",
- "content": "any_value",
- "timeStamp": 50002
}
]Updates the state (a key-value list) of a running test with a given key-value pair. Some known state-keys are: - 'CURRENT_UNIT' - 'CONTROLLER' but all strings are allowed. For more about states see - https://github.com/iqb-berlin/testcenter/blob/master/frontend/src/app/test-controller/interfaces/test-controller.interfaces.ts
| test_id required | string Example: 1 test-id - id of a test execution. |
| AuthToken required | any Example: p:0000000000000.00000000000 auth-token for test-user |
| key required | string The key of this state |
| content required | string The value of this state. For logs this is optional, since a log can be only a single string. |
| timeStamp required | number Because every state change gets logged a timestamp is necessary |
[- {
- "key": "CURRENT_UNIT_ID",
- "content": "UNIT_ID_X",
- "timeStamp": 60000
}, - {
- "key": "CONTROLLER",
- "content": "PAUSED",
- "timeStamp": 70000
}
]Saves an array of log-entries for a unit in a running test. A log entry consists of a (JSON-encoded) content which is optional. Some currently used logentry key words for units are- UNITENTER, UNITTRYLEAVE, PRESENTATIONCOMPLETE, RESPONSESCOMPLETE, PAGENAVIGATIONSTART, PAGENAVIGATIONCOMPLETE.
| test_id required | string Example: 1 test-id - id of a test execution. |
| unit_name required | string Example: UNIT.SAMPLE unit-name (or alias) as defined in booklet |
| AuthToken required | any Example: p:0000000000000.00000000000 auth-token for test-user |
| key required | string The key of this state |
| content | string The value of this state. For logs this is optional, since a log can be only a single string. |
| timeStamp required | number Because every state change gets logged a timestamp is necessary |
[- {
- "key": "PAGENAVIGATIONSTART: \"#first\"",
- "timeStamp": 1582230020
}, - {
- "key": "PAGENAVIGATIONEND",
- "content": "#first",
- "timeStamp": 1234596899
}
]Saves an array of log-entries for a running test. A log entry consists of a (JSON-encoded) content which is optional. Some currently used logentry key words for booklets are- BOOKLETLOADSTART, BOOKLETLOADCOMPLETE, BOOKLETLOCKEDbyTESTEE.
| test_id required | string Example: 1 test-id - id of a test execution. |
| AuthToken required | any Example: p:0000000000000.00000000000 auth-token for test-user |
| key required | string The key of this state |
| content | string The value of this state. For logs this is optional, since a log can be only a single string. |
| timeStamp required | number Because every state change gets logged a timestamp is necessary |
[- {
- "key": "BOOKLETLOADSTART",
- "content": "{Browser:\"Dredd\"}",
- "timeStamp": 1582230020
}
]locks (finishes) a running test
| test_id required | string Example: 1 test-id - id of a test execution. |
| AuthToken required | any Example: p:0000000000000.00000000000 auth-token for test-user |
| message required | string message to log |
| timeStamp required | integer timestamp of locking event |
{- "timeStamp": 123456789,
- "message": "test was locked"
}Creates a new test for a given person and booklet-name
| AuthToken required | any Example: p:0000000000000.00000000000 auth-token for test-user |
| bookletName required | string name of the booklet to start |
{- "bookletName": "BOOKLET.SAMPLE-1"
}1When the frontend executed a command, we send back this information to Backend via this command, to make sure it never gets executed again.
| test_id required | string Example: 1 test-id - id of a test execution. |
| command_id required | number Example: 3 unique id of a command |
| AuthToken required | any Example: p:0000000000000.00000000000 auth-token for test-user |
Retrieves Information about a (testtakers-)group. It has to be in the same workspace as the requesting user, who has to have in mode monitor-group or monitor-study.
| group_name required | string Example: sample_group name (id) of a group |
| AuthToken required | any Example: g:user000000000.0000000000 auth-token for group-monitor |
{- "label": "Primary Sample Group",
- "name": "sample_group"
}Retrieves all running test sessions all available groups of a monitor. Returns also an URL to a websocket to subscribe to this information if available. Sessions for Persons of this group which are not created right now get created.
| AuthToken required | any Example: g:user000000000.0000000000 auth-token for group-monitor or study-monitor |
[- {
- "personId": 1,
- "groupName": "sample_group",
- "personLabel": "test/xxx",
- "groupLabel": "Sample group",
- "mode": "run-hot-return",
- "testId": 1,
- "testState": {
- "CURRENT_UNIT_ID": "UNIT.SAMPLE",
- "status": "running"
}, - "bookletName": "BOOKLET.SAMPLE-1",
- "unitName": "UNIT.SAMPLE",
- "unitState": {
- "PRESENTATIONCOMPLETE": "yes"
}, - "timestamp": 1596455898
}, - {
- "personId": 1,
- "groupName": "sample_group",
- "personLabel": "test/xxx",
- "groupLabel": "Primary Sample group",
- "mode": "run-hot-return",
- "testId": "2,",
- "testState": {
- "status": "locked"
}, - "bookletName": "BOOKLET.SAMPLE-3",
- "unitState": { },
- "timestamp": 1606736826
}
]Retrieves all running test sessions from specific group of a monitor. Returns also an URL to a websocket to subscribe to this information if available. Sessions for Persons of this group which are not created right now get created.
| group_name required | string Example: sample_group name (id) of a group |
| AuthToken required | any Examples:
auth-token for group-monitor or study-monitor |
[- {
- "personId": 1,
- "groupName": "sample_group",
- "personLabel": "test/xxx",
- "groupLabel": "Primary Sample Group",
- "mode": "run-hot-return",
- "testId": 1,
- "testState": {
- "CURRENT_UNIT_ID": "UNIT.SAMPLE",
- "status": "running"
}, - "bookletName": "BOOKLET.SAMPLE-1",
- "unitName": "UNIT.SAMPLE",
- "unitState": {
- "PRESENTATIONCOMPLETE": "yes"
}, - "timestamp": 1596455898
}, - {
- "personId": 1,
- "groupName": "sample_group",
- "personLabel": "test/xxx",
- "groupLabel": "Primary Sample Group",
- "mode": "run-hot-return",
- "testId": "2,",
- "testState": {
- "status": "locked"
}, - "bookletName": "BOOKLET.SAMPLE-3",
- "unitState": { },
- "timestamp": 1606736826
}
]Send a monitor command to a set of running tests
| AuthToken required | any Example: g:user000000000.0000000000 auth-token for group-monitor |
| keyword | string |
| arguments | Array of strings |
| timestamp | number when the command was given |
| testIds | Array of integers |
{- "keyword": "MY-COMMAND",
- "arguments": [
- "arg1",
- "arg2"
], - "timestamp": 1597906980,
- "testIds": [
- 1
]
}Unlocks a bunch of running tests
| group_name required | string Example: sample_group name (id) of a group |
| AuthToken required | any Example: g:user000000000.0000000000 auth-token for group-monitor |
[- 2
]Locks a bunch of running tests
| group_name required | string Example: sample_group name (id) of a group |
| AuthToken required | any Example: g:user000000000.0000000000 auth-token for group-monitor |
[- 2
]When the frontend executed a command, we send back this information to Backend via this command, to make sure it never gets executed again.
| test_id required | string Example: 1 test-id - id of a test execution. |
| command_id required | number Example: 3 unique id of a command |
| AuthToken required | any Example: p:0000000000000.00000000000 auth-token for test-user |
Returns commands from the group-monitor (test-proctor) if given. They can be polled or subscribed via websocket if available. The websocket address is stored in header "SubscribeToken".
| test_id required | string Example: 1 test-id - id of a test execution. |
| AuthToken required | any Example: p:0000000000000.00000000000 auth-token for test-user |
| lastCommandId | integer Optional. The id of a command. If given, only subsequent commands will be retrieved. |
{- "lastCommandId": 2
}[- {
- "id": 3,
- "keyword": "COMMAND",
- "arguments": [
- "p4"
]
}
]Returns a Review report in JSON or CSV format for the person associated with the token. Uses the same format as workspace/{ws_id}/report/review with useNewVersion=true.
| AuthToken required | any Example: p:a_person_token auth-token for a person |
| Accept | any Example: text/csv Expected response Mimetype: 'text/csv' (the default) or 'application/json' |
"groupname";"loginname";"code";"bookletname";"unitname";"priority";"category_content";"reviewtime";"page";"pagelabel";"originalUnitId";"userAgent";"reviewer";"entry";"unitlabel";"bookletlabel" "sample_group";"test";"xxx";"BOOKLET.SAMPLE-1";"UNIT.SAMPLE";"1";"TRUE";"2021-07-29 10:00:00";"1";"page-1";"UNIT.SAMPLE";"Firefox/126.0";;"mario: this is a sample unit review";"A Sample Unit to demonstrate the SamplePlayer2";"Sample booklet" "sample_group";"test";"xxx";"BOOKLET.SAMPLE-1";"";"1";"TRUE";"2021-07-29 10:00:00";;;"";"Firefox/126.0";;"luigi: sample booklet review";"";"Sample booklet"
Creates a proof-of-work challenge for starting an Admin or Login session.
| loginType required | string Enum: "admin" "login" |
| name required | string |
| password required | string |
{- "loginType": "admin",
- "name": "super",
- "password": "user123"
}{- "algorithm": "SHA-1",
- "challenge": "string",
- "maxNumber": 0,
- "salt": "string",
- "signature": "string"
}Creates a proof-of-work challenge for starting a Person session with a code.
| AuthToken required | string Example: l:user000000000.test0000000 Auth token for a Login session |
| code required | string |
{- "code": "xxx"
}{- "algorithm": "SHA-1",
- "challenge": "string",
- "maxNumber": 0,
- "salt": "string",
- "signature": "string"
}Returns session data according to an authToken.
** Note, that it contains the relevant data twice, one time in the deprecated object access and one in the new
form, claims. Don't use access, it will be removed.**
| AuthToken required | any Examples:
|
{- "token": "static:person:sample_group_test_xxx",
- "displayName": "sample_group/test/xxx",
- "claims": {
- "test": [
- {
- "label": "Reduced Booklet",
- "id": "BOOKLET.SAMPLE-2",
- "type": "test",
- "flags": {
- "locked": true,
- "running": true
}
}, - {
- "label": "Sample booklet",
- "id": "BOOKLET.SAMPLE-1",
- "type": "test",
- "flags": {
- "locked": false,
- "running": true
}
}, - {
- "label": "Similar Booklet to Sample 1",
- "id": "BOOKLET.SAMPLE-3",
- "type": "test",
- "flags": {
- "locked": false,
- "running": false
}
}
]
}, - "access": {
- "test": [
- "BOOKLET.SAMPLE-1",
- "BOOKLET.SAMPLE-2",
- "BOOKLET.SAMPLE-3"
]
}, - "customTexts": { },
- "flags": [ ]
}Verifies a solved proof-of-work challenge and starts the requested session.
| algorithm required | string Enum: "SHA-1" "SHA-256" "SHA-512" |
| challenge required | string |
| salt required | string |
| signature required | string |
| number required | integer >= 0 |
{- "algorithm": "SHA-256",
- "challenge": "1ee58f58dca8fce65a63bdc02b3a2346e9c1fe7be4a2edf7593061a34c7c2f3f",
- "salt": "000000000000000000000000?loginType=admin&name=super&password=user123&",
- "signature": "aac6f23c76800951465f0dac364077d270f463659f8e8c0d79c51c3668bc047c",
- "number": 0
}{- "token": "static:admin:super",
- "displayName": "super",
- "loginName": "super",
- "groupLabel": null,
- "id": 1,
- "pwSetByAdmin": false,
- "customTexts": { },
- "flags": [ ],
- "claims": {
- "workspaceAdmin": [
- {
- "id": "1",
- "type": "workspaceAdmin",
- "label": "sample_workspace",
- "flags": {
- "mode": "RW"
}
}, - {
- "id": "2",
- "type": "workspaceAdmin",
- "label": "second_workspace",
- "flags": {
- "mode": "RW"
}
}
], - "superAdmin": [ ]
}, - "groupToken": null,
- "viewSettings": [ ],
- "access": {
- "workspaceAdmin": [
- "1",
- "2"
], - "superAdmin": [ ]
}
}Starts a Session as Admin by Username and password
| name | string Username |
| password | string Password |
{- "name": "super",
- "password": "user123"
}{- "token": "user000000000.0000000000",
- "displayName": "super",
- "access": {
- "workspaceAdmin": [
- 1
], - "superAdmin": [ ]
}
}Starts a Session as Login to run a test by Username and password If the login requires a subsequent code insertion, you get a session with no access and the request for a password. Otherwise a set of accessible booklets will be retrieved.
| name | string Username |
| password | string Password |
{- "name": "test",
- "password": "user123"
}{- "token": "static_login_sample_login",
- "displayName": "sample_group/test",
- "access": { },
- "claims": { },
- "customTexts": { },
- "flags": [
- "codeRequired"
]
}Starts a Session for a Person to run a test, on the basis of LoginToken (!) which is Part II of the Two-Factor Authentication for code-requiring logins. Get a token for a person belonging to a login, as defined in a Testtakers.xml-file, together with some information about this person
| AuthToken required | any Example: l:user000000000.test0000000 auth-token for a login-session |
| code | string |
{- "code": "xxx"
}{- "token": "static_person_xxx",
- "displayName": "sample_group/test/xxx",
- "loginName": "xxx",
- "groupLabel": "sample_group",
- "access": {
- "test": [
- "BOOKLET.SAMPLE-1"
]
}, - "claims": {
- "test": [
- {
- "id": "BOOKLET.SAMPLE-1",
- "label": "a sample booklet",
- "type": "test",
- "flags": {
- "running": false,
- "locked": true
}
}
]
}, - "customTexts": { },
- "flags": [ ]
}get a list of all workspaces belonging to a given user
| user_id required | integer Example: 1 user-id |
| AuthToken required | any Example: a:user000000000.superadmin0 auth-token for admin-user with super-admin privilege |
[- {
- "id": "1",
- "name": "example_workspace",
- "selected": false,
- "role": ""
}
]returns a specific SysCheck configuation this endpoint does not need any authetication!
| ws_id required | integer Example: 1 workspace-id |
| sys_check_name required | string Example: SYSCHECK.SAMPLE name of the SysCheck (as stored in the XML) |
{- "name": "string",
- "label": "string",
- "questions": [
- {
- "id": 1,
- "type": "select",
- "prompt": "What is the capital of Switzerland?",
- "options": [
- "Bern",
- "Zurich"
], - "required": false
}
], - "hasUnit": true,
- "canSave": true,
- "customTexts": { },
- "skipNetwork": true,
- "downloadSpeed": {
- "min": 1875000,
- "good": 3750000,
- "maxDevianceBytesPerSecond": 100000,
- "maxErrorsPerSequence": 0,
- "maxSequenceRepetitions": 15,
- "sequenceSizes": [
- 400000,
- 800000,
- 1600000,
- 3200000
]
}, - "uploadSpeed": {
- "min": 1875000,
- "good": 3750000,
- "maxDevianceBytesPerSecond": 100000,
- "maxErrorsPerSequence": 0,
- "maxSequenceRepetitions": 15,
- "sequenceSizes": [
- 400000,
- 800000,
- 1600000,
- 3200000
]
}, - "workspaceId": 0
}receives any package and returns information about size and time - for speedtests in system-checks
1324567890123456{- "requestTime": 0,
- "packageReceivedSize": 16
}[- {
- "workspaceId": 1,
- "name": "SYSCHECK.SAMPLE",
- "label": "An example SysCheck definition",
- "description": "An example SysCheck definition with long description"
}
]save the results of a performed SysCheck
| ws_id required | integer Example: 1 workspace-id |
| sys_check_name required | string Example: SYSCHECK.SAMPLE name of the SysCheck (as stored in the XML) |
{- "keyPhrase": "saveme",
- "title": "dsk",
- "environment": [
- {
- "id": "0",
- "type": "environment",
- "label": "Betriebssystem",
- "value": "Linux",
- "warning": false
}, - {
- "id": "0",
- "type": "network",
- "label": "Downloadgeschwindigkeit",
- "value": "68.01 Mbit/s",
- "warning": false
}
], - "questionnaire": [ ],
- "unit": [
- {
- "id": "0",
- "type": "unit/player",
- "label": "loading time",
- "value": "27",
- "warning": false
}
]
}returns publicly available parts of system config - version number - customTexts for UI - uris of additional services - serverTimestamp (in milliseconds) - supported browsers - supported major versions of the XML schemas
{- "version": "19.0.0",
- "customTexts": { },
- "appConfig": { },
- "veronaPlayerApiVersionMin": 2,
- "veronaPlayerApiVersionMax": 4,
- "xmlSchemaVersions": {
- "Booklet": {
- "repo": "testcenter-booklet-xml",
- "min": 18,
- "max": 18
}, - "Testtakers": {
- "repo": "testcenter-testtaker-xml",
- "min": 17,
- "max": 18
}, - "Unit": {
- "repo": "unit-xml",
- "min": 17,
- "max": 17
}, - "SysCheck": {
- "repo": "testcenter-syscheck-xml",
- "min": 18,
- "max": 18
}
}, - "supportedBrowsers": [
- "chrome 131",
- "firefox 133"
], - "passwordMinLength": 7,
- "passwordPattern": "^\\d+$"
}returns publicly available parts of system config - version number - customTexts for UI - uris of additional services - serverTimestamp (in milliseconds) - supported browsers - supported major versions of the XML schemas
{- "version": "19.0.0",
- "customTexts": { },
- "appConfig": { },
- "veronaPlayerApiVersionMin": 2,
- "veronaPlayerApiVersionMax": 4,
- "xmlSchemaVersions": {
- "Booklet": {
- "repo": "testcenter-booklet-xml",
- "min": 18,
- "max": 18
}, - "Testtakers": {
- "repo": "testcenter-testtaker-xml",
- "min": 17,
- "max": 18
}, - "Unit": {
- "repo": "unit-xml",
- "min": 17,
- "max": 17
}, - "SysCheck": {
- "repo": "testcenter-syscheck-xml",
- "min": 18,
- "max": 18
}
}, - "supportedBrowsers": [
- "chrome 131",
- "firefox 133"
], - "passwordMinLength": 7,
- "passwordPattern": "^\\d+$"
}The AppConfig is a key-values store containing instance-specific settings for the frontend analogous to the CustomTexts, except that the values could be objects as well - they would become stringyfied then.
| AuthToken required | any Example: a:user000000000.superadmin0 auth-token for admin-user with super-admin privilege |
{- "key": "value-pairs, values can be are",
- "whatever": "you want",
- "maybe": {
- "an": "object"
}, - "or": [
- "an",
- "array"
], - "even": null
}The CustomTexts is a key-values store containing instance-specific settings for the frontend analogous to the AppConfig. The Endpoint accepts anything as value, but CustomTexts should normally only contain string-values.
| AuthToken required | any Example: a:user000000000.superadmin0 auth-token for admin-user with super-admin privilege |
{- "key": "value",
- "another_key": "another_value"
}get a list of all workspaces
| AuthToken required | any Example: a:user000000000.superadmin0 auth-token for admin-user with super-admin privilege |
[- {
- "id": 1,
- "name": "example_workspace",
- "latest_modification_ts": "2023-01-16 09:00:00"
}
]deletes a list of workspaces given by their ids. * requires the password of the performing user for security reasons
| AuthToken required | any Example: a:user000000000.superadmin0 auth-token for admin-user with super-admin privilege |
| ws required | Array of integers list of Workspace-Id |
| p required | string performing user's password |
{- "ws": [
- 2
], - "p": "user123"
}returns info about all registered users.
| AuthToken required | any Example: a:user000000000.superadmin0 auth-token for admin-user with super-admin privilege |
[- {
- "name": "super",
- "id": "1",
- "email": null,
- "isSuperadmin": true
}
]deletes a list of given user-ids. ids wich did not exist get skipped; in other words there is no check if the user exists beforeheand. * requires the password of the performing user for security reasons
| AuthToken required | any Example: a:user000000000.superadmin0 auth-token for admin-user with super-admin privilege |
| u | Array of strings |
| p | string performing user's password |
{- "u": [
- 2
], - "p": "user123"
}changes user roles for a given user in several workspaces. Provide user-name, not user-id!
| user_id required | integer Example: 1 user-id |
| AuthToken required | any Example: a:user000000000.superadmin0 auth-token for admin-user with super-admin privilege |
required | Array of objects array of pairs role-id |
{- "ws": [
- {
- "role": "RW",
- "id": 1
}
]
}adds a user
| AuthToken required | any Example: a:user000000000.superadmin0 auth-token for admin-user with super-admin privilege |
{- "n": "thirdUser",
- "p": "thirdUsersPassword"
}1changes the password of a given user. Can be called by super admin for all other admins or by the affected workspace admins themselves. * if user_id is the performing user's own id (self-service change), oldPassword is required and is checked against the performing user's current password * if a super-admin resets another user's password, oldPassword is not required
| user_id required | integer Example: 2 user-id |
| AuthToken required | any Example: a:user000000000.superadmin0 auth-token for admin-user with super-admin privilege |
| p | string the new password |
| oldPassword | string the performing user's current password; required only for a self-service password change |
{- "p": "secondUsersNewPassword",
- "oldPassword": "myCurrentPassword"
}changes the super-admin status of a given user. * requires a super-admin * requires the password of the performing user for security reasons * new_status is on or off
| user_id required | integer Example: 2 user-id |
| new_status required | string Example: on super-user status of the given user |
| AuthToken required | any Example: a:user000000000.superadmin0 auth-token for admin-user with super-admin privilege |
| p | string performing user's password |
{- "p": "user123"
}adds a workspace with given name
| AuthToken required | any Example: a:user000000000.superadmin0 auth-token for admin-user with super-admin privilege |
| name required | string workspace name |
{- "name": "new work space"
}3returns basic information about a workspace
| ws_id required | integer Example: 1 workspace-id |
| AuthToken required | any Example: a:user000000000.superadmin0 auth-token for admin-user with super-admin privilege |
{- "id": 1,
- "name": "example_workspace",
- "role": "RW"
}renames a workspace with given id
| ws_id required | integer Example: 1 workspace-id |
| AuthToken required | any Example: a:user000000000.superadmin0 auth-token for admin-user with super-admin privilege |
| name | string Password |
{- "name": "a new york space"
}changes user roles in given workspaces
| ws_id required | integer Example: 1 workspace-id |
| AuthToken required | any Example: a:user000000000.superadmin0 auth-token for admin-user with super-admin privilege |
required | Array of objects array of pairs role-id |
{- "u": [
- {
- "role": "RW",
- "id": 1
}
]
}returns info about all registered users in a workspace.
| ws_id required | integer Example: 1 workspace-id |
| AuthToken required | any Example: a:user000000000.superadmin0 auth-token for admin-user with super-admin privilege |
[- {
- "name": "super",
- "id": "1",
- "selected": true,
- "role": "RW"
}
]changes the password of a given user. Can be called by super admin for all other admins or by the affected workspace admins themselves. * if user_id is the performing user's own id (self-service change), oldPassword is required and is checked against the performing user's current password * if a super-admin resets another user's password, oldPassword is not required
| user_id required | integer Example: 2 user-id |
| AuthToken required | any Example: a:user000000000.superadmin0 auth-token for admin-user with super-admin privilege |
| p | string the new password |
| oldPassword | string the performing user's current password; required only for a self-service password change |
{- "p": "secondUsersNewPassword",
- "oldPassword": "myCurrentPassword"
}retrieves a list of unit- and booklet results for a given workspace
| ws_id required | integer Example: 1 id of a workspace |
| AuthToken | any Example: s:user000000000.0000000000 auth-token for studyMonitor user containing a personToken |
[- {
- "groupName": "sample_group",
- "bookletsStarted": 2,
- "numUnitsMin": 0,
- "numUnitsMax": 1,
- "numUnitsTotal": 1,
- "numUnitsAvg": 0.5,
- "lastChange": 2021
}
]retrieves a file form a given workspace by filename
| ws_id required | integer Example: 1 workspace-id |
| type required | string Example: Unit file type - Testtakers | Booklet | Resource | Unit | SysCheck - CASE SENSITIVE! |
| filename required | string Example: SAMPLE_UNIT.XML filename. - CASE SENSITIVE! |
required | object (auth) Example: a:user000000000.ro00000000 auth-token for admin-user with role at least "RO" (read only) for this workspace |
returns a Log report in JSON or CSV format based on aggregated unit and booklet log data
| ws_id required | integer Example: 1 workspace-id |
| dataIds | Array of strings Example: dataIds=review_group&dataIds=sample_group a comma separated list of report data-ids |
| AuthToken required | any Example: a:user000000000.superadmin0 auth-token for admin-user with role at least "RO" (read only) for this workspace |
| Accept | any Example: text/csv Expected response Mimetype: 'text/csv' or 'application/json' (the default) |
"groupname";"loginname";"code";"bookletname";"unitname";"originalUnitId";"timestamp";"logentry" "sample_group";"test";"xxx";"BOOKLET.SAMPLE-1";"UNIT.SAMPLE";"UNIT.SAMPLE";"1627545600000";"sample unit log" "sample_group";"test";"xxx";"BOOKLET.SAMPLE-1";"";"";"1627545600000";"sample log entry"
returns a Item Responses report in JSON or CSV format based on aggregated report data
| ws_id required | integer Example: 1 workspace-id |
| dataIds | Array of strings Example: dataIds=review_group&dataIds=sample_group a comma separated list of report data-ids |
| AuthToken required | any Example: a:user000000000.superadmin0 auth-token for admin-user with role at least "RO" (read only) for this workspace |
| Accept | any Example: text/csv Expected response Mimetype: 'text/csv' or 'application/json' (the default) |
"groupname";"loginname";"code";"bookletname";"unitname";"originalUnitId";"responses";"laststate" "sample_group";"test";"xxx";"BOOKLET.SAMPLE-1";"UNIT.SAMPLE";"UNIT.SAMPLE";"[{""id"":""1:UNIT.SAMPLE:v2"",""content"":""[{\""id\"":\""v2\"",\""value\"":[\""image:h5ki-bd-va4dg-jc2to2mp_6tga4teiw.png\""],\""status\"":\""VALUE_CHANGED\""}]"",""ts"":1627545600000,""responseType"":""iqb-standard@1.0""},{""id"":""all"",""content"":""{\""name\"":\""Sam Sample\"",\""age\"":34}"",""ts"":1627545600000,""responseType"":""example-data-format""}]";"{""PRESENTATIONCOMPLETE"": ""yes""}"
returns a Review report in JSON or CSV format based on aggregated unit and booklet review data
| ws_id required | integer Example: 1 workspace-id |
| dataIds | Array of strings Example: dataIds=review_group&dataIds=sample_group a comma separated list of report data-ids |
| useNewVersion | string Examples:
triggers the new enhanced format of reviews. set to true or false (false is default) |
| AuthToken required | any Example: a:user000000000.superadmin0 auth-token for admin-user with role at least "RO" (read only) for this workspace |
| Accept | any Example: text/csv Expected response Mimetype: 'text/csv' or 'application/json' (the default) |
"groupname";"loginname";"code";"bookletname";"unitname";"priority";"category: content";"reviewtime";"entry";"page";"pagelabel";"originalUnitId";"userAgent" "sample_group";"test";"xxx";"BOOKLET.SAMPLE-1";"UNIT.SAMPLE";"1";"X";"2021-07-29 10:00:00";"mario: this is a sample unit review";"1";"page-1";"UNIT.SAMPLE";"Firefox/126.0" "sample_group";"test";"xxx";"BOOKLET.SAMPLE-1";"";"1";"X";"2021-07-29 10:00:00";"luigi: sample booklet review";;;"";"Firefox/126.0"
returns a System Check report in JSON or CSV format based on aggregated report data
| ws_id required | integer Example: 1 workspace-id |
| dataIds | Array of strings Example: dataIds=SYSCHECK.SAMPLE a comma separated list of report data-ids |
| AuthToken required | any Example: a:user000000000.superadmin0 auth-token for admin-user with role at least "RO" (read only) for this workspace |
| Accept | any Example: text/csv Expected response Mimetype: 'text/csv' or 'application/json' (the default) |
"Titel";"SysCheck-Id";"SysCheck";"Responses";"DatumTS";"Datum";"FileName";"Betriebssystem";"Betriebssystemversion";"Bildschirmauflösung";"Browser";"Browser-Cookies aktiviert";"Browser-Plugins";"Browsersprache";"Browserversion";"CPU-Architektur";"CPU-Kerne";"Fenstergröße";"Downloadgeschwindigkeit";"Downloadgeschwindigkeit benötigt";"Downloadbewertung";"Uploadgeschwindigkeit";"Uploadgeschwindigkeit benötigt";"Uploadbewertung";"Gesamtbewertung";"RoundTrip in ms";"Netzwerktyp nach Leistung";"Downlink MB/s";"Name";"Who am I?";"Why so serious?";"Check this out";"All we here is";"loading time" "SAMPLE SYS-CHECK REPORT";"SYSCHECK.SAMPLE";"An example SysCheck definition";"";"1627545600";"2021-07-29 10:00:00";"SAMPLE_SYSCHECK-REPORT.JSON";"Linux";"x86_64";"1680 x 1050";"Chrome";"1";"Chromium PDF Plugin, Chromium PDF Viewer";"en-US";"79";"amd64";"8";"1680 x 914";"75.72 Mbit/s";"8.19 kbit/s";"good";"2.84 Mbit/s";"8.19 kbit/s";"good";"good";"100";"4g";"1.45";"Sam Sample";"Harvy Dent";"Because.";"1";"Radio Gaga";"1594.295166015625"
deletes all results and monitor data of a group of groups
| ws_id required | integer Example: 1 workspace-id |
| AuthToken required | any Example: a:user000000000.rw00000000 auth-token for admin-user with role "RW" (read/write) for this workspace |
| groups | Array of strings array of group names |
{- "groups": [
- "sample_group"
]
}retrieves test sessions with non-empty laststate for a given workspace, grouped by group names
| ws_id required | integer Example: 1 workspace-id |
| AuthToken required | any Example: a:user000000000.superadmin0 auth-token for admin-user with role at least "RO" (read only) for this workspace |
{- "sample_group": [
- {
- "loginName": "test_login",
- "groupName": "sample_group",
- "groupLabel": "Sample Group",
- "code": "ABC123",
- "nameSuffix": "",
- "bookletName": "BOOKLET.SAMPLE-1",
- "bookletLabel": "Sample Booklet 1"
}
]
}deletes all response data for specific person sessions (identified by login name + person code combinations)
| ws_id required | integer Example: 1 workspace-id |
| AuthToken required | any Example: a:user000000000.rw00000000 auth-token for admin-user with role "RW" (read/write) for this workspace |
required | Array of objects array of person session identifiers (login name + code combinations) |
{- "personSessions": [
- {
- "loginName": "test",
- "code": "xxx",
- "nameSuffix": "",
- "bookletName": "BOOKLET.SAMPLE-1"
}
]
}retrieves a list of unit- and booklet results for a given workspace and groups
| ws_id required | integer Example: 1 workspace-id |
| groups | string Example: groups=sample_group,review_group comma-separated list of group names to filter results by |
| AuthToken required | any Example: a:user000000000.superadmin0 auth-token for admin-user with role at least "RO" (read only) for this workspace |
[- {
- "groupName": "sample_group",
- "bookletsStarted": 2,
- "numUnitsMin": 0,
- "numUnitsMax": 1,
- "numUnitsTotal": 1,
- "numUnitsAvg": 0.5,
- "lastChange": 2021
}
]get a list of all files in workspace
| ws_id required | integer Example: 1 workspace-id |
| AuthToken required | any Example: a:user000000000.superadmin0 auth-token for admin-user with role at least "RO" (read only) for this workspace |
{- "Booklet": [
- {
- "name": "SAMPLE_BOOKLET.XML",
- "size": 1353,
- "modificationTime": 1627545600,
- "type": "Booklet",
- "id": "BOOKLET.SAMPLE-1",
- "report": [ ],
- "dependencies": [ ],
- "info": {
- "label": "Sample booklet",
- "description": "This a sample booklet for testing/development/showcase purposes."
}
}, - {
- "name": "SAMPLE_BOOKLET2.XML",
- "size": 3155,
- "modificationTime": 1627545600,
- "type": "Booklet",
- "id": "BOOKLET.SAMPLE-2",
- "report": [ ],
- "dependencies": [ ],
- "info": {
- "label": "Adaptive Booklet",
- "description": "This Booklet demonstrates the adaptivity features."
}
}, - {
- "name": "SAMPLE_BOOKLET3.XML",
- "size": 1284,
- "modificationTime": 1627545600,
- "type": "Booklet",
- "id": "BOOKLET.SAMPLE-3",
- "report": [ ],
- "dependencies": [ ],
- "info": {
- "label": "Similar Booklet to Sample 1",
- "description": "\n This booklet has the same species as sample Booklet 1. The term booklet species indicates that both booklets can\n be controlled by the group-monitor as if they where the same.\n The species is currently defined as having the same number of testlets on the first level (called blocks). This\n definition may change later."
}
}
], - "SysCheck": [
- {
- "name": "SAMPLE_SYSCHECK.XML",
- "size": 1232,
- "modificationTime": 1673525827,
- "type": "SysCheck",
- "id": "SYSCHECK.SAMPLE",
- "report": [ ],
- "dependencies": [ ],
- "info": {
- "label": "Systemcheck Beispiel",
- "description": "Beschreibungstext für den Systemcheck"
}
}
], - "Testtakers": [
- {
- "name": "SAMPLE_TESTTAKERS.XML",
- "size": 3631,
- "modificationTime": 1627545600,
- "type": "Testtakers",
- "id": "SAMPLE_TESTTAKERS.XML",
- "report": [ ],
- "dependencies": [ ],
- "info": {
- "label": "",
- "description": "This file contains some logins for testing and works a sample for developers.",
- "testtakers": 15
}
}
], - "Unit": [
- {
- "name": "SAMPLE_UNIT.XML",
- "size": 1543,
- "modificationTime": 1627545600,
- "type": "Unit",
- "id": "UNIT.SAMPLE",
- "report": {
- "info": [
- "`1` attachment(s) requested."
]
}, - "dependencies": [ ],
- "info": {
- "label": "A sample unit",
- "description": "This is a sample unit showing the possibilities of the sample player."
}
}, - {
- "name": "SAMPLE_UNIT2.XML",
- "size": 2188,
- "modificationTime": 1627545600,
- "type": "Unit",
- "id": "UNIT.SAMPLE-2",
- "report": {
- "warning": [
- "Element `/Unit/Definition/@type` is deprecated."
]
}, - "dependencies": [ ],
- "info": {
- "label": "A sample unit",
- "description": "This is an Unit"
}
}
], - "Resource": [
- {
- "name": "SAMPLE_UNITCONTENTS.HTM",
- "size": 15746,
- "modificationTime": 1627545600,
- "type": "Resource",
- "id": "SAMPLE_UNITCONTENTS.HTM",
- "report": [ ],
- "dependencies": [ ],
- "info": {
- "label": "",
- "description": ""
}
}, - {
- "name": "coding-scheme.vocs.json",
- "size": 5187,
- "modificationTime": 1627545600,
- "type": "Resource",
- "id": "CODING-SCHEME.VOCS.JSON",
- "report": [ ],
- "dependencies": [ ],
- "info": {
- "label": "",
- "description": ""
}
}, - {
- "name": "sample_resource_package.itcr.zip",
- "size": 412,
- "modificationTime": 1627545600,
- "type": "Resource",
- "id": "SAMPLE_RESOURCE_PACKAGE.ITCR.ZIP",
- "report": {
- "info": [
- "Contains 0 files."
]
}, - "dependencies": [ ],
- "info": {
- "label": "",
- "description": ""
}
}, - {
- "name": "verona-player-simple-6.0.html",
- "size": 38845,
- "modificationTime": 1627545600,
- "type": "Resource",
- "id": "VERONA-PLAYER-SIMPLE-6.0",
- "report": {
- "info": [
- "Verona-Version: 6.0"
], - "warning": [ ]
}, - "dependencies": [ ],
- "info": {
- "label": "Simple HTML Player",
- "description": "This is a simple, dependency-less, vanilla-js-written, but full-featured unit player, mainly as showcase for developers and for software-testing. It does implement the Verona 4.0.0-Standard and can be used for units containing simple any content in HTML-format. Unit Description ist the <code>form-content as HTML. Just give some names to the form element, and the player does the rest. Use some special Ids for some special buttons.",
- "veronaModuleType": "player",
- "veronaVersion": "6.0",
- "version": "6.0.0"
}
}
]
}deletes files from a workspace
| ws_id required | integer Example: 1 workspace-id |
| AuthToken required | any Example: a:user000000000.rw00000000 auth-token for admin-user with role "RW" (read/write) for this workspace |
| f | Array of strings array of file names |
{- "f": [
- "SysCheck/SAMPLE_SYSCHECK.XML",
- "Unit/SAMPLE_UNIT.XML",
- "some rubbish",
- "a/b",
- "../../README.md"
]
}{- "deleted": [
- "SysCheck/SAMPLE_SYSCHECK.XML"
], - "did_not_exist": [
- "some rubbish",
- "a/b"
], - "not_allowed": [
- "../../README.md"
], - "was_used": [
- "Unit/SAMPLE_UNIT.XML"
]
}get a list of all files with their in workspace
| ws_id required | integer Example: 1 workspace-id |
| AuthToken required | any Example: a:user000000000.superadmin0 auth-token for admin-user with role at least "RO" (read only) for this workspace |
| body | Array of strings array of file names |
{- "body": [
- "SAMPLE_TESTTAKERS.XML",
- "SAMPLE_BOOKLET.XML",
- "SAMPLE_BOOKLET2.XML",
- "SAMPLE_BOOKLET3.XML",
- "SAMPLE_SYSCHECK.XML",
- "SAMPLE_UNIT.XML",
- "SAMPLE_UNIT2.XML",
- "sample_resource_package.itcr.zip",
- "SAMPLE_UNITCONTENTS.HTM",
- "verona-player-simple-6.0.html"
]
}{- "Booklet": [
- {
- "name": "SAMPLE_BOOKLET.XML",
- "size": 1397,
- "modificationTime": 1673525827,
- "type": "Booklet",
- "id": "BOOKLET.SAMPLE-1",
- "report": [ ],
- "dependencies": [
- {
- "object_name": "SAMPLE_UNIT.XML",
- "relationship_type": "containsUnit"
}, - {
- "object_name": "SAMPLE_UNIT2.XML",
- "relationship_type": "containsUnit"
}, - {
- "object_name": "verona-player-simple-6.0.html",
- "relationship_type": "usesPlayer"
}, - {
- "object_name": "SAMPLE_UNITCONTENTS.HTM",
- "relationship_type": "isDefinedBy"
}, - {
- "object_name": "sample_resource_package.itcr.zip",
- "relationship_type": "usesPlayerResource"
}
], - "info": {
- "label": "Sample booklet",
- "description": "This a sample booklet for testing/development/showcase purposes."
}
}, - {
- "name": "SAMPLE_BOOKLET2.XML",
- "size": 557,
- "modificationTime": 1673525827,
- "type": "Booklet",
- "id": "BOOKLET.SAMPLE-2",
- "report": [ ],
- "dependencies": [
- {
- "object_name": "SAMPLE_UNIT.XML",
- "relationship_type": "containsUnit"
}, - {
- "object_name": "SAMPLE_UNIT2.XML",
- "relationship_type": "containsUnit"
}, - {
- "object_name": "verona-player-simple-6.0.html",
- "relationship_type": "usesPlayer"
}, - {
- "object_name": "SAMPLE_UNITCONTENTS.HTM",
- "relationship_type": "isDefinedBy"
}, - {
- "object_name": "sample_resource_package.itcr.zip",
- "relationship_type": "usesPlayerResource"
}
], - "info": {
- "label": "Reduced Booklet",
- "description": ""
}
}, - {
- "name": "SAMPLE_BOOKLET3.XML",
- "size": 1277,
- "modificationTime": 1673525827,
- "type": "Booklet",
- "id": "BOOKLET.SAMPLE-3",
- "report": [ ],
- "dependencies": [
- {
- "object_name": "SAMPLE_UNIT.XML",
- "relationship_type": "containsUnit"
}, - {
- "object_name": "SAMPLE_UNIT2.XML",
- "relationship_type": "containsUnit"
}, - {
- "object_name": "verona-player-simple-6.0.html",
- "relationship_type": "usesPlayer"
}, - {
- "object_name": "SAMPLE_UNITCONTENTS.HTM",
- "relationship_type": "isDefinedBy"
}, - {
- "object_name": "sample_resource_package.itcr.zip",
- "relationship_type": "usesPlayerResource"
}
], - "info": {
- "label": "Similar Booklet to Sample 1",
- "description": "some description"
}
}
], - "SysCheck": [
- {
- "name": "SAMPLE_SYSCHECK.XML",
- "size": 1232,
- "modificationTime": 1673525827,
- "type": "SysCheck",
- "id": "SYSCHECK.SAMPLE",
- "report": [ ],
- "dependencies": [
- {
- "object_name": "SAMPLE_UNIT.XML",
- "relationship_type": "containsUnit"
}, - {
- "object_name": "verona-player-simple-6.0.html",
- "relationship_type": "usesPlayer"
}, - {
- "object_name": "SAMPLE_UNITCONTENTS.HTM",
- "relationship_type": "isDefinedBy"
}
], - "info": {
- "label": "An example SysCheck definition",
- "description": "An example SysCheck definition with long description"
}
}
], - "Testtakers": [
- {
- "name": "SAMPLE_TESTTAKERS.XML",
- "size": 2173,
- "modificationTime": 1673525827,
- "type": "Testtakers",
- "id": "SAMPLE_TESTTAKERS.XML",
- "report": [ ],
- "dependencies": [
- {
- "object_name": "SAMPLE_BOOKLET.XML",
- "relationship_type": "hasBooklet"
}, - {
- "object_name": "SAMPLE_BOOKLET2.XML",
- "relationship_type": "hasBooklet"
}, - {
- "object_name": "SAMPLE_BOOKLET3.XML",
- "relationship_type": "hasBooklet"
}, - {
- "object_name": "SAMPLE_UNIT.XML",
- "relationship_type": "containsUnit"
}, - {
- "object_name": "SAMPLE_UNIT2.XML",
- "relationship_type": "containsUnit"
}, - {
- "object_name": "verona-player-simple-6.0.html",
- "relationship_type": "usesPlayer"
}, - {
- "object_name": "SAMPLE_UNITCONTENTS.HTM",
- "relationship_type": "isDefinedBy"
}, - {
- "object_name": "sample_resource_package.itcr.zip",
- "relationship_type": "usesPlayerResource"
}
], - "info": {
- "label": "",
- "description": "This file contains some logins for testing and works a a sample for developers.",
- "testtakers": 10
}
}
], - "Unit": [
- {
- "name": "SAMPLE_UNIT.XML",
- "size": 1278,
- "modificationTime": 1673525827,
- "type": "Unit",
- "id": "UNIT.SAMPLE",
- "report": {
- "info": [
- "`1` attachment(s) requested."
]
}, - "dependencies": [
- {
- "object_name": "verona-player-simple-6.0.html",
- "relationship_type": "usesPlayer"
}, - {
- "object_name": "SAMPLE_UNITCONTENTS.HTM",
- "relationship_type": "isDefinedBy"
}
], - "info": {
- "label": "A sample unit",
- "description": "This is a sample unit showing the possibilities of the sample player."
}
}, - {
- "name": "SAMPLE_UNIT2.XML",
- "size": 1394,
- "modificationTime": 1673525827,
- "type": "Unit",
- "id": "UNIT.SAMPLE-2",
- "report": {
- "warning": [
- "Element `/Unit/Definition/@type` is deprecated."
]
}, - "dependencies": [
- {
- "object_name": "verona-player-simple-6.0.html",
- "relationship_type": "usesPlayer"
}, - {
- "object_name": "sample_resource_package.itcr.zip",
- "relationship_type": "usesPlayerResource"
}
], - "info": {
- "label": "A sample unit",
- "description": "This is an Unit"
}
}
], - "Resource": [
- {
- "name": "SAMPLE_UNITCONTENTS.HTM",
- "size": 14195,
- "modificationTime": 1673525827,
- "type": "Resource",
- "id": "SAMPLE_UNITCONTENTS.HTM",
- "report": [ ],
- "dependencies": [ ],
- "info": {
- "label": "",
- "description": ""
}
}, - {
- "name": "sample_resource_package.itcr.zip",
- "size": 412,
- "modificationTime": 1673525827,
- "type": "Resource",
- "id": "SAMPLE_RESOURCE_PACKAGE.ITCR.ZIP",
- "report": {
- "info": [
- "Contains 0 files."
]
}, - "dependencies": [ ],
- "info": {
- "label": "",
- "description": ""
}
}, - {
- "name": "verona-player-simple-4.0.0.html",
- "size": 34864,
- "modificationTime": 1673525827,
- "type": "Resource",
- "id": "VERONA-PLAYER-SIMPLE-4.0.0.HTML",
- "report": {
- "info": [
- "Verona-Version: 4.0"
]
}, - "dependencies": [ ],
- "info": {
- "label": "Simple HTML Player",
- "description": "This is a simple, dependency-less, vanilla-js-written, but full-featured unit player, mainly as showcase for developers and for software-testing. It does implement the Verona 4.0.0-Standard and can be used for units containing simple any content in HTML-format. Unit Description ist the <code>form-content as HTML. Just give some names to the form element, and the player does the rest. Use some special Ids for some special buttons.",
- "veronaModuleType": "player",
- "veronaVersion": "4.0",
- "version": "4.0.0"
}
}
]
}deletes some System Check reports
| ws_id required | integer Example: 1 workspace-id |
| AuthToken required | any Example: a:user000000000.rw00000000 auth-token for admin-user with role "RW" (read/write) for this workspace |
| checkIds required | Array of strings array of sys-check-Ids |
{- "checkIds": [
- "SYSCHECK.SAMPLE"
]
}{- "deleted": [
- "SysCheck/SAMPLE_SYSCHECK.XML"
], - "did_not_exist": null,
- "not_allowed": null,
- "was_used": null
}returns a list of all sys-check-reports with most important features grouped by the sys-checks.
| ws_id required | integer Example: 1 workspace-id |
| AuthToken required | any Example: a:user000000000.superadmin0 auth-token for admin-user with role at least "RO" (read only) for this workspace |
[- {
- "id": "SYSCHECK.SAMPLE",
- "count": 1,
- "label": "An example SysCheck definition",
- "details": {
- "os": {
- "Linux x86_64": 1
}, - "browser": {
- "Chrome 79": 1
}
}
}
]Uploads a Resource, Unit, Booklet, SysCheck or Testtakers file. The File gets imported to the workspace if it is valid, and passes the cross-validation checks. So a file which depends of a non-existing player will get rejected as well as an invalid xml file.
When a file with the same filename and type exists in the workspace, it gets overwritten! Except if the
internal id (the
The endpoint accepts all kinds of files. Zip-archives get extracted an treated the same as multi-file-upload.
| ws_id required | integer Example: 1 workspace-id |
| AuthToken required | any Example: a:user000000000.rw00000000 auth-token for admin-user with role "RW" (read/write) for this workspace |
| fileforvo required | string upload file |
{- "SAMPLE_UNIT.XML": {
- "warning": [
- "File of name `SAMPLE_UNIT.XML` did already exist and was overwritten."
]
}
}