PresentationLifecycleOutput

One finished-session popup occurrence with lifecycle timestamps, outcomes, and the frozen render payload. Does not expose sourceHorizonSnapshot. Disputed rows may carry nullable student free text on dispute.submittedText.

  • acknowledgedAt
    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

  • actionReceivedAt
    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

  • clientActedAt
    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

  • clientDisplayedAt
    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

  • displayReceivedAt
    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

  • dispute
    Type: object · PresentationDisputeOutcomenullable
    required

    Dispute outcome for one presentation occurrence. Carries selected-option identity (id/ordinal/label, matching SelectedDisputeOptionSnapshotV1 and disputeOptions[] on the render payload) plus nullable free-text submittedText from selectedOptionSnapshot.submittedText (Other / allowsText options). Does not read legacy signal-keyed insights_dispute.reason rows; those stay in unattributableDisputeCount only.

    • consequenceReleasedAt
      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

    • disputedAt
      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

    • releasedStrike
      Type: boolean
      required

      Whether this dispute row released a strike (insights_dispute.strike_released). Distinct from the sibling presentation-level strikeReleased flag, which is driven by a WARNING_RELEASED enforcement event on this presentation.

    • selectedOption
      Type: object | null
      required

      Snapshot of the option the student chose; null when the dispute has no snapshot.

    • submittedText
      Type: string | null
      required

      Student free text frozen on the dispute as selectedOptionSnapshot.submittedText; null when the chosen option forbids text or none was submitted. Distinct from the deprecated insights_dispute.reason column, which is never served here.

  • id
    Type: string Format: uuid
    required
  • incidentId
    Type: string Format: uuid
    required
  • incidentResolutionReason
    Type: string | null enum
    required
    values
    • EVIDENCE_ENDED
    • STUDENT_DISPUTED
    • ASSESSMENT_ENDED
    • SESSION_ENDED
    • TERMINAL_SUSPENSION
  • incidentStatus
    Type: string | null enum
    required
    values
    • OPEN
    • RESOLVED
    • DISPUTED
    • CANCELLED
    • TERMINATED
  • insightId
    Type: string | null Format: uuid
    required
  • occurrenceNumber
    Type: integer
    required

    Integer numbers.

  • 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

  • pinnedWarningBudget
    Type: integer | null
    required

    Integer numbers.

  • policyMode
    Type: string enum
    required
    values
    • NOTIFY
    • ENFORCE
  • 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

    Integer numbers.

  • ruleSlug
    Type: string
    required
  • strikeAccrued
    Type: boolean
    required
  • strikeAccruedAt
    Type: string | null Format: date-time
    required

    Instant of the WARNING_ACCRUED enforcement event. Derived from occurred_at, a UTC-naive timestamp column; production runtimes use TZ=UTC.

  • strikeReleased
    Type: boolean
    required

    Whether a WARNING_RELEASED enforcement event exists for this presentation. Distinct from dispute.releasedStrike, which is the dispute row's own strike_released flag.

  • strikeReleasedAt
    Type: string | null Format: date-time
    required

    Instant of the WARNING_RELEASED enforcement event. Derived from occurred_at, a UTC-naive timestamp column; production runtimes use TZ=UTC.

  • surfaceKind
    Type: string enum
    required
    values
    • INSIGHT
    • TEST_SUSPENDED
  • terminal
    Type: object · PresentationTerminalOutcomenullable
    required

    Lockout and forced-end facts for a TERMINAL presentation occurrence.

    • cooldownDurationSeconds
      Type: integer | null
      required

      Integer numbers.

    • forcedEndAt
      Type: string | null Format: date-time
      required

      Instant of the FORCED_END enforcement event. Derived from occurred_at, a UTC-naive timestamp column; production runtimes use TZ=UTC.

    • lockoutExpiresAt
      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

    • lockoutId
      Type: string Format: uuid
      required
    • lockoutStartsAt
      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