- What is TestInvite?
- Build Your First Test
- Run Your First Assessment
- Taking the Assessment
- Viewing the Results
- Question Bank Overview
- Common Question Features
- Scoring
- Question Types
- Question Authoring
- Browsing Questions
- Content Blocks
- Media Library
- Metadata Rules & Schema
- Tests Overview
- My Tests
- Creating a Test
- The Test Editor
- Test Settings
- Sections & Pages
- Adding Questions
- Page Builders
- Test Profile
- Reporting
- Test Papers
- Analytics
- Publishing a Test
- Test Library
- Marketplace
- Tasks Overview
- Creating a Task
- Task Dashboard
- Steps
- Task Settings
- Candidates
- Test Sessions
- Sent Mails
- Proctoring
- Analytics
- Analytics Overview
- Test Analytics
- Question Analytics
- Per-Question Analytics
- Results Explorer
- Segment Analysis
Report Input Reference
The Report Input holds the candidate, dates, task and step, the scored result with sections, dimensions and answers by Reporting Name, the benchmark comparison, and the test's reporting settings; result, normy and testReporting can be missing.
The Report Input is the object passed to your function — or straight to the template if the handler has no function. To see a real one, open a completed session and choose Report Input in its actions; dimension names, section titles and Reporting Names are specific to your test, so always build against your own data.
Fields marked may be missing are absent in some situations — an unscored session, a delivery without a benchmark, or some export paths. Guard them in your function.
Session, candidate and context
| Field | Type | Notes |
|---|---|---|
tiid | string | Test session ID. |
status | string | For example "COMPLETE". |
testReference | object | organizationId, testId of the test taken. |
info.testTitle, info.taskTitle, info.stepTitle | string | Display titles. |
initiator.taskId, initiator.roomId, initiator.step.id, initiator.step.title | string | Where the session came from. |
initiator.roomForm | object | Answers to the access form, keyed by field label: roomForm["Employee No"]. |
ticket.info | object | Candidate: fullname, email, credential1 and other identity fields. May be missing. |
meta.group, meta.folder, meta.labels, meta.tagMap | — | The session's group, folder, labels and tags. |
dates.created.text / .timestamp | string / ms | Formatted in the delivery's timezone, e.g. 2026-10-14 09:12 GMT+03:00. |
dates.completed | object or null | null until the session is completed. |
dates.timezone.utc, dates.timezone.label | number / string | For example 3 and "+03:00". |
result — the scored result
result is missing until the session is scored. All scores are raw points; compute percentages yourself (and guard against a totalPoint of 0).
| Field | Notes |
|---|---|
result.stats | point, totalPoint, noOfQuestions, noOfAnswered, noOf100 (full marks), noOf0, noOfPartial, noOfNegative, noOfEmpty (never answered), noOfNotAnswered, negative (sum of negative points). |
result.dimensions | A map keyed by dimension path — "Aptitude", "Aptitude/Verbal" — each value { stats: { point, totalPoint, … } }. Parent paths aggregate their children. |
result.sections[] | title, sectionIndex (order in the test design), sectionInstanceIndex (order shown to the candidate after shuffling), sectionInstanceUUID, stats, dimensions, pages[]. |
result.effects | A map of effects, each { score, count, max }. |
result.tags | A map of tag name → { stats, values: { value → { stats } } }. |
result.extracted | Answers keyed by each question's Reporting Name: selected choice names, typed text, or recording URLs. |
result.serveStats | startsAt, endsAt, timeLimit, timeSpent and activeDuration (seconds), noOfServes, noOfAnswers. |
normy — benchmark comparison
normy is missing when the delivery has no benchmark, and in some export paths.
| Field | Notes |
|---|---|
normy.normativeResult.test | { count, rank, percentile, sten } for the whole test. |
normy.normativeResult.dimensions[name] | The same shape, per dimension path. |
normy.normativeResult.sections[uuid] | The same shape, per section. |
testReporting — the test's reporting settings
testReporting mirrors the test's Reporting tab. It is missing in some export paths.
| Field | Notes |
|---|---|
testReporting.passFail | { active, pass: { min: { score, inclusive }, content: { label, description } }, fail: { content: { label, description } } }. min.score is a fraction from 0 to 1 — 0.6 means 60%. |
testReporting.level | { active, items: [{ from: { value, inclusive }, to: { value, inclusive }, content: { label, description, color } }] }. Values are percentages from 0 to 100. |
testReporting.interpretations | The raw interpretation rules. Matched labels and notes are not included — evaluate the rules in your function if you need them. |
Pass/fail and levels are matched against the rounded overall percentage. Use Math.round(point / totalPoint * 100) to get the same verdict and level as the Standard report. Ready-made matchers are in Recipes.