SessionEnforcementStateOutput

  • applicationId
    Type: string Format: uuid
    required
  • authority
    Type: string enum
    required
    values
    • LEGACY_BACKEND
    • PLATFORM
  • caliperSessionId
    Type: string
    required
  • lockout
    Type: object · ProctoringLockoutOutputnullable
    required

    Persisted proctoring lockout record with audit fields

    • dateCreated
      Type: string Format: date-time
      required

      the date-time notation as defined by RFC 3339, section 5.6, for example, 2017-07-21T17:32:28Z

    • dateLastModified
      Type: string Format: date-time
      required

      the date-time notation as defined by RFC 3339, section 5.6, for example, 2017-07-21T17:32:28Z

    • expiresAt
      Type: string Format: date-time
      required

      Computed server-side as startsAt + resolved lockoutDuration (seconds); never accepted from caller.

    • id
      Type: string Format: uuid
      required
    • lockoutStatus
      Type: string · LockoutStatusenum
      required

      Lockout lifecycle state

      values
      • active
      • expired
      • revoked
    • organizationId
      Type: string Format: uuid
      required
    • revokedAt
      Type: string | null Format: date-time
      required

      Set when the lockout was revoked (guide unlock or dispute release); null while active.

    • revokedByUserId
      Type: string | null Format: uuid
      required

      Platform user who revoked the lockout; null for system/dispute releases and while active.

    • revokeReason
      Type: string | null
      required

      Reason recorded at revoke time (e.g. guide_unlock, dispute_strike_release); null while active.

    • ruleSlug
      Type: string | null
      required

      Denormalized 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.

    • scopeId
      Type: string | null Format: uuid
      required

      LtiApplication ID when scopeType='application'; null when scopeType='global'

    • scopeType
      Type: string · LockoutScopeTypeenum
      required

      Lockout scope discriminator

      values
      • application
      • global
    • startsAt
      Type: string Format: date-time
      required

      the date-time notation as defined by RFC 3339, section 5.6, for example, 2017-07-21T17:32:28Z

    • triggeringCaliperSessionId
      Type: string | null
      required

      External 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.

    • triggeringInsightId
      Type: string | null Format: uuid
      required
    • triggeringSessionId
      Type: string | null Format: uuid
      required

      Internal insights_session.id of the triggering session (audit pointer); not an external/Caliper id.

    • userId
      Type: string Format: uuid
      required
  • notifications
    Type: array object[] · SessionEnforcementNotificationOutput[]
    required
    • disputed
      Type: boolean
      required
    • endedAtTime
      Type: string Format: date-time
      required

      the date-time notation as defined by RFC 3339, section 5.6, for example, 2017-07-21T17:32:28Z

    • enforcement
      Type: object · SessionEnforcementStrikeOutputnullable
      required

      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.

    • insightId
      Type: string Format: uuid
      required
    • insightTypeSlug
      Type: string
      required
    • presentationVariant
      Type: string enum
      required

      Consequence 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
      • INFO
      • WARNING
      • TERMINAL
    • showStudentMessage
      Type: boolean
      required
    • signalId
      Type: string | null
      required
    • startedAtTime
      Type: string Format: date-time
      required

      the date-time notation as defined by RFC 3339, section 5.6, for example, 2017-07-21T17:32:28Z

    • strikeKey
      Type: string | null
      required
    • version
      Type: integer | null
      required

      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.

  • organizationId
    Type: string Format: uuid
    required
  • requiredAction
    Type: string enum
    required
    values
    • NONE
    • RESUME
    • END_SESSION
  • sessionContext
    Type: string enum
    required

    The 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
    • UNKNOWN
    • STANDARD
    • PROCTORED
  • signalOutcomes
    Type: array object[] · SessionEnforcementSignalOutcomeOutput[]
    required
    • insightId
      Type: string | null Format: uuid
      required
    • outcome
      Type: string enum
      required

      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
      • ACCRUED
      • NOT_ENFORCED
      • DISPUTED
      • RELEASED
      • ACKNOWLEDGED
      • SESSION_DISPUTE_SUPPRESSED
      • SYSTEM_INITIATED
    • signalId
      Type: string
      required
    • strikeKey
      Type: string
      required
  • strikes
    Type: array object[] · SessionEnforcementStrikeOutput[]
    required
    • requiredAction
      Type: string enum
      required
      values
      • NONE
      • RESUME
      • END_SESSION
    • strikeCount
      Type: integer
      required

      Integer numbers.

    • strikeKey
      Type: string
      required
    • warningBudget
      Type: integer
      required

      Integer numbers.

    • warningBudgetGrant
      Type: integer
      required

      Guide-granted additional warnings added to the policy budget for this strike key.

  • userId
    Type: string Format: uuid
    required
  • authorityError
    Type: object | null

    Typed authority failure. INVALID_PAYLOAD is retryable (true) and distinct from INVALID_ARGUMENT. INVALID_ARGUMENT is not retryable.

    • code
      Type: string enum
      required
      values
      • STALE_REVISION
      • SUPERSEDED
      • PENDING_CONTEXT
      • ASSESSMENT_ENDED
      • SESSION_ENDED
    • message
      Type: string
      required
    • retryable
      Type: boolean
      required
  • authorityPendingReason
    Type: string | null

    Nonblank when notificationAuthorityState is PENDING_CONTEXT.

  • authorityUnavailableReason
    Type: string | null

    Nonblank when notificationAuthorityState is UNAVAILABLE.

  • currentPresentation
    Type: object · IncidentPresentationOutputnullable

    The single live presentation for this session's open incident, or null. Only present for contract version 2 sessions.

    • incidentId
      Type: string Format: uuid
      required
    • insightId
      Type: string Format: uuid
      required

      Authoritative derived insight id from the incident. Present for INSIGHT and TEST_SUSPENDED presentations. Never derived from request input or render prose.

    • insightTypeSlug
      Type: string
      required

      Authoritative catalog slug of the triggering insight, taken from the incident's primaryInsightSlug. Present for INSIGHT and TEST_SUSPENDED presentations.

    • lockoutId
      Type: string | null Format: uuid
      required

      Set exactly for TERMINAL presentations, which commit a lockout.

    • occurrenceNumber
      Type: integer
      required

      Reminder ordinal within the incident, starting at 1.

    • offeredAt
      Type: string Format: date-time
      required

      the date-time notation as defined by RFC 3339, section 5.6, for example, 2017-07-21T17:32:28Z

    • policyMode
      Type: string enum
      required
      values
      • NOTIFY
      • ENFORCE
    • presentationId
      Type: string Format: uuid
      required
    • presentationStatus
      Type: string enum
      required
      values
      • OFFERED
      • DISPLAYED
      • ACKNOWLEDGED
      • DISPUTED
      • SUSPENDED
      • SUSPENSION_ACKNOWLEDGED
      • SUPERSEDED
    • presentationVariant
      Type: string enum
      required
      values
      • INFO
      • WARNING
      • TERMINAL
    • renderPayload
      required

      Fully resolved copy for the INSIGHT surface, frozen when the presentation was offered. Clients render these strings verbatim and never author copy.

      • acknowledgementConfirmationLabel
        Type: string
        required
      • body
        Type: string | null
        required
      • bodyAddendum
        Type: string | null
        required
      • canDispute
        Type: boolean
        required
      • canSubmitFeedback
        Type: boolean
        required
      • clientEffect
        Type: string enum
        required
        values
        • NONE
        • RETURN_FULL_SCREEN_AFTER_ACTION
      • consequenceText
        Type: string | null
        required
      • contextLabel
        Type: string
        required
      • disputeActionLabel
        Type: string | null
        required
      • disputeConfirmationLabel
        Type: string | null
        required
      • disputeMaxLength
        Type: integer | null
        required

        Integer numbers.

      • disputeOptions
        Type: array object[] · DisputeOption[]
        required

        One dispute choice frozen onto the presentation. The client may submit only an id listed here, and only with text the option permits.

      • disputePlaceholder
        Type: string | null
        required
      • disputeRequiredText
        Type: string | null
        required
      • insightCoaching
        Type: string
        required
      • insightFullText
        Type: string | null
        required
      • insightMessage
        Type: string
        required
      • insightName
        Type: string
        required
      • insightTimestampEnd
        Type: string | null Format: date-time
        required

        the date-time notation as defined by RFC 3339, section 5.6, for example, 2017-07-21T17:32:28Z

      • insightTimestampStart
        Type: string Format: date-time
        required

        the date-time notation as defined by RFC 3339, section 5.6, for example, 2017-07-21T17:32:28Z

      • messageVersion
        Type: integer
        required

        Integer numbers.

      • numberWarnings
        Type: integer | null
        required

        Integer numbers.

      • pillLabel
        Type: string
        required
      • primaryAction
        enum
        const:  
        ACKNOWLEDGE
        required
        values
        • ACKNOWLEDGE
      • primaryActionLabel
        Type: string
        required
      • remediationPreview
        Type: string enum
        required
        values
        • NONE
        • LIVE_WEBCAM
      • remediationPreviewAriaLabel
        Type: string | null
        required
      • remediationPreviewUnavailableText
        Type: string | null
        required
      • requestedLocale
        Type: string
        required
      • resolvedLocale
        Type: string
        required
      • ruleDisclosure
        Type: object · RuleDisclosure
        required

        Collapsed rule explanation rendered beneath the notification body.

      • schemaVersion
        Type: integer
        required

        Integer numbers.

      • surfaceKind
        enum
        const:  
        INSIGHT
        required
        values
        • INSIGHT
      • thumbsDownAriaLabel
        Type: string | null
        required
      • thumbsUpAriaLabel
        Type: string | null
        required
      • title
        Type: string
        required
      • violationTimeLabel
        Type: string | null
        required
      • warningNumber
        Type: integer | null
        required

        Integer numbers.

      • warningProgressSegments
        Type: array object[] · WarningProgressSegment[]
        required

        One 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.

    • renderPayloadSchemaVersion
      Type: integer
      required

      Integer numbers.

    • revision
      Type: integer
      required

      Bumped whenever the presentation is re-offered. An action naming an older revision is rejected as STALE_REVISION.

    • sourceHorizonSnapshot
      Type: object
      required

      The per-source appliedThrough values that authorized this presentation, keyed by source. A later presentation from the same source requires a strictly newer value.

    • surfaceKind
      Type: string enum
      required
      values
      • INSIGHT
      • TEST_SUSPENDED
  • lockoutPresentation
    Type: object · LockoutPresentationOutputnullable

    The blocked-relaunch presentation for the current launch attempt, or null. Only present for contract version 2 sessions.

    • copyPayload
      Type: object · TestLockedOutRenderPayload
      required

      Resolved 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.

    • copyPayloadSchemaVersion
      Type: integer
      required

      Integer numbers.

    • launchAttemptId
      Type: string Format: uuid
      required
    • lockoutId
      Type: string Format: uuid
      required
    • offeredAt
      Type: string Format: date-time
      required

      the date-time notation as defined by RFC 3339, section 5.6, for example, 2017-07-21T17:32:28Z

    • presentationId
      Type: string Format: uuid
      required
    • presentationStatus
      Type: string enum
      required
      values
      • OFFERED
      • DISPLAYED
      • ACKNOWLEDGED
      • STARTED
      • SUPERSEDED
    • revision
      Type: integer
      required

      Integer numbers.

  • notificationAuthorityState
    Type: string enum

    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
    • CURRENT
    • PENDING_CONTEXT
    • INVALID_REQUEST
    • UNAVAILABLE
  • notificationContractVersion
    Type: integer | null enum

    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
  • notificationRevision
    Type: integer | null
    min:  
    0

    Monotonic session notification revision for the committed poll snapshot. Null for PENDING_CONTEXT/UNAVAILABLE when the frozen transport omits it.

  • serverTime
    Type: string Format: date-time

    Platform evaluation time for the poll snapshot.