> ## Documentation Index
> Fetch the complete documentation index at: https://help.doozy.live/llms.txt
> Use this file to discover all available pages before exploring further.

# Get track report

> Generate a comprehensive report for a track, including enrollment summary, enrollee progress, and optionally step-level results and analytics.



## OpenAPI

````yaml /openapi.json get /v1/tracks/{trackId}/report
openapi: 3.0.3
info:
  title: Doozy Public API
  version: 1.0.0
  description: >-
    The Doozy Public API allows you to programmatically access your
    organization's data.


    ## Authentication


    All API requests require an API key passed in the `x-api-key` header.


    ```

    x-api-key: dzy_xxxxxxxx_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

    ```


    API keys can be generated and managed through the Doozy dashboard. Each key
    is associated with a user account and inherits that user's permissions.


    ## Rate Limiting


    API requests are rate limited. Rate limiting is handled by Cloudflare. If
    you exceed the rate limit, you'll receive a 429 Too Many Requests response.


    ## Pagination


    List endpoints support cursor-based pagination using `limit` and
    `starting_after` query parameters.
  contact:
    name: Doozy Support
    email: support@doozy.live
    url: https://help.doozy.live/api
servers:
  - url: https://api.doozy.live
    description: Production
security:
  - apiKey: []
tags:
  - name: Quizzes
    description: Quiz analytics and reporting endpoints
  - name: Tracks
    description: Track management and analytics endpoints
  - name: Surveys
    description: Survey and poll analytics endpoints
  - name: Introductions
    description: Doozy Roulette and Matchmaking introduction endpoints
paths:
  /v1/tracks/{trackId}/report:
    get:
      tags:
        - Tracks
      summary: Get track report
      description: >-
        Generate a comprehensive report for a track, including enrollment
        summary, enrollee progress, and optionally step-level results and
        analytics.
      parameters:
        - schema:
            type: string
            minLength: 1
            description: The unique identifier of the track
            example: wf_abc123
          required: true
          description: The unique identifier of the track
          name: trackId
          in: path
        - schema:
            type: integer
            minimum: 1
            maximum: 100
            default: 25
            description: Maximum number of enrollees to return (1-100, default 25)
            example: 25
          required: false
          description: Maximum number of enrollees to return (1-100, default 25)
          name: limit
          in: query
        - schema:
            type: string
            description: >-
              Cursor for pagination - the instance ID of the last enrollee from
              the previous page
            example: inst_abc123
          required: false
          description: >-
            Cursor for pagination - the instance ID of the last enrollee from
            the previous page
          name: starting_after
          in: query
        - schema:
            type: string
            description: >-
              Cursor for pagination - the instance ID of the first enrollee from
              the next page (for backward pagination)
            example: inst_xyz789
          required: false
          description: >-
            Cursor for pagination - the instance ID of the first enrollee from
            the next page (for backward pagination)
          name: ending_before
          in: query
        - schema:
            type: string
            enum:
              - active
              - delivered
              - completed
              - failed
              - paused
              - canceled
              - all
            default: all
            description: 'Filter enrollees by status (default: all)'
            example: all
          required: false
          description: 'Filter enrollees by status (default: all)'
          name: status
          in: query
        - schema:
            type: string
            description: Filter enrollees started at or after this date (ISO 8601)
            example: '2026-01-01T00:00:00.000Z'
          required: false
          description: Filter enrollees started at or after this date (ISO 8601)
          name: from_date
          in: query
        - schema:
            type: string
            description: Filter enrollees started at or before this date (ISO 8601)
            example: '2026-01-31T23:59:59.999Z'
          required: false
          description: Filter enrollees started at or before this date (ISO 8601)
          name: to_date
          in: query
        - schema:
            allOf:
              - $ref: '#/components/schemas/StepType'
              - description: Only include step progress for steps of this type
          required: false
          description: Only include step progress for steps of this type
          name: step_type
          in: query
        - schema:
            type: string
            description: Only include step progress for this specific step ID
            example: step_abc123
          required: false
          description: Only include step progress for this specific step ID
          name: step_id
          in: query
        - schema:
            type: string
            enum:
              - 'true'
              - 'false'
            default: 'true'
            description: >-
              Include activity results (survey answers, quiz responses, etc.) in
              step progress (default true)
            example: 'true'
          required: false
          description: >-
            Include activity results (survey answers, quiz responses, etc.) in
            step progress (default true)
          name: include_step_results
          in: query
      responses:
        '200':
          description: Track report with summary, enrollees, and optional analytics
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TrackReportResponse'
        '400':
          description: Invalid query or path parameters
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '401':
          description: Authentication required - missing API key
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '403':
          description: Invalid API key or insufficient permissions
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '404':
          description: Track not found or user does not have access
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
      security:
        - apiKey: []
components:
  schemas:
    StepType:
      type: string
      enum:
        - message
        - quiz
        - poll
        - survey
        - individualIntroductions
        - mentorAssignment
        - delay
        - addToWorkflow
        - tasks
      description: Type of step
      example: survey
    TrackReportResponse:
      type: object
      properties:
        object:
          type: string
          enum:
            - track_report
          description: Object type identifier
          example: track_report
        id:
          type: string
          description: Track ID
          example: wf_abc123
        name:
          type: string
          description: Track name
          example: New Hire Onboarding
        state:
          allOf:
            - $ref: '#/components/schemas/TrackState'
            - description: Current track state
              example: active
        trigger_type:
          allOf:
            - $ref: '#/components/schemas/TrackTriggerType'
            - description: How users are added to the track
              example: user_join
        summary:
          allOf:
            - $ref: '#/components/schemas/TrackReportSummary'
            - description: Summary statistics for the report
        step_analytics:
          type: array
          items:
            $ref: '#/components/schemas/TrackStepAnalytics'
          description: >-
            Per-step aggregate analytics computed from all enrollees matching
            the filter, not just the current page.
        enrollees:
          type: array
          items:
            $ref: '#/components/schemas/TrackEnrollee'
          description: Paginated list of enrollees with step progress
        total_enrollees:
          type: integer
          description: Total number of enrollees matching the filter
          example: 100
        has_more:
          type: boolean
          description: Whether there are more enrollees available beyond this page
          example: true
        url:
          type: string
          description: The URL for accessing this report
          example: /v1/tracks/wf_abc123/report
        next_cursor:
          type: string
          nullable: true
          description: >-
            Cursor to fetch the next page of enrollees. Pass as starting_after
            in subsequent requests.
          example: inst_xyz789
        previous_cursor:
          type: string
          nullable: true
          description: >-
            Cursor to fetch the previous page of enrollees. Pass as
            ending_before in subsequent requests.
          example: inst_abc123
      required:
        - object
        - id
        - name
        - state
        - trigger_type
        - summary
        - step_analytics
        - enrollees
        - total_enrollees
        - has_more
        - url
        - next_cursor
        - previous_cursor
    ErrorResponse:
      type: object
      properties:
        error:
          type: object
          properties:
            type:
              type: string
              enum:
                - api_error
                - authentication_error
                - invalid_request_error
                - rate_limit_error
              description: The type of error returned
              example: invalid_request_error
            code:
              type: string
              nullable: true
              description: Machine-readable error code for specific error conditions
              example: resource_not_found
            message:
              type: string
              description: Human-readable error message
              example: 'No such quiz: quiz_abc123'
            param:
              type: string
              nullable: true
              description: The parameter related to the error, if applicable
              example: id
            doc_url:
              type: string
              format: uri
              description: URL to documentation about this error
              example: https://docs.doozy.live/api/errors#resource_not_found
          required:
            - type
            - code
            - message
      required:
        - error
    TrackState:
      type: string
      enum:
        - draft
        - active
        - paused
        - archived
    TrackTriggerType:
      type: string
      enum:
        - user_join
        - manual_user_trigger
        - schedule
        - work_anniversary
        - added_by_another_workflow
        - self_join
    TrackReportSummary:
      type: object
      properties:
        object:
          type: string
          enum:
            - track_report_summary
          description: Object type identifier
          example: track_report_summary
        total_enrollees:
          type: integer
          description: Total number of enrollees (excluding test mode)
          example: 100
        active:
          type: integer
          description: Number of active enrollees
          example: 40
        delivered:
          type: integer
          description: >-
            Number of enrollees who have had all steps delivered but not
            completed all user-completable steps
          example: 10
        completed:
          type: integer
          description: >-
            Number of enrollees who completed all user-completable steps in the
            track
          example: 45
        failed:
          type: integer
          description: Number of enrollees who failed
          example: 5
        paused:
          type: integer
          description: Number of paused enrollees
          example: 5
        canceled:
          type: integer
          description: Number of canceled enrollees
          example: 5
        average_completion_rate:
          type: number
          description: Average step completion percentage across all enrollees (0-100)
          example: 72.5
        average_time_to_complete:
          type: number
          nullable: true
          description: >-
            Average time to complete the track in seconds (null if no
            completions)
          example: 604800
      required:
        - object
        - total_enrollees
        - active
        - delivered
        - completed
        - failed
        - paused
        - canceled
        - average_completion_rate
        - average_time_to_complete
    TrackStepAnalytics:
      type: object
      properties:
        object:
          type: string
          enum:
            - track_step_analytics
          description: Object type identifier
          example: track_step_analytics
        step_id:
          type: string
          description: Step identifier
          example: step_abc123
        step_type:
          $ref: '#/components/schemas/StepType'
        title:
          type: string
          nullable: true
          description: Step title
          example: Onboarding Survey
        order:
          type: integer
          description: Position in the track (1-indexed)
          example: 1
        total_reached:
          type: integer
          description: Number of enrollees who reached this step
          example: 80
        delivered:
          type: integer
          description: >-
            Number of enrollees who have this step delivered but not yet
            completed
          example: 5
        completed:
          type: integer
          description: Number of enrollees who completed this step
          example: 70
        failed:
          type: integer
          description: Number of enrollees who failed this step
          example: 3
        skipped:
          type: integer
          description: Number of enrollees who had this step skipped
          example: 2
        active:
          type: integer
          description: Number of enrollees currently on this step
          example: 5
        completion_rate:
          type: number
          description: >-
            Percentage of enrollees who reached this step and completed it
            (0-100)
          example: 87.5
      required:
        - object
        - step_id
        - step_type
        - title
        - order
        - total_reached
        - delivered
        - completed
        - failed
        - skipped
        - active
        - completion_rate
    TrackEnrollee:
      type: object
      properties:
        object:
          type: string
          enum:
            - track_enrollee
          description: Object type identifier
          example: track_enrollee
        id:
          type: string
          description: Workflow instance ID
          example: inst_abc123
        user_id:
          type: string
          description: User ID
          example: user_abc123
        email:
          type: string
          nullable: true
          description: Enrollee's email address
          example: jane.doe@example.com
        display_name:
          type: string
          nullable: true
          description: Enrollee's display name
          example: Jane Doe
        slack_user_id:
          type: string
          nullable: true
          description: Enrollee's Slack user ID
          example: U01234567
        department:
          type: string
          nullable: true
          description: Enrollee's department or group
          example: Engineering
        location:
          type: string
          nullable: true
          description: Enrollee's work location
          example: San Francisco, CA
        manager_name:
          type: string
          nullable: true
          description: Manager's display name
          example: John Smith
        manager_email:
          type: string
          nullable: true
          description: Manager's email address
          example: john.smith@example.com
        manager_id:
          type: string
          nullable: true
          description: Manager's user ID
          example: user_mgr456
        mentor_id:
          type: string
          nullable: true
          description: Assigned mentor's user ID
          example: user_mentor123
        mentor_name:
          type: string
          nullable: true
          description: Assigned mentor's display name
          example: Alex Johnson
        mentor_email:
          type: string
          nullable: true
          description: Assigned mentor's email address
          example: alex.johnson@example.com
        mentor_assigned_at:
          type: string
          nullable: true
          description: When the mentor was assigned (ISO 8601)
          example: '2026-01-15T11:00:00.000Z'
        groups:
          type: array
          items:
            type: string
          description: Groups the enrollee belongs to
          example:
            - Engineering
            - Backend
        trigger:
          allOf:
            - $ref: '#/components/schemas/TrackTriggerType'
            - description: >-
                How this user was enrolled in the track (user_join,
                manual_user_trigger, self_join, schedule, work_anniversary,
                added_by_another_workflow)
              example: user_join
        status:
          allOf:
            - $ref: '#/components/schemas/TrackEnrolleeStatus'
            - description: Current enrollment status
              example: active
        failure_reason:
          type: string
          nullable: true
          description: >-
            Reason for enrollment failure, if applicable. Possible values:
            user_not_found, user_already_in_workflow,
            user_removed_from_workflow, workflow_not_active, unknown_error
          example: null
        failure_reason_message:
          type: string
          nullable: true
          description: Human-readable message for the failure reason
          example: The user could not be found
        started_at:
          type: string
          description: When the enrollee started the track (ISO 8601)
          example: '2026-01-15T10:30:00.000Z'
        delivered_at:
          type: string
          nullable: true
          description: >-
            When all steps were delivered to the enrollee (ISO 8601). Null if
            not all steps have been delivered yet.
          example: '2026-01-20T10:00:00.000Z'
        completed_at:
          type: string
          nullable: true
          description: >-
            When the enrollee completed all user-completable steps in the track
            (ISO 8601). Null if not yet completed.
          example: null
        failed_at:
          type: string
          nullable: true
          description: When the enrollment failed (ISO 8601)
          example: null
        next_step_at:
          type: string
          nullable: true
          description: When the next step is scheduled to run (ISO 8601)
          example: '2026-01-20T09:00:00.000Z'
        added_by_user_id:
          type: string
          nullable: true
          description: User ID of who manually enrolled this user (if applicable)
          example: user_admin789
        added_by_workflow_id:
          type: string
          nullable: true
          description: If enrolled via an addToWorkflow step, the source workflow ID
          example: wf_source456
        timezone:
          type: string
          nullable: true
          description: Timezone this enrollment is running in
          example: America/New_York
        steps_delivered:
          type: integer
          description: >-
            Number of steps delivered to the user (status = delivered or
            completed)
          example: 4
        steps_completed:
          type: integer
          description: Number of steps the user has completed (status = completed only)
          example: 3
        steps_total:
          type: integer
          description: Total number of steps in the track
          example: 5
        delivery_progress_percentage:
          type: number
          description: >-
            Delivery progress as a percentage (0-100). Calculated as
            steps_delivered / steps_total * 100.
          example: 80
        completion_progress_percentage:
          type: number
          description: >-
            Completion progress as a percentage (0-100). Calculated as
            steps_completed / steps_total * 100.
          example: 60
        step_progress:
          type: array
          items:
            $ref: '#/components/schemas/TrackEnrolleeStepProgress'
          description: Per-step progress details
      required:
        - object
        - id
        - user_id
        - email
        - display_name
        - slack_user_id
        - department
        - location
        - manager_name
        - manager_email
        - manager_id
        - mentor_id
        - mentor_name
        - mentor_email
        - mentor_assigned_at
        - groups
        - trigger
        - status
        - failure_reason
        - failure_reason_message
        - started_at
        - delivered_at
        - completed_at
        - failed_at
        - next_step_at
        - added_by_user_id
        - added_by_workflow_id
        - timezone
        - steps_delivered
        - steps_completed
        - steps_total
        - delivery_progress_percentage
        - completion_progress_percentage
        - step_progress
    TrackEnrolleeStatus:
      type: string
      enum:
        - new
        - active
        - processing
        - active_batch
        - processing_batch
        - delivered
        - completed
        - failed
        - paused
        - canceled
    TrackEnrolleeStepProgress:
      type: object
      properties:
        object:
          type: string
          enum:
            - track_step_progress
          description: Object type identifier
          example: track_step_progress
        step_id:
          type: string
          description: Unique step identifier
          example: step_abc123
        step_type:
          $ref: '#/components/schemas/StepType'
        title:
          type: string
          nullable: true
          description: Step title
          example: Onboarding Survey
        order:
          type: integer
          description: Position in the track (1-indexed)
          example: 1
        status:
          allOf:
            - $ref: '#/components/schemas/TrackStepProgressStatus'
            - description: Current step progress status
              example: completed
        started_at:
          type: string
          nullable: true
          description: When the step started (ISO 8601)
          example: '2026-01-15T10:30:00.000Z'
        delivered_at:
          type: string
          nullable: true
          description: When the step was delivered to the user (ISO 8601)
          example: '2026-01-15T11:00:00.000Z'
        completed_at:
          type: string
          nullable: true
          description: >-
            When the user completed the step (ISO 8601). For user-completable
            steps (quiz, survey, tasks, intro), this is when the user finished.
            For non-user-completable steps (message, delay, mentor), this equals
            delivered_at.
          example: '2026-01-16T14:30:00.000Z'
        failed_at:
          type: string
          nullable: true
          description: When the step failed (ISO 8601)
          example: null
        skipped_at:
          type: string
          nullable: true
          description: When the step was skipped (ISO 8601)
          example: null
        failure_reason:
          type: string
          nullable: true
          description: Reason for failure if applicable
          example: null
        failure_reason_message:
          type: string
          nullable: true
          description: Human-readable message for the failure reason
          example: No mentor is available for assignment
        destination_type:
          type: string
          nullable: true
          description: >-
            Where this step is delivered (user, manager, mentor, slackChannel,
            etc.)
          example: user
        result:
          $ref: '#/components/schemas/TrackStepResult'
      required:
        - object
        - step_id
        - step_type
        - title
        - order
        - status
        - started_at
        - delivered_at
        - completed_at
        - failed_at
        - skipped_at
        - failure_reason
        - failure_reason_message
        - destination_type
        - result
    TrackStepProgressStatus:
      type: string
      enum:
        - active
        - delivered
        - completed
        - failed
        - skipped
    TrackStepResult:
      anyOf:
        - $ref: '#/components/schemas/TrackStepSurveyResult'
        - $ref: '#/components/schemas/TrackStepQuizResult'
        - $ref: '#/components/schemas/TrackStepIntroResult'
        - $ref: '#/components/schemas/TrackStepTaskResult'
        - $ref: '#/components/schemas/TrackStepMentorResult'
        - $ref: '#/components/schemas/TrackStepMessageResult'
        - $ref: '#/components/schemas/TrackStepDelayResult'
        - $ref: '#/components/schemas/TrackStepAddToWorkflowResult'
        - nullable: true
      description: >-
        Activity result for this step (survey answers, quiz results, etc.). Only
        populated when include_step_results=true.
    TrackStepSurveyResult:
      type: object
      properties:
        object:
          type: string
          enum:
            - track_step_survey_result
          description: Object type identifier
          example: track_step_survey_result
        survey_id:
          type: string
          description: Survey ID
          example: survey_abc123
        survey_instance_id:
          type: string
          nullable: true
          description: Survey instance ID created for this enrollee
          example: inst_xyz789
        status:
          type: string
          enum:
            - responded
            - not_responded
          description: Whether the enrollee responded to the survey
          example: responded
        responded_at:
          type: string
          nullable: true
          description: When the enrollee responded (ISO 8601)
          example: '2026-01-16T14:30:00.000Z'
        answers:
          type: array
          nullable: true
          items:
            $ref: '#/components/schemas/TrackStepSurveyAnswer'
          description: The enrollee's answers (null if not responded)
      required:
        - object
        - survey_id
        - survey_instance_id
        - status
        - responded_at
        - answers
    TrackStepQuizResult:
      type: object
      properties:
        object:
          type: string
          enum:
            - track_step_quiz_result
          description: Object type identifier
          example: track_step_quiz_result
        quiz_id:
          type: string
          description: Quiz ID
          example: quiz_abc123
        scheduled_activity_id:
          type: string
          nullable: true
          description: Scheduled activity ID for this quiz delivery
          example: act_xyz789
        status:
          type: string
          enum:
            - not_started
            - in_progress
            - completed
            - expired
          description: Status of the quiz attempt
          example: completed
        score:
          type: number
          nullable: true
          description: Score as a percentage (0-100)
          example: 85
        total_questions:
          type: integer
          description: Total number of questions
          example: 10
        correct_answers:
          type: integer
          description: Number of correct answers
          example: 8
        incorrect_answers:
          type: integer
          description: Number of incorrect answers
          example: 2
        completed_at:
          type: string
          nullable: true
          description: When the quiz was completed (ISO 8601)
          example: '2026-01-15T11:00:00.000Z'
        question_responses:
          type: array
          nullable: true
          items:
            $ref: '#/components/schemas/TrackStepQuizQuestionResponse'
          description: Per-question responses
      required:
        - object
        - quiz_id
        - scheduled_activity_id
        - status
        - score
        - total_questions
        - correct_answers
        - incorrect_answers
        - completed_at
        - question_responses
    TrackStepIntroResult:
      type: object
      properties:
        object:
          type: string
          enum:
            - track_step_intro_result
          description: Object type identifier
          example: track_step_intro_result
        matches:
          type: array
          items:
            type: object
            properties:
              match_id:
                type: string
                description: Match ID
                example: match_abc123
              instance_id:
                type: string
                description: Introduction instance ID
                example: inst_abc123
              participants:
                type: array
                items:
                  $ref: '#/components/schemas/TrackStepIntroMatchParticipant'
                description: Match participants
              matched_at:
                type: string
                description: When matched (ISO 8601)
                example: '2026-01-15T10:00:00.000Z'
              has_scheduled_event:
                type: boolean
                description: Whether a meeting was scheduled
                example: true
              has_said_met:
                type: boolean
                description: Whether participants confirmed they met
                example: false
            required:
              - match_id
              - instance_id
              - participants
              - matched_at
              - has_scheduled_event
              - has_said_met
          description: Introduction matches for this enrollee
      required:
        - object
        - matches
    TrackStepTaskResult:
      type: object
      properties:
        object:
          type: string
          enum:
            - track_step_task_result
          description: Object type identifier
          example: track_step_task_result
        task_id:
          type: string
          nullable: true
          description: Task ID
          example: task_abc123
        tasks_completed:
          type: integer
          description: Number of tasks completed
          example: 3
        tasks_total:
          type: integer
          description: Total number of tasks
          example: 5
      required:
        - object
        - task_id
        - tasks_completed
        - tasks_total
    TrackStepMentorResult:
      type: object
      properties:
        object:
          type: string
          enum:
            - track_step_mentor_result
          description: Object type identifier
          example: track_step_mentor_result
        mentor_user_id:
          type: string
          nullable: true
          description: The assigned mentor's user ID
          example: user_mentor123
        mentor_name:
          type: string
          nullable: true
          description: The assigned mentor's display name
          example: Alex Johnson
        mentor_email:
          type: string
          nullable: true
          description: The assigned mentor's email address
          example: alex.johnson@example.com
        assigned_at:
          type: string
          nullable: true
          description: When the mentor was assigned (ISO 8601)
          example: '2026-01-15T10:00:00.000Z'
        slack_channel_id:
          type: string
          nullable: true
          description: Slack channel ID for mentor-mentee communication
          example: C01234567
      required:
        - object
        - mentor_user_id
        - mentor_name
        - mentor_email
        - assigned_at
        - slack_channel_id
    TrackStepMessageResult:
      type: object
      properties:
        object:
          type: string
          enum:
            - track_step_message_result
          description: Object type identifier
          example: track_step_message_result
        message_id:
          type: string
          nullable: true
          description: The message ID
          example: msg_abc123
        delivered:
          type: boolean
          description: Whether the message was successfully delivered
          example: true
      required:
        - object
        - message_id
        - delivered
    TrackStepDelayResult:
      type: object
      properties:
        object:
          type: string
          enum:
            - track_step_delay_result
          description: Object type identifier
          example: track_step_delay_result
        delay_ends_at:
          type: string
          nullable: true
          description: When the delay period ends (ISO 8601)
          example: '2026-01-17T10:00:00.000Z'
      required:
        - object
        - delay_ends_at
    TrackStepAddToWorkflowResult:
      type: object
      properties:
        object:
          type: string
          enum:
            - track_step_add_to_workflow_result
          description: Object type identifier
          example: track_step_add_to_workflow_result
        target_workflow_id:
          type: string
          nullable: true
          description: The ID of the target workflow
          example: wf_target123
        created_instance_id:
          type: string
          nullable: true
          description: The ID of the workflow instance created in the target workflow
          example: inst_new789
        added_automatically:
          type: boolean
          nullable: true
          description: >-
            Whether the user was added automatically or after accepting an
            invitation
          example: true
      required:
        - object
        - target_workflow_id
        - created_instance_id
        - added_automatically
    TrackStepSurveyAnswer:
      type: object
      properties:
        question_id:
          type: string
          description: The question ID
          example: q_abc123
        question_text:
          type: string
          description: The question text
          example: How satisfied are you with your onboarding?
        question_type:
          $ref: '#/components/schemas/SurveyQuestionType'
        value:
          anyOf:
            - type: string
            - type: number
            - type: array
              items:
                type: string
            - nullable: true
          description: The answer value
          example: 8
        comment:
          type: string
          nullable: true
          description: Optional comment on the answer
          example: Great experience!
      required:
        - question_id
        - question_text
        - question_type
        - value
        - comment
    TrackStepQuizQuestionResponse:
      type: object
      properties:
        question_id:
          type: string
          description: The question ID
          example: q_abc123
        submitted_answer:
          type: object
          nullable: true
          properties:
            id:
              type: string
            answer:
              type: string
              nullable: true
          required:
            - id
            - answer
          description: The submitted answer
        is_correct:
          type: boolean
          nullable: true
          description: Whether the answer was correct
          example: true
        answered_at:
          type: string
          nullable: true
          description: When the question was answered (ISO 8601)
          example: '2026-01-15T11:00:00.000Z'
      required:
        - question_id
        - submitted_answer
        - is_correct
        - answered_at
    TrackStepIntroMatchParticipant:
      type: object
      properties:
        user_id:
          type: string
          description: User ID
          example: user_abc123
        display_name:
          type: string
          nullable: true
          description: Display name
          example: John Doe
        email:
          type: string
          nullable: true
          description: Email address
          example: john@example.com
      required:
        - user_id
        - display_name
        - email
    SurveyQuestionType:
      type: string
      enum:
        - scale_1_to_10
        - scale_1_to_5
        - emoji_1_to_5
        - agree_disagree
        - enps
        - open_ended
        - multiple_choice
      description: Type of question
      example: scale_1_to_10
  securitySchemes:
    apiKey:
      type: apiKey
      in: header
      name: x-api-key
      description: API key for authentication. Generate keys in the Doozy dashboard.

````