> ## Documentation Index
> Fetch the complete documentation index at: https://synapse-docs.apart.io/llms.txt
> Use this file to discover all available pages before exploring further.

# Preview Bundle Flow

> Stateless dry run of the participant flow: the next page and, once complete, the report.

Works on any bundle, draft included, and writes nothing.



## OpenAPI

````yaml /openapi.json post /v1/organizations/{organization_id}/apps/{app_id}/bundles/{bundle_id}/preview-flow
openapi: 3.1.0
info:
  description: Are we on the same page?
  title: Synapse
  version: 0.1.0
servers: []
security: []
paths:
  /v1/organizations/{organization_id}/apps/{app_id}/bundles/{bundle_id}/preview-flow:
    post:
      tags:
        - v1-platform
      summary: Preview Bundle Flow
      description: >-
        Stateless dry run of the participant flow: the next page and, once
        complete, the report.


        Works on any bundle, draft included, and writes nothing.
      operationId: >-
        preview_bundle_flow_v1_organizations__organization_id__apps__app_id__bundles__bundle_id__preview_flow_post
      parameters:
        - in: path
          name: organization_id
          required: true
          schema:
            format: uuid
            title: Organization Id
            type: string
        - in: path
          name: app_id
          required: true
          schema:
            format: uuid
            title: App Id
            type: string
        - in: path
          name: bundle_id
          required: true
          schema:
            format: uuid
            title: Bundle Id
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PreviewFlowRequest'
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PreviewFlowResult'
          description: Successful Response
        '401':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiErrorResponse'
          description: Authentication required
        '403':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiErrorResponse'
          description: Insufficient scope
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiErrorResponse'
          description: Resource not found
        '422':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiErrorResponse'
          description: Request validation failed
        '500':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiErrorResponse'
          description: Internal server error
      security:
        - BearerAuth: []
        - ApiKeyAuth: []
        - SessionCookie: []
components:
  schemas:
    PreviewFlowRequest:
      additionalProperties: false
      properties:
        history:
          $ref: '#/components/schemas/PreviewFlowHistory'
        include_report:
          default: false
          title: Include Report
          type: boolean
        locale:
          default: en
          maxLength: 35
          minLength: 2
          title: Locale
          type: string
        page_size:
          default: 5
          maximum: 5
          minimum: 1
          title: Page Size
          type: integer
        responses:
          additionalProperties:
            $ref: '#/components/schemas/PreviewFlowAnswer'
          maxProperties: 500
          title: Responses
          type: object
        signals:
          additionalProperties:
            type: number
          maxProperties: 100
          title: Signals
          type: object
      title: PreviewFlowRequest
      type: object
    PreviewFlowResult:
      description: >-
        The page a participant would see next, and the report once the flow is
        complete.
      properties:
        batch:
          $ref: '#/components/schemas/NextQuestionBatch'
        report:
          anyOf:
            - $ref: '#/components/schemas/ParticipantReport'
            - type: 'null'
        session:
          $ref: '#/components/schemas/ParticipantSessionState'
      required:
        - session
        - batch
      title: PreviewFlowResult
      type: object
    ApiErrorResponse:
      additionalProperties: false
      properties:
        detail:
          anyOf:
            - $ref: '#/components/schemas/ErrorDetail'
            - type: string
            - items: {}
              type: array
            - additionalProperties: true
              type: object
          title: Detail
      required:
        - detail
      title: ApiErrorResponse
      type: object
    PreviewFlowHistory:
      additionalProperties: false
      description: >-
        What the events of a real session would have recorded, for signals and
        revisions.
      properties:
        changed_answer_counts:
          additionalProperties:
            maximum: 100000
            minimum: 0
            type: integer
          maxProperties: 500
          title: Changed Answer Counts
          type: object
        elapsed_ms_total:
          default: 0
          maximum: 86400000
          minimum: 0
          title: Elapsed Ms Total
          type: number
        first_answers:
          additionalProperties:
            additionalProperties: true
            type: object
          maxProperties: 500
          title: First Answers
          type: object
        served_question_ids:
          items:
            type: string
          maxItems: 500
          title: Served Question Ids
          type: array
        skipped_question_ids:
          items:
            type: string
          maxItems: 500
          title: Skipped Question Ids
          type: array
      title: PreviewFlowHistory
      type: object
    PreviewFlowAnswer:
      additionalProperties: false
      description: 'One simulated response: the participant''s final state for a question.'
      properties:
        answer:
          anyOf:
            - additionalProperties: true
              type: object
            - type: 'null'
          title: Answer
        state:
          enum:
            - answered
            - declined
            - unknown
          title: State
          type: string
      required:
        - state
      title: PreviewFlowAnswer
      type: object
    NextQuestionBatch:
      description: A server-reserved form batch from the published selection policy.
      properties:
        batch_id:
          title: Batch Id
          type: string
        complete:
          title: Complete
          type: boolean
        progress:
          maximum: 1
          minimum: 0
          title: Progress
          type: number
        questions:
          items:
            discriminator:
              mapping:
                date: '#/components/schemas/ParticipantDateQuestion'
                multi_select: '#/components/schemas/ParticipantMultiSelectQuestion'
                number: '#/components/schemas/ParticipantNumberQuestion'
                number_group: '#/components/schemas/ParticipantNumberGroupQuestion'
                short_text: '#/components/schemas/ParticipantShortTextQuestion'
                single_select: '#/components/schemas/ParticipantSingleSelectQuestion'
              propertyName: input
            oneOf:
              - $ref: '#/components/schemas/ParticipantSingleSelectQuestion'
              - $ref: '#/components/schemas/ParticipantMultiSelectQuestion'
              - $ref: '#/components/schemas/ParticipantShortTextQuestion'
              - $ref: '#/components/schemas/ParticipantNumberQuestion'
              - $ref: '#/components/schemas/ParticipantDateQuestion'
              - $ref: '#/components/schemas/ParticipantNumberGroupQuestion'
          maxItems: 5
          title: Questions
          type: array
        section:
          anyOf:
            - $ref: '#/components/schemas/ParticipantSectionContext'
            - type: 'null'
        trace:
          $ref: '#/components/schemas/ParticipantSelectionTrace'
        why:
          anyOf:
            - type: string
            - type: 'null'
          title: Why
      required:
        - batch_id
        - complete
        - trace
        - progress
      title: NextQuestionBatch
      type: object
    ParticipantReport:
      properties:
        alignment:
          anyOf:
            - additionalProperties: true
              type: object
            - type: 'null'
          title: Alignment
        completed_at:
          anyOf:
            - format: date-time
              type: string
            - type: 'null'
          title: Completed At
        comprehensive:
          anyOf:
            - $ref: '#/components/schemas/ComprehensiveReport'
            - type: 'null'
        confidence:
          additionalProperties:
            type: number
          title: Confidence
          type: object
        coverage:
          additionalProperties:
            type: number
          title: Coverage
          type: object
        created_at:
          format: date-time
          title: Created At
          type: string
        evaluation_id:
          format: uuid
          title: Evaluation Id
          type: string
        guardrail_conflicts:
          items:
            additionalProperties: true
            type: object
          title: Guardrail Conflicts
          type: array
        primary_metric:
          anyOf:
            - additionalProperties: true
              type: object
            - type: 'null'
          title: Primary Metric
        report:
          anyOf:
            - additionalProperties: true
              type: object
            - type: 'null'
          title: Report
        status:
          enum:
            - pending
            - in_progress
            - needs_review
            - completed
            - failed
            - superseded
            - deleted
          title: Status
          type: string
        sub_scores:
          items:
            additionalProperties: true
            type: object
          title: Sub Scores
          type: array
        unanswered_concepts:
          items:
            type: string
          title: Unanswered Concepts
          type: array
      required:
        - evaluation_id
        - status
        - created_at
      title: ParticipantReport
      type: object
    ParticipantSessionState:
      properties:
        branding:
          $ref: '#/components/schemas/ExperienceBranding'
        consent:
          $ref: '#/components/schemas/ConsentRequirement'
        consented:
          title: Consented
          type: boolean
        evaluation_id:
          format: uuid
          title: Evaluation Id
          type: string
        expires_at:
          format: date-time
          title: Expires At
          type: string
        last_seen_at:
          format: date-time
          title: Last Seen At
          type: string
        locale:
          title: Locale
          type: string
        renderer_mode:
          enum:
            - hosted
            - embedded
            - hosted_or_embedded
          title: Renderer Mode
          type: string
        session_id:
          format: uuid
          title: Session Id
          type: string
        status:
          enum:
            - active
            - completed
            - revoked
            - expired
          title: Status
          type: string
        voice_interview:
          anyOf:
            - $ref: '#/components/schemas/ParticipantVoiceInterviewSummary'
            - type: 'null'
        voice_processing_consent:
          $ref: '#/components/schemas/ConsentRequirement'
        voice_processing_consented:
          title: Voice Processing Consented
          type: boolean
      required:
        - session_id
        - evaluation_id
        - status
        - locale
        - expires_at
        - last_seen_at
        - consent
        - consented
        - voice_processing_consent
        - voice_processing_consented
        - renderer_mode
        - branding
      title: ParticipantSessionState
      type: object
    ErrorDetail:
      additionalProperties: false
      description: Stable structured detail returned by versioned API errors.
      properties:
        code:
          title: Code
          type: string
        context:
          anyOf:
            - additionalProperties: true
              type: object
            - type: 'null'
          title: Context
        message:
          title: Message
          type: string
        request_id:
          anyOf:
            - type: string
            - type: 'null'
          title: Request Id
      required:
        - code
        - message
      title: ErrorDetail
      type: object
    ParticipantDateQuestion:
      properties:
        id:
          title: Id
          type: string
        input:
          const: date
          title: Input
          type: string
        prompt:
          title: Prompt
          type: string
        required:
          default: false
          title: Required
          type: boolean
      required:
        - id
        - prompt
        - input
      title: ParticipantDateQuestion
      type: object
    ParticipantMultiSelectQuestion:
      properties:
        id:
          title: Id
          type: string
        input:
          const: multi_select
          title: Input
          type: string
        options:
          items:
            $ref: '#/components/schemas/ParticipantOption'
          title: Options
          type: array
        prompt:
          title: Prompt
          type: string
        required:
          default: false
          title: Required
          type: boolean
      required:
        - id
        - prompt
        - input
        - options
      title: ParticipantMultiSelectQuestion
      type: object
    ParticipantNumberQuestion:
      properties:
        id:
          title: Id
          type: string
        input:
          const: number
          title: Input
          type: string
        prompt:
          title: Prompt
          type: string
        required:
          default: false
          title: Required
          type: boolean
        unit:
          anyOf:
            - type: string
            - type: 'null'
          title: Unit
      required:
        - id
        - prompt
        - input
      title: ParticipantNumberQuestion
      type: object
    ParticipantNumberGroupQuestion:
      properties:
        fields:
          items:
            $ref: '#/components/schemas/ParticipantGroupField'
          title: Fields
          type: array
        id:
          title: Id
          type: string
        input:
          const: number_group
          title: Input
          type: string
        prompt:
          title: Prompt
          type: string
        required:
          default: false
          title: Required
          type: boolean
      required:
        - id
        - prompt
        - input
        - fields
      title: ParticipantNumberGroupQuestion
      type: object
    ParticipantShortTextQuestion:
      properties:
        id:
          title: Id
          type: string
        input:
          const: short_text
          title: Input
          type: string
        prompt:
          title: Prompt
          type: string
        required:
          default: false
          title: Required
          type: boolean
      required:
        - id
        - prompt
        - input
      title: ParticipantShortTextQuestion
      type: object
    ParticipantSingleSelectQuestion:
      properties:
        id:
          title: Id
          type: string
        input:
          const: single_select
          title: Input
          type: string
        options:
          items:
            $ref: '#/components/schemas/ParticipantOption'
          title: Options
          type: array
        prompt:
          title: Prompt
          type: string
        required:
          default: false
          title: Required
          type: boolean
      required:
        - id
        - prompt
        - input
        - options
      title: ParticipantSingleSelectQuestion
      type: object
    ParticipantSectionContext:
      description: >-
        The part of a core-order journey a page or question belongs to
        (participant-safe, localized).
      properties:
        answered:
          minimum: 0
          title: Answered
          type: integer
        count:
          minimum: 1
          title: Count
          type: integer
        description:
          anyOf:
            - type: string
            - type: 'null'
          title: Description
        id:
          title: Id
          type: string
        position:
          minimum: 1
          title: Position
          type: integer
        title:
          title: Title
          type: string
        total:
          minimum: 0
          title: Total
          type: integer
      required:
        - id
        - title
        - position
        - count
        - answered
        - total
      title: ParticipantSectionContext
      type: object
    ParticipantSelectionTrace:
      properties:
        mandatory:
          title: Mandatory
          type: boolean
        policy_version:
          title: Policy Version
          type: string
        selected_question_id:
          anyOf:
            - type: string
            - type: 'null'
          title: Selected Question Id
        stop_reason:
          enum:
            - mandatory_guardrail
            - selected
            - requirements_satisfied
            - question_bank_exhausted
          title: Stop Reason
          type: string
      required:
        - policy_version
        - selected_question_id
        - mandatory
        - stop_reason
      title: ParticipantSelectionTrace
      type: object
    ComprehensiveReport:
      properties:
        audience:
          enum:
            - participant
            - shared
            - dashboard
          title: Audience
          type: string
        consistency:
          $ref: '#/components/schemas/ReportConsistency'
        coverage:
          $ref: '#/components/schemas/ReportCoverage'
        dimensions:
          items:
            $ref: '#/components/schemas/ReportDimension'
          title: Dimensions
          type: array
        discussion:
          items:
            $ref: '#/components/schemas/ReportDiscussionItem'
          title: Discussion
          type: array
        evidence:
          items:
            $ref: '#/components/schemas/ReportEvidence'
          title: Evidence
          type: array
        insights:
          $ref: '#/components/schemas/ReportInsightsInfo'
        overview:
          $ref: '#/components/schemas/ReportOverview'
        profile:
          items:
            $ref: '#/components/schemas/ReportProfileTopic'
          title: Profile
          type: array
        scenarios:
          $ref: '#/components/schemas/ReportScenarios'
        versions:
          $ref: '#/components/schemas/ReportVersions'
      required:
        - audience
        - versions
        - overview
        - dimensions
        - profile
        - scenarios
        - consistency
        - coverage
        - discussion
        - insights
        - evidence
      title: ComprehensiveReport
      type: object
    ExperienceBranding:
      additionalProperties: false
      description: Participant-safe branding pinned by an immutable experience version.
      properties:
        display_name:
          anyOf:
            - maxLength: 120
              minLength: 1
              type: string
            - type: 'null'
          title: Display Name
        primary_color:
          anyOf:
            - type: string
            - type: 'null'
          title: Primary Color
      title: ExperienceBranding
      type: object
    ConsentRequirement:
      properties:
        notice_text:
          maxLength: 4000
          minLength: 1
          title: Notice Text
          type: string
        notice_version:
          maxLength: 64
          minLength: 1
          pattern: ^[A-Za-z0-9](?:[A-Za-z0-9_.-]{0,62}[A-Za-z0-9])?$
          title: Notice Version
          type: string
        purpose:
          maxLength: 64
          minLength: 1
          pattern: ^[A-Za-z0-9](?:[A-Za-z0-9_.-]{0,62}[A-Za-z0-9])?$
          title: Purpose
          type: string
      required:
        - purpose
        - notice_version
        - notice_text
      title: ConsentRequirement
      type: object
    ParticipantVoiceInterviewSummary:
      description: >-
        Whether the voice interview is offered to this participant, and its
        state.
      properties:
        available:
          title: Available
          type: boolean
        consent:
          $ref: '#/components/schemas/ConsentRequirement'
        consented:
          title: Consented
          type: boolean
        status:
          enum:
            - not_started
            - active
            - paused
            - completed
            - ended_incomplete
          title: Status
          type: string
        target_minutes_max:
          anyOf:
            - type: integer
            - type: 'null'
          title: Target Minutes Max
        target_minutes_min:
          anyOf:
            - type: integer
            - type: 'null'
          title: Target Minutes Min
        unavailable_reason:
          anyOf:
            - enum:
                - locale
                - embedded
                - closed
              type: string
            - type: 'null'
          title: Unavailable Reason
      required:
        - available
        - status
        - consent
        - consented
      title: ParticipantVoiceInterviewSummary
      type: object
    ParticipantOption:
      properties:
        id:
          title: Id
          type: string
        label:
          title: Label
          type: string
      required:
        - id
        - label
      title: ParticipantOption
      type: object
    ParticipantGroupField:
      properties:
        id:
          title: Id
          type: string
        label:
          title: Label
          type: string
      required:
        - id
        - label
      title: ParticipantGroupField
      type: object
    ReportConsistency:
      properties:
        hidden:
          default: false
          title: Hidden
          type: boolean
        items:
          items:
            $ref: '#/components/schemas/ReportConsistencyItem'
          title: Items
          type: array
        summary:
          $ref: '#/components/schemas/ReportClaim'
      required:
        - items
        - summary
      title: ReportConsistency
      type: object
    ReportCoverage:
      properties:
        active_minutes:
          anyOf:
            - type: number
            - type: 'null'
          title: Active Minutes
        answer_changes:
          anyOf:
            - type: integer
            - type: 'null'
          title: Answer Changes
        answered:
          title: Answered
          type: integer
        asked:
          title: Asked
          type: integer
        channels:
          items:
            type: string
          title: Channels
          type: array
        completion_percent:
          anyOf:
            - type: number
            - type: 'null'
          title: Completion Percent
        concepts:
          items:
            $ref: '#/components/schemas/ReportConceptCoverage'
          title: Concepts
          type: array
        declined:
          title: Declined
          type: integer
        delivery_mode:
          title: Delivery Mode
          type: string
        delivery_note:
          title: Delivery Note
          type: string
        gap_refs:
          items:
            type: string
          title: Gap Refs
          type: array
        hidden:
          default: false
          title: Hidden
          type: boolean
        limitations:
          items:
            $ref: '#/components/schemas/ReportClaim'
          title: Limitations
          type: array
        not_asked:
          title: Not Asked
          type: integer
        question_activity:
          items:
            $ref: '#/components/schemas/ReportQuestionActivity'
          title: Question Activity
          type: array
        reused:
          default: 0
          title: Reused
          type: integer
        sections:
          items:
            $ref: '#/components/schemas/ReportSectionCoverage'
          title: Sections
          type: array
        skipped:
          title: Skipped
          type: integer
        total_duration_minutes:
          anyOf:
            - type: number
            - type: 'null'
          title: Total Duration Minutes
        unanswered:
          default: 0
          title: Unanswered
          type: integer
        voice_corrections:
          anyOf:
            - type: integer
            - type: 'null'
          title: Voice Corrections
      required:
        - delivery_mode
        - delivery_note
        - channels
        - asked
        - answered
        - declined
        - skipped
        - not_asked
        - sections
        - concepts
        - gap_refs
        - limitations
      title: ReportCoverage
      type: object
    ReportDimension:
      properties:
        aligned:
          anyOf:
            - type: boolean
            - type: 'null'
          title: Aligned
        answers_counted:
          title: Answers Counted
          type: integer
        axis:
          title: Axis
          type: string
        band_label:
          anyOf:
            - type: string
            - type: 'null'
          title: Band Label
        bands:
          items:
            $ref: '#/components/schemas/ReportBand'
          title: Bands
          type: array
        calculation:
          items:
            $ref: '#/components/schemas/ReportClaim'
          title: Calculation
          type: array
        description:
          anyOf:
            - type: string
            - type: 'null'
          title: Description
        drivers:
          items:
            $ref: '#/components/schemas/ReportDriver'
          title: Drivers
          type: array
        evidence_ref:
          title: Evidence Ref
          type: string
        expected_band_label:
          anyOf:
            - type: string
            - type: 'null'
          title: Expected Band Label
        label:
          title: Label
          type: string
        rules_counted:
          title: Rules Counted
          type: integer
        score:
          anyOf:
            - type: number
            - type: 'null'
          title: Score
        signals_counted:
          title: Signals Counted
          type: integer
        unanswered_excluded:
          title: Unanswered Excluded
          type: integer
      required:
        - axis
        - label
        - evidence_ref
        - score
        - band_label
        - bands
        - drivers
        - calculation
        - answers_counted
        - rules_counted
        - signals_counted
        - unanswered_excluded
      title: ReportDimension
      type: object
    ReportDiscussionItem:
      properties:
        detail:
          title: Detail
          type: string
        evidence_refs:
          items:
            type: string
          minItems: 1
          title: Evidence Refs
          type: array
        id:
          title: Id
          type: string
        origin:
          default: deterministic
          enum:
            - deterministic
            - generated
          title: Origin
          type: string
        rank:
          minimum: 1
          title: Rank
          type: integer
        reason:
          title: Reason
          type: string
        title:
          title: Title
          type: string
      required:
        - id
        - rank
        - title
        - detail
        - reason
        - evidence_refs
      title: ReportDiscussionItem
      type: object
    ReportEvidence:
      properties:
        detail:
          anyOf:
            - type: string
            - type: 'null'
          title: Detail
        diagnostics:
          anyOf:
            - $ref: '#/components/schemas/ReportEvidenceDiagnostics'
            - type: 'null'
        display:
          anyOf:
            - type: string
            - type: 'null'
          title: Display
        excerpt:
          anyOf:
            - $ref: '#/components/schemas/ReportExcerpt'
            - type: 'null'
        id:
          title: Id
          type: string
        kind:
          enum:
            - answer
            - rule
            - signal
            - score
            - guardrail
            - gap
            - excerpt
            - scenario
          title: Kind
          type: string
        label:
          title: Label
          type: string
        revised:
          default: false
          title: Revised
          type: boolean
        section_title:
          anyOf:
            - type: string
            - type: 'null'
          title: Section Title
        source:
          anyOf:
            - type: string
            - type: 'null'
          title: Source
        state:
          anyOf:
            - type: string
            - type: 'null'
          title: State
        stated_intention:
          default: false
          title: Stated Intention
          type: boolean
        supports:
          items:
            type: string
          title: Supports
          type: array
        withheld:
          default: false
          title: Withheld
          type: boolean
      required:
        - id
        - kind
        - label
      title: ReportEvidence
      type: object
    ReportInsightsInfo:
      properties:
        attempts:
          anyOf:
            - type: integer
            - type: 'null'
          title: Attempts
        dropped_claims:
          anyOf:
            - type: integer
            - type: 'null'
          title: Dropped Claims
        generated_at:
          anyOf:
            - format: date-time
              type: string
            - type: 'null'
          title: Generated At
        generation:
          anyOf:
            - type: string
            - type: 'null'
          title: Generation
        last_error:
          anyOf:
            - type: string
            - type: 'null'
          title: Last Error
        model:
          anyOf:
            - type: string
            - type: 'null'
          title: Model
        next_attempt_at:
          anyOf:
            - format: date-time
              type: string
            - type: 'null'
          title: Next Attempt At
        notice:
          anyOf:
            - type: string
            - type: 'null'
          title: Notice
        status:
          enum:
            - pending
            - ready
            - failed
            - not_requested
          title: Status
          type: string
      required:
        - status
      title: ReportInsightsInfo
      type: object
    ReportOverview:
      properties:
        headline:
          $ref: '#/components/schemas/ReportClaim'
        how_scores_work:
          title: How Scores Work
          type: string
        matched_dimensions:
          anyOf:
            - type: integer
            - type: 'null'
          title: Matched Dimensions
        primary_label:
          anyOf:
            - type: string
            - type: 'null'
          title: Primary Label
        status:
          title: Status
          type: string
        summary:
          items:
            $ref: '#/components/schemas/ReportClaim'
          title: Summary
          type: array
        total_dimensions:
          anyOf:
            - type: integer
            - type: 'null'
          title: Total Dimensions
      required:
        - headline
        - status
        - how_scores_work
        - summary
      title: ReportOverview
      type: object
    ReportProfileTopic:
      properties:
        fact_refs:
          items:
            type: string
          title: Fact Refs
          type: array
        gap_refs:
          items:
            type: string
          title: Gap Refs
          type: array
        id:
          title: Id
          type: string
        label:
          title: Label
          type: string
        narrative:
          items:
            $ref: '#/components/schemas/ReportClaim'
          title: Narrative
          type: array
        status:
          enum:
            - evidenced
            - partial
            - missing
          title: Status
          type: string
        summary:
          $ref: '#/components/schemas/ReportClaim'
      required:
        - id
        - label
        - status
        - fact_refs
        - gap_refs
        - summary
      title: ReportProfileTopic
      type: object
    ReportScenarios:
      properties:
        collected:
          title: Collected
          type: boolean
        configured:
          title: Configured
          type: boolean
        items:
          items:
            $ref: '#/components/schemas/ReportScenario'
          title: Items
          type: array
        note:
          anyOf:
            - $ref: '#/components/schemas/ReportClaim'
            - type: 'null'
      required:
        - configured
        - collected
        - items
      title: ReportScenarios
      type: object
    ReportVersions:
      properties:
        builder:
          title: Builder
          type: integer
        built_at:
          anyOf:
            - format: date-time
              type: string
            - type: 'null'
          title: Built At
        bundle_fingerprint:
          anyOf:
            - type: string
            - type: 'null'
          title: Bundle Fingerprint
        bundle_id:
          anyOf:
            - type: string
            - type: 'null'
          title: Bundle Id
        engine_fingerprint:
          anyOf:
            - type: string
            - type: 'null'
          title: Engine Fingerprint
        evidence:
          title: Evidence
          type: integer
        generation:
          anyOf:
            - type: string
            - type: 'null'
          title: Generation
        origin:
          enum:
            - completion
            - rebuilt
            - preview
          title: Origin
          type: string
        pack_fingerprint:
          anyOf:
            - type: string
            - type: 'null'
          title: Pack Fingerprint
        report_schema:
          title: Report Schema
          type: string
        template_content_hash:
          anyOf:
            - type: string
            - type: 'null'
          title: Template Content Hash
        template_revision:
          anyOf:
            - type: integer
            - type: 'null'
          title: Template Revision
        template_version_id:
          anyOf:
            - type: string
            - type: 'null'
          title: Template Version Id
      required:
        - report_schema
        - builder
        - evidence
        - origin
      title: ReportVersions
      type: object
    ReportConsistencyItem:
      properties:
        detail:
          title: Detail
          type: string
        evidence_refs:
          items:
            type: string
          minItems: 1
          title: Evidence Refs
          type: array
        follow_up:
          default: none
          enum:
            - none
            - discussed
          title: Follow Up
          type: string
        follow_up_refs:
          items:
            type: string
          title: Follow Up Refs
          type: array
        id:
          title: Id
          type: string
        kind:
          enum:
            - guardrail
            - revision
            - tension
          title: Kind
          type: string
        origin:
          default: deterministic
          enum:
            - deterministic
            - generated
          title: Origin
          type: string
        severity:
          anyOf:
            - enum:
                - hard
                - soft
              type: string
            - type: 'null'
          title: Severity
        status:
          enum:
            - unresolved
            - needs_review
            - resolved_by_revision
            - confirmed_after_follow_up
          title: Status
          type: string
        title:
          title: Title
          type: string
      required:
        - id
        - kind
        - title
        - detail
        - status
        - evidence_refs
      title: ReportConsistencyItem
      type: object
    ReportClaim:
      properties:
        contradicting_refs:
          items:
            type: string
          title: Contradicting Refs
          type: array
        evidence_refs:
          items:
            type: string
          minItems: 1
          title: Evidence Refs
          type: array
        facet:
          anyOf:
            - type: string
            - type: 'null'
          title: Facet
        id:
          title: Id
          type: string
        origin:
          default: deterministic
          enum:
            - deterministic
            - generated
          title: Origin
          type: string
        stated_intention:
          default: false
          title: Stated Intention
          type: boolean
        support:
          default: supported
          enum:
            - supported
            - mixed
            - missing
          title: Support
          type: string
        text:
          maxLength: 600
          minLength: 1
          title: Text
          type: string
      required:
        - id
        - text
        - evidence_refs
      title: ReportClaim
      type: object
    ReportConceptCoverage:
      properties:
        answered_share:
          anyOf:
            - type: number
            - type: 'null'
          title: Answered Share
        concept:
          title: Concept
          type: string
        confidence:
          anyOf:
            - type: number
            - type: 'null'
          title: Confidence
        coverage:
          anyOf:
            - type: number
            - type: 'null'
          title: Coverage
        label:
          title: Label
          type: string
        satisfied:
          anyOf:
            - type: boolean
            - type: 'null'
          title: Satisfied
      required:
        - concept
        - label
      title: ReportConceptCoverage
      type: object
    ReportQuestionActivity:
      description: Dashboard-only response telemetry for one assessment question.
      properties:
        active_seconds:
          anyOf:
            - type: number
            - type: 'null'
          title: Active Seconds
        answer_changes:
          default: 0
          title: Answer Changes
          type: integer
        channel:
          anyOf:
            - type: string
            - type: 'null'
          title: Channel
        label:
          title: Label
          type: string
        question_id:
          title: Question Id
          type: string
        response_state:
          title: Response State
          type: string
        voice_corrections:
          default: 0
          title: Voice Corrections
          type: integer
      required:
        - question_id
        - label
        - response_state
      title: ReportQuestionActivity
      type: object
    ReportSectionCoverage:
      properties:
        answered:
          title: Answered
          type: integer
        declined:
          title: Declined
          type: integer
        hidden:
          title: Hidden
          type: integer
        not_asked:
          title: Not Asked
          type: integer
        section_id:
          title: Section Id
          type: string
        skipped:
          title: Skipped
          type: integer
        title:
          title: Title
          type: string
        total:
          title: Total
          type: integer
        unanswered:
          default: 0
          title: Unanswered
          type: integer
      required:
        - section_id
        - title
        - answered
        - declined
        - skipped
        - not_asked
        - hidden
        - total
      title: ReportSectionCoverage
      type: object
    ReportBand:
      properties:
        expected:
          title: Expected
          type: boolean
        label:
          title: Label
          type: string
        max:
          title: Max
          type: number
        min:
          title: Min
          type: number
        selected:
          title: Selected
          type: boolean
      required:
        - label
        - min
        - max
        - selected
        - expected
      title: ReportBand
      type: object
    ReportDriver:
      properties:
        evidence_ref:
          title: Evidence Ref
          type: string
        explanation:
          title: Explanation
          type: string
        kind:
          enum:
            - answer
            - rule
            - signal
          title: Kind
          type: string
        label:
          title: Label
          type: string
        rank:
          minimum: 1
          title: Rank
          type: integer
        strength:
          enum:
            - major
            - notable
            - minor
          title: Strength
          type: string
      required:
        - evidence_ref
        - kind
        - label
        - strength
        - rank
        - explanation
      title: ReportDriver
      type: object
    ReportEvidenceDiagnostics:
      description: Dashboard-only numeric and technical detail; ``None`` elsewhere.
      properties:
        active_ms:
          anyOf:
            - type: number
            - type: 'null'
          title: Active Ms
        axis:
          anyOf:
            - type: string
            - type: 'null'
          title: Axis
        channel:
          anyOf:
            - type: string
            - type: 'null'
          title: Channel
        clarifications:
          anyOf:
            - type: integer
            - type: 'null'
          title: Clarifications
        cohort_size:
          anyOf:
            - type: integer
            - type: 'null'
          title: Cohort Size
        cutpoints:
          anyOf:
            - items:
                type: number
              type: array
            - type: 'null'
          title: Cutpoints
        input:
          anyOf:
            - type: string
            - type: 'null'
          title: Input
        max_possible:
          anyOf:
            - type: number
            - type: 'null'
          title: Max Possible
        min_possible:
          anyOf:
            - type: number
            - type: 'null'
          title: Min Possible
        normalized_impact:
          anyOf:
            - type: number
            - type: 'null'
          title: Normalized Impact
        observed:
          anyOf:
            - type: number
            - type: 'null'
          title: Observed
        points:
          anyOf:
            - type: number
            - type: 'null'
          title: Points
        quartile:
          anyOf:
            - type: integer
            - type: 'null'
          title: Quartile
        raw_value:
          anyOf:
            - type: number
            - type: integer
            - type: string
            - type: boolean
            - type: 'null'
          title: Raw Value
        ref:
          title: Ref
          type: string
        rejected_proposals:
          anyOf:
            - type: integer
            - type: 'null'
          title: Rejected Proposals
        revisions:
          anyOf:
            - type: integer
            - type: 'null'
          title: Revisions
        sensitivity:
          anyOf:
            - type: string
            - type: 'null'
          title: Sensitivity
        severity:
          anyOf:
            - type: string
            - type: 'null'
          title: Severity
        source:
          anyOf:
            - type: string
            - type: 'null'
          title: Source
        status:
          anyOf:
            - type: string
            - type: 'null'
          title: Status
        text_length:
          anyOf:
            - type: integer
            - type: 'null'
          title: Text Length
        value:
          title: Value
      required:
        - ref
      title: ReportEvidenceDiagnostics
      type: object
    ReportExcerpt:
      properties:
        occurred_at:
          anyOf:
            - format: date-time
              type: string
            - type: 'null'
          title: Occurred At
        speaker:
          enum:
            - participant
            - interviewer
          title: Speaker
          type: string
        text:
          title: Text
          type: string
      required:
        - speaker
        - text
      title: ReportExcerpt
      type: object
    ReportScenario:
      properties:
        excerpt_refs:
          items:
            type: string
          title: Excerpt Refs
          type: array
        follow_ups_used:
          anyOf:
            - type: integer
            - type: 'null'
          title: Follow Ups Used
        gap_ref:
          anyOf:
            - type: string
            - type: 'null'
          title: Gap Ref
        id:
          title: Id
          type: string
        insights:
          items:
            $ref: '#/components/schemas/ReportClaim'
          title: Insights
          type: array
        prompt:
          title: Prompt
          type: string
        related_refs:
          items:
            type: string
          title: Related Refs
          type: array
        required:
          default: true
          title: Required
          type: boolean
        section_title:
          anyOf:
            - type: string
            - type: 'null'
          title: Section Title
        stated_intention:
          title: Stated Intention
          type: boolean
        status:
          enum:
            - explored
            - partially_explored
            - unresolved
            - not_reached
            - not_applicable
            - not_collected
          title: Status
          type: string
        summary:
          $ref: '#/components/schemas/ReportClaim'
      required:
        - id
        - prompt
        - status
        - stated_intention
        - related_refs
        - excerpt_refs
        - summary
      title: ReportScenario
      type: object
  securitySchemes:
    BearerAuth:
      description: Named syn_ API key or migration-only legacy key.
      scheme: bearer
      type: http
    ApiKeyAuth:
      description: Header alias for a named or legacy API key.
      in: header
      name: X-API-Key
      type: apiKey
    SessionCookie:
      description: Opaque administrator browser session.
      in: cookie
      name: synapse_session
      type: apiKey

````

This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.