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

# List User Phase Enrollments

> Get a list of phase enrollments for a user including the phase status. Token must have 'Manage Phases' permission.



## OpenAPI

````yaml https://app.govworx.net/u/api-docs get /api/v1/external/train/user/{userId}/enrollments
openapi: 3.1.0
info:
  title: GovWorx Data API
  description: Interfaces to access data produced and organized by GovWorx Applications.
  termsOfService: http://swagger.io/terms/
  version: '1.0'
servers:
  - url: https://app.govworx.net
security: []
tags:
  - name: TRAIN
    description: Training Phase and Enrollment Records
  - name: Audit Log Export
    description: Programmatically pull audit records into your SIEM solution
  - name: Knowledge
    description: >-
      Push and version guide cards and instruction cards into GovWorx from
      external systems (e.g., APCO, PowerPhone, IAED). 


      ## Concepts


      **Knowledge entry:** A guide card or instruction card identified by a
      GovWorx-internal `id` and your partner-supplied `externalId`. Each entry
      carries one or more immutable versions.


      **Version:** An immutable snapshot of the guide card content created by
      `POST /` (create) or `POST /{knowledgeId}/versions` (append). Only one
      version is published (active) at a time.


      **Section ownership (`apiControl`):** A single top-level `apiControl`
      object on each request declares which sections are owned by the API and
      which are managed within GovWorx. API-owned sections are fully overwritten
      on every append. GovWorx-owned sections are editable inside GovWorx and
      carried forward automatically — do not include their content in append
      payloads. Flags are set once at creation and are immutable between
      versions.


      ## referenceId lifecycle


      GovWorx assigns a stable `referenceId` to every item in every content list
      on create. These identifiers are echoed back in the create/append
      response. **Store them.** On future appends, echo a `referenceId` to
      update the existing item in place. Omit the `referenceId` to add a new
      item (a fresh id is generated). Supplying an unknown `referenceId` — one
      not present in the previous version — is rejected (400).


      Reference id formats: `q-{8 hex}` (questions), `si-{8 hex}` (spoken
      instructions), `ca-{8 hex}` (CAD actions), `sms-{8 hex}` (SMS messages),
      `dt-{8 hex}` (dispatch triggers).


      ## Authentication


      All endpoints require a bearer token with the `Manage Knowledge`
      permission.
  - name: Incident
    description: Upload a new Incident to the system
  - name: MCP Resources
    description: MCP Resource endpoints for external integrations
  - name: Quality Assurance
    description: QA evaluation and feedback report endpoints
  - name: Users
    description: User Records
externalDocs:
  description: GovWorx Developer Docs
  url: https://api.govworx.ai
paths:
  /api/v1/external/train/user/{userId}/enrollments:
    get:
      tags:
        - TRAIN
      summary: List User Phase Enrollments
      description: >-
        Get a list of phase enrollments for a user including the phase status.
        Token must have 'Manage Phases' permission.
      operationId: getPhaseEnrollments
      parameters:
        - name: userId
          in: path
          required: true
          schema:
            type: integer
            format: int64
      responses:
        '200':
          description: OK
          content:
            '*/*':
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/PhaseEnrollmentWithSignoffDto'
components:
  schemas:
    PhaseEnrollmentWithSignoffDto:
      type: object
      properties:
        id:
          type: integer
          format: int64
        tenantId:
          type: integer
          format: int64
        phaseId:
          type: integer
          format: int64
        phaseName:
          type: string
        user:
          $ref: '#/components/schemas/UserDto'
        primaryTrainingOfficer:
          $ref: '#/components/schemas/UserDto'
        startDate:
          type: string
          format: date
        originalPlannedEndDate:
          type: string
          format: date
        projectedEndDate:
          type: string
          format: date
        actualEndDate:
          type: string
          format: date
        status:
          type: string
          enum:
            - SCHEDULED
            - IN_PROGRESS
            - SUBMITTED
            - WAITING_SIGNOFF
            - COMPLETE
            - CANCELLED
        statusReason:
          type: string
        signoffId:
          type: integer
          format: int64
        hasSignoffFlow:
          type: boolean
        taskLists:
          type: array
          items:
            $ref: '#/components/schemas/TaskListDto'
          uniqueItems: true
        minTrainingHours:
          type: integer
          format: int32
        hasIncompleteTrainingReports:
          type: boolean
        hasIncompleteTaskLists:
          type: boolean
        canStartSignoff:
          type: boolean
        isProgressionDisabled:
          type: boolean
        existingInProgressEnrollmentId:
          type: integer
          format: int64
        totalTrainingHours:
          type: number
          format: float
        signoffCreatedAt:
          type: string
          format: date-time
    UserDto:
      type: object
      properties:
        email:
          type: string
        firstName:
          type: string
        lastName:
          type: string
        loginEnabled:
          type: boolean
        notificationEmail:
          type: string
        id:
          type: integer
          format: int64
        tenantId:
          type: integer
          format: int64
        idpSub:
          type: string
        personnelId:
          type: string
        roleId:
          type: integer
          format: int64
        isSuperAdmin:
          type: boolean
        isSystemUser:
          type: boolean
        mfaEnabled:
          type: boolean
        lastLoginAt:
          type: string
          format: date-time
        isSupervisor:
          type: boolean
        isTemplatePublishingAllowed:
          type: boolean
        vlrIdentifier:
          type: string
        passwordExpiresAt:
          type: string
          format: date-time
        isPasswordExpired:
          type: boolean
        isSupportUser:
          type: boolean
        investmentTrainingPipeline:
          type: boolean
    TaskListDto:
      type: object
      properties:
        id:
          type: integer
          format: int64
        subject:
          $ref: '#/components/schemas/UserSummaryDto'
        primaryTrainingOfficer:
          $ref: '#/components/schemas/UserSummaryDto'
        endDate:
          type: string
          format: date-time
        startDate:
          type: string
          format: date-time
        enrollmentDate:
          type: string
          format: date-time
        status:
          type: string
          enum:
            - IN_PROGRESS
            - COMPLETED
            - ABANDONED
            - WAITING_SIGNOFF
        taskListTemplateVersion:
          $ref: '#/components/schemas/TaskListTemplateVersionDto'
        items:
          type: array
          items:
            $ref: '#/components/schemas/TaskListItemDto'
        groups:
          type: array
          items:
            $ref: '#/components/schemas/TaskListItemGroupDto'
        totalItems:
          type: integer
          format: int32
        notStartedItemCount:
          type: integer
          format: int32
        explainedItemCount:
          type: integer
          format: int32
        demonstratedItemCount:
          type: integer
          format: int32
        proficientItemCount:
          type: integer
          format: int32
        phaseNames:
          type: array
          items:
            type: string
        phaseEnrollments:
          type: array
          items:
            $ref: '#/components/schemas/PhaseEnrollmentSummaryDto'
        primaryPhaseEnrollmentId:
          type: integer
          format: int64
        primaryPhaseName:
          type: string
        primaryPhaseId:
          type: integer
          format: int64
    UserSummaryDto:
      type: object
      properties:
        id:
          type: integer
          format: int64
        firstName:
          type: string
        lastName:
          type: string
        email:
          type: string
        notificationEmail:
          type: string
    TaskListTemplateVersionDto:
      type: object
      properties:
        id:
          type: integer
          format: int64
        active:
          type: boolean
        version:
          type: integer
          format: int32
        columnCount:
          type: integer
          format: int32
        trainingOfficerOnly:
          type: boolean
        items:
          type: array
          items:
            $ref: '#/components/schemas/TaskListTemplateVersionItemDto'
        groups:
          type: array
          items:
            $ref: '#/components/schemas/TaskListTemplateVersionItemGroupDto'
        name:
          type: string
        columnLabels:
          type: array
          items:
            $ref: '#/components/schemas/TaskListColumnLabelDto'
        hasObservations:
          type: boolean
    TaskListItemDto:
      type: object
      properties:
        id:
          type: integer
          format: int64
        taskListTemplateVersionItem:
          $ref: '#/components/schemas/TaskListTemplateVersionItemDto'
        isComplete:
          type: boolean
        traineeColumnPosition:
          type: integer
          format: int32
        trainerColumnPosition:
          type: integer
          format: int32
        auditHistory:
          type: array
          items:
            $ref: '#/components/schemas/TaskListItemAuditDto'
        trainerId:
          type: integer
          format: int64
    TaskListItemGroupDto:
      type: object
      properties:
        id:
          type: integer
          format: int64
        taskListTemplateVersionItemGroup:
          $ref: '#/components/schemas/TaskListTemplateVersionItemGroupDto'
        isComplete:
          type: boolean
    PhaseEnrollmentSummaryDto:
      type: object
      properties:
        id:
          type: integer
          format: int64
        tenantId:
          type: integer
          format: int64
        phaseId:
          type: integer
          format: int64
        phaseName:
          type: string
        user:
          $ref: '#/components/schemas/UserDto'
        primaryTrainingOfficer:
          $ref: '#/components/schemas/UserDto'
        startDate:
          type: string
          format: date
        originalPlannedEndDate:
          type: string
          format: date
        projectedEndDate:
          type: string
          format: date
        actualEndDate:
          type: string
          format: date
        status:
          type: string
          enum:
            - SCHEDULED
            - IN_PROGRESS
            - SUBMITTED
            - WAITING_SIGNOFF
            - COMPLETE
            - CANCELLED
        statusReason:
          type: string
        signoffId:
          type: integer
          format: int64
    TaskListTemplateVersionItemDto:
      type: object
      properties:
        id:
          type: integer
          format: int64
        identifier:
          type: string
        name:
          type: string
        orderIndex:
          type: integer
          format: int32
        parentId:
          type: integer
          format: int64
    TaskListTemplateVersionItemGroupDto:
      type: object
      properties:
        id:
          type: integer
          format: int64
        identifier:
          type: string
        name:
          type: string
        orderIndex:
          type: integer
          format: int32
        parentId:
          type: integer
          format: int64
    TaskListColumnLabelDto:
      type: object
      properties:
        id:
          type: integer
          format: int64
        columnPosition:
          type: integer
          format: int32
        columnName:
          type: string
    TaskListItemAuditDto:
      type: object
      properties:
        id:
          type: integer
          format: int64
        user:
          $ref: '#/components/schemas/UserSummaryDto'
        positionType:
          type: string
        oldPosition:
          type: integer
          format: int32
        newPosition:
          type: integer
          format: int32
        checkedAt:
          type: string
          format: date-time
        createdAt:
          type: string
          format: date-time
        updatedAt:
          type: string
          format: date-time

````