SessionEnforcementStateOutput
- applicationType: string Format: uuid
Id required - authorityType: string enumrequiredvalues
- L
E G A C Y _ B A C K E N D - P
L A T F O R M
- caliperType: string
Session Id required - lockoutType: object · ProctoringLockoutOutputnullablerequired
Persisted proctoring lockout record with audit fields
- dateType: string Format: date-time
Created requiredthe date-time notation as defined by RFC 3339, section 5.6, for example, 2017-07-21T17:32:28Z
- dateType: string Format: date-time
Last Modified requiredthe date-time notation as defined by RFC 3339, section 5.6, for example, 2017-07-21T17:32:28Z
- expiresType: string Format: date-time
At requiredComputed server-side as startsAt + resolved lockoutDuration (seconds); never accepted from caller.
- idType: string Format: uuidrequired
- lockoutType: string · LockoutStatusenum
Status requiredLockout lifecycle state
values- active
- expired
- revoked
- organizationType: string Format: uuid
Id required - revokedType: string | null Format: date-time
At requiredSet when the lockout was revoked (guide unlock or dispute release); null while active.
- revokedType: string | null Format: uuid
By User Id requiredPlatform user who revoked the lockout; null for system/dispute releases and while active.
- revokeType: string | null
Reason requiredReason recorded at revoke time (e.g. guide_unlock, dispute_strike_release); null while active.
- ruleType: string | null
Slug requiredDenormalized slug of the rule that tripped the lockout. Clients render lockout copy from this slug rather than fetching
triggeringInsightId. Null when the lockout was created without a triggering rule. - scopeType: string | null Format: uuid
Id requiredLtiApplication ID when scopeType='application'; null when scopeType='global'
- scopeType: string · LockoutScopeTypeenum
Type requiredLockout scope discriminator
values- application
- global
- startsType: string Format: date-time
At requiredthe date-time notation as defined by RFC 3339, section 5.6, for example, 2017-07-21T17:32:28Z
- triggeringType: string | null
Caliper Session Id requiredExternal Caliper session id of the triggering session, resolved from
triggeringSessionId. Lets a consumer key a follow-up event (e.g. locked_out_restart) on the same external session id as the rest of the session's events. Null when the lockout has no triggering session or it is not yet materialized. - triggeringType: string | null Format: uuid
Insight Id required - triggeringType: string | null Format: uuid
Session Id requiredInternal insights_session.id of the triggering session (audit pointer); not an external/Caliper id.
- userType: string Format: uuid
Id required
- notificationsType: array object[] · SessionEnforcementNotificationOutput[]required
- disputedType: booleanrequired
- endedType: string Format: date-time
At Time requiredthe date-time notation as defined by RFC 3339, section 5.6, for example, 2017-07-21T17:32:28Z
- enforcementType: object · SessionEnforcementStrikeOutputnullablerequired
The strike group's current state for this notification's strikeKey, or null when the notification carries no consequence. It is the same entry the top-level strikes array carries for that key, shared by every notification in the group — after three AwayFromSeat occurrences all three report the group's current N of M, not the count at the moment each was first shown. The block's requiredAction is what this group demands at its current count; it can disagree with presentationVariant when an active lockout escalates the variant to TERMINAL while the group is still within budget (RESUME). Top-level requiredAction and lockout remain authoritative for session termination.
- insightType: string Format: uuid
Id required - insightType: string
Type Slug required - presentationType: string enum
Variant requiredConsequence severity of this notification alone, independent of sessionContext: INFO carries no consequence, WARNING counts against a strike budget, TERMINAL ends the session. Derived from the pinned policy's accrual rules, never from the slug or the session mode, so a technical insight stays INFO inside a proctored test.
values- I
N F O - W
A R N I N G - T
E R M I N A L
- showType: boolean
Student Message required - signalType: string | null
Id required - startedType: string Format: date-time
At Time requiredthe date-time notation as defined by RFC 3339, section 5.6, for example, 2017-07-21T17:32:28Z
- strikeType: string | null
Key required - versionType: integer | nullrequired
Org-pinned catalog message-bundle version (insights_org_policy.active_message_version), matching the catalog message-bundle numbering so clients resolve slug@version copy. Together with insightTypeSlug this is the canonical server-owned copy key: (insightTypeSlug, version) identifies the message a client renders, and clients must not derive copy from the slug alone. Null when the slug has no resolvable policy snapshot entry.
- organizationType: string Format: uuid
Id required - requiredType: string enum
Action requiredvalues- N
O N E - R
E S U M E - E
N D _ S E S S I O N
- sessionType: string enum
Context requiredThe pinned mode of this session. Carries no consequence meaning on its own — read each notification's presentationVariant for that. UNKNOWN means the mode never reconciled, and such a session never accrues consequence. PROCTORED alone does not enforce: accrual also requires authority PLATFORM (see the authority field). A LEGACY_BACKEND proctored session returns PROCTORED with no strikes and INFO notifications.
values- U
N K N O W N - S
T A N D A R D - P
R O C T O R E D
- signalType: array object[] · SessionEnforcementSignalOutcomeOutput[]
Outcomes required- insightType: string | null Format: uuid
Id required - outcomeType: string enumrequired
SESSION_DISPUTE_SUPPRESSED and SYSTEM_INITIATED are emitted only for sessions pinned to notification contract version 2. SESSION_DISPUTE_SUPPRESSED is a later same-type fact silenced by an active session dispute: it keeps its pinned policy and is not itself disputed, only unpresented. SYSTEM_INITIATED is a verified TimeBack-caused detector transition, auditable but never a warning.
values- A
C C R U E D - N
O T _ E N F O R C E D - D
I S P U T E D - R
E L E A S E D - A
C K N O W L E D G E D - S
E S S I O N _ D I S P U T E _ S U P P R E S S E D - S
Y S T E M _ I N I T I A T E D
- signalType: string
Id required - strikeType: string
Key required
- strikesType: array object[] · SessionEnforcementStrikeOutput[]required
- requiredType: string enum
Action requiredvalues- N
O N E - R
E S U M E - E
N D _ S E S S I O N
- strikeType: integer
Count requiredInteger numbers.
- strikeType: string
Key required - warningType: integer
Budget requiredInteger numbers.
- warningType: integer
Budget Grant requiredGuide-granted additional warnings added to the policy budget for this strike key.
- userType: string Format: uuid
Id required - authorityType: object | null
Error Typed authority failure. INVALID_PAYLOAD is retryable (true) and distinct from INVALID_ARGUMENT. INVALID_ARGUMENT is not retryable.
- codeType: string enumrequiredvalues
- S
T A L E _ R E V I S I O N - S
U P E R S E D E D - P
E N D I N G _ C O N T E X T - A
S S E S S M E N T _ E N D E D - S
E S S I O N _ E N D E D
- messageType: stringrequired
- retryableType: booleanrequired
- authorityType: string | null
Pending Reason Nonblank when notificationAuthorityState is PENDING_CONTEXT.
- authorityType: string | null
Unavailable Reason Nonblank when notificationAuthorityState is UNAVAILABLE.
- currentType: object · IncidentPresentationOutputnullable
Presentation The single live presentation for this session's open incident, or null. Only present for contract version 2 sessions.
- incidentType: string Format: uuid
Id required - insightType: string Format: uuid
Id requiredAuthoritative derived insight id from the incident. Present for INSIGHT and TEST_SUSPENDED presentations. Never derived from request input or render prose.
- insightType: string
Type Slug requiredAuthoritative catalog slug of the triggering insight, taken from the incident's primaryInsightSlug. Present for INSIGHT and TEST_SUSPENDED presentations.
- lockoutType: string | null Format: uuid
Id requiredSet exactly for TERMINAL presentations, which commit a lockout.
- occurrenceType: integer
Number requiredReminder ordinal within the incident, starting at 1.
- offeredType: string Format: date-time
At requiredthe date-time notation as defined by RFC 3339, section 5.6, for example, 2017-07-21T17:32:28Z
- policyType: string enum
Mode requiredvalues- N
O T I F Y - E
N F O R C E
- presentationType: string Format: uuid
Id required - presentationType: string enum
Status requiredvalues- O
F F E R E D - D
I S P L A Y E D - A
C K N O W L E D G E D - D
I S P U T E D - S
U S P E N D E D - S
U S P E N S I O N _ A C K N O W L E D G E D - S
U P E R S E D E D
- presentationType: string enum
Variant requiredvalues- I
N F O - W
A R N I N G - T
E R M I N A L
- render
Payload requiredFully resolved copy for the INSIGHT surface, frozen when the presentation was offered. Clients render these strings verbatim and never author copy.
- acknowledgementType: string
Confirmation Label required - bodyType: string | nullrequired
- bodyType: string | null
Addendum required - canType: boolean
Dispute required - canType: boolean
Submit Feedback required - clientType: string enum
Effect requiredvalues- N
O N E - R
E T U R N _ F U L L _ S C R E E N _ A F T E R _ A C T I O N
- consequenceType: string | null
Text required - contextType: string
Label required - disputeType: string | null
Action Label required - disputeType: string | null
Confirmation Label required - disputeType: integer | null
Max Length requiredInteger numbers.
- disputeType: array object[] · DisputeOption[]
Options requiredOne dispute choice frozen onto the presentation. The client may submit only an id listed here, and only with text the option permits.
- disputeType: string | null
Placeholder required - disputeType: string | null
Required Text required - insightType: string
Coaching required - insightType: string | null
Full Text required - insightType: string
Message required - insightType: string
Name required - insightType: string | null Format: date-time
Timestamp End requiredthe date-time notation as defined by RFC 3339, section 5.6, for example, 2017-07-21T17:32:28Z
- insightType: string Format: date-time
Timestamp Start requiredthe date-time notation as defined by RFC 3339, section 5.6, for example, 2017-07-21T17:32:28Z
- messageType: integer
Version requiredInteger numbers.
- numberType: integer | null
Warnings requiredInteger numbers.
- pillType: string
Label required - primaryenum
Action const:ACKNOWLEDGErequiredvalues- A
C K N O W L E D G E
- primaryType: string
Action Label required - remediationType: string enum
Preview requiredvalues- N
O N E - L
I V E _ W E B C A M
- remediationType: string | null
Preview Aria Label required - remediationType: string | null
Preview Unavailable Text required - requestedType: string
Locale required - resolvedType: string
Locale required - ruleType: object · RuleDisclosure
Disclosure requiredCollapsed rule explanation rendered beneath the notification body.
- schemaType: integer
Version requiredInteger numbers.
- surfaceenum
Kind const:INSIGHTrequiredvalues- I
N S I G H T
- thumbsType: string | null
Down Aria Label required - thumbsType: string | null
Up Aria Label required - titleType: stringrequired
- violationType: string | null
Time Label required - warningType: integer | null
Number requiredInteger numbers.
- warningType: array object[] · WarningProgressSegment[]
Progress Segments requiredOne segment of the warning strip. warningBudget is the terminal threshold: the strip carries warningBudget - 1 WARNING entries plus one TERMINAL (a single TERMINAL when the budget allows no nonterminal warning). WARNING ordinals are contiguous 1..n; TERMINAL ordinal is null.
- renderType: integer
Payload Schema Version requiredInteger numbers.
- revisionType: integerrequired
Bumped whenever the presentation is re-offered. An action naming an older revision is rejected as STALE_REVISION.
- sourceType: object
Horizon Snapshot requiredThe per-source appliedThrough values that authorized this presentation, keyed by source. A later presentation from the same source requires a strictly newer value.
- surfaceType: string enum
Kind requiredvalues- I
N S I G H T - T
E S T _ S U S P E N D E D
- lockoutType: object · LockoutPresentationOutputnullable
Presentation The blocked-relaunch presentation for the current launch attempt, or null. Only present for contract version 2 sessions.
- copyType: object · TestLockedOutRenderPayload
Payload requiredResolved copy for the TEST_LOCKED_OUT surface, carrying both the counting-down and cooldown-over strings so the client needs no second lookup at expiry.
- copyType: integer
Payload Schema Version requiredInteger numbers.
- launchType: string Format: uuid
Attempt Id required - lockoutType: string Format: uuid
Id required - offeredType: string Format: date-time
At requiredthe date-time notation as defined by RFC 3339, section 5.6, for example, 2017-07-21T17:32:28Z
- presentationType: string Format: uuid
Id required - presentationType: string enum
Status requiredvalues- O
F F E R E D - D
I S P L A Y E D - A
C K N O W L E D G E D - S
T A R T E D - S
U P E R S E D E D
- revisionType: integerrequired
Integer numbers.
- notificationType: string enum
Authority State Whether the returned notification state is authoritative right now. PENDING_CONTEXT means the authorizing source cursor has not been received for this session, the source is UNAVAILABLE, required facts declared by the producer are not yet durable, or the authorizing VISION horizon has not yet reached the evidence — so the client retries rather than treating the absent presentation as "nothing to show". It does not depend on how recently the producer last published.
values- C
U R R E N T - P
E N D I N G _ C O N T E X T - I
N V A L I D _ R E Q U E S T - U
N A V A I L A B L E
- notificationType: integer | null enum
Contract Version The contract pinned when this session initialized. Absent or null means the pin is still pending — never treat as version 1. Immutable once pinned for the lifetime of the session.
values- 1
- 2
- notificationType: integer | null
Revision min:0Monotonic session notification revision for the committed poll snapshot. Null for PENDING_CONTEXT/UNAVAILABLE when the frozen transport omits it.
- serverType: string Format: date-time
Time Platform evaluation time for the poll snapshot.
