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

# Each technician on each work order, one row per current assignment, with the role they hold on it.

> Each technician on each work order, one row per current assignment, with the role they hold on it.

The source for counting maintenance tickets by technician: a job with a primary and a support technician is a row for each, and `assignment_role` (PRIMARY, SUPPORT, SUPERVISOR, OBSERVER or OWNER) says which. Work orders whose type is planned are not included. `is_completed` is a status in the COMPLETED or CLOSED category. `turnaround_minutes` is from raising to closing, or to now while the job is open, as on the work order. `worker_checked_in_minutes` is this technician's own closed check-in time on the job, and nought when they never checked in.

Each row carries where the job is (business unit, site and the top of its location branch) and which team has it, so a report can be narrowed by any of them. Rows are the work orders the caller can already see.



## OpenAPI

````yaml /api-reference/openapi.json get /worker_tickets
openapi: 3.0.0
info:
  description: ''
  title: >-
    The only schema PostgREST exposes. Reads are security_invoker views; writes
    are SECURITY DEFINER functions. Rebuilt wholesale on every deploy — it holds
    no data.
  version: 12.2.3
servers:
  - url: https://app.assetinfinity.ai/api
security: []
tags:
  - name: Signing in
  - name: Profile
  - name: My work
  - name: Sites and locations
  - name: Assets
  - name: Asset lifecycle
  - name: Asset components
  - name: Kits
  - name: Work lifecycle
  - name: Work order execution
  - name: Work sequencing
  - name: Maintenance
  - name: Inspections
  - name: Checklists
  - name: Verification
  - name: Self verification
  - name: Inventory
  - name: Inventory detail
  - name: Parts demand
  - name: Procurement
  - name: Catalogue
  - name: Vendors and contracts
  - name: Contracts
  - name: Amendments
  - name: Vendor spend forecast
  - name: Workforce
  - name: Workforce detail
  - name: Capacity
  - name: Dispatch
  - name: Shutdown
  - name: Permits
  - name: Tools
  - name: Tools on jobs
  - name: Bookings
  - name: Booking hand over
  - name: Booking bills
  - name: Calibration history
  - name: Reliability
  - name: Sensors and meters
  - name: Readers
  - name: Trackers
  - name: Real-time location
  - name: Feeds
  - name: Energy
  - name: IT assets
  - name: IT asset software
  - name: IT asset topology
  - name: Warranty lookups
  - name: Map
  - name: Floor plans
  - name: Labels
  - name: Lost and found
  - name: Visitors
  - name: Root cause analysis
  - name: Costing
  - name: Finance
  - name: E-way bills
  - name: E-way bill filing
  - name: Budgets
  - name: Capex plans
  - name: Capex consolidation
  - name: Capex capitalization
  - name: FF&E plans
  - name: Documents
  - name: Document control
  - name: Document folders
  - name: Document tree
  - name: Knowledge
  - name: Reports
  - name: Dashboards
  - name: Extracts
  - name: Data exports
  - name: Audit center
  - name: Audit feed
  - name: Activity
  - name: Conversations
  - name: Notifications
  - name: Date reminders
  - name: Channels
  - name: Search
  - name: Copilot
  - name: Import
  - name: Bulk jobs
  - name: File exchange
  - name: Filing exceptions
  - name: Files
  - name: Sync
  - name: Support
  - name: API keys
  - name: Webhooks
  - name: MCP connections
  - name: MCP sign-in
  - name: SCIM provisioning
  - name: Directory sync
  - name: Security streams
  - name: Clarity
  - name: Single sign-on
  - name: Two-factor sign-in
  - name: Admin
  - name: Access
  - name: Lookups
  - name: Read models
  - name: Reference
  - name: Reference columns
  - name: Reference entry
  - name: List views
  - name: Mapping
  - name: Numbering
  - name: Branding
  - name: Custom fields
  - name: Form studio
  - name: Workflows
  - name: Workflow studio
  - name: Rules
  - name: Statuses and transitions
  - name: Currencies and locales
  - name: Today
  - name: Work configuration
  - name: Asset configuration
  - name: Inventory configuration
  - name: Tool configuration
  - name: Workforce configuration
  - name: Vendor and contract configuration
  - name: Document configuration
  - name: Inspection configuration
  - name: Sites, locations and the organisation
  - name: Setup
  - name: Features
  - name: Billing
  - name: Licence
  - name: Welcome
  - name: Tray
  - name: Tenant switch
  - name: Release
  - name: Upgrade
  - name: Telegram
  - name: Whatsapp
  - name: Inbound mail
  - name: Platform
externalDocs:
  description: PostgREST Documentation
  url: https://postgrest.org/en/v12/references/api.html
paths:
  /worker_tickets:
    get:
      tags:
        - Reports
      summary: >-
        Each technician on each work order, one row per current assignment, with
        the role they hold on it.
      description: >-
        Each technician on each work order, one row per current assignment, with
        the role they hold on it.


        The source for counting maintenance tickets by technician: a job with a
        primary and a support technician is a row for each, and
        `assignment_role` (PRIMARY, SUPPORT, SUPERVISOR, OBSERVER or OWNER) says
        which. Work orders whose type is planned are not included.
        `is_completed` is a status in the COMPLETED or CLOSED category.
        `turnaround_minutes` is from raising to closing, or to now while the job
        is open, as on the work order. `worker_checked_in_minutes` is this
        technician's own closed check-in time on the job, and nought when they
        never checked in.


        Each row carries where the job is (business unit, site and the top of
        its location branch) and which team has it, so a report can be narrowed
        by any of them. Rows are the work orders the caller can already see.
      parameters:
        - $ref: '#/components/parameters/rowFilter.worker_tickets.id'
        - $ref: '#/components/parameters/rowFilter.worker_tickets.work_order_id'
        - $ref: '#/components/parameters/rowFilter.worker_tickets.work_order_number'
        - $ref: '#/components/parameters/rowFilter.worker_tickets.title'
        - $ref: '#/components/parameters/rowFilter.worker_tickets.created_at'
        - $ref: '#/components/parameters/rowFilter.worker_tickets.status_category'
        - $ref: '#/components/parameters/rowFilter.worker_tickets.is_completed'
        - $ref: '#/components/parameters/rowFilter.worker_tickets.sla_breached'
        - $ref: '#/components/parameters/rowFilter.worker_tickets.turnaround_minutes'
        - $ref: '#/components/parameters/rowFilter.worker_tickets.work_order_type_id'
        - $ref: >-
            #/components/parameters/rowFilter.worker_tickets.work_order_type_name
        - $ref: '#/components/parameters/rowFilter.worker_tickets.priority_name'
        - $ref: '#/components/parameters/rowFilter.worker_tickets.priority_rank'
        - $ref: '#/components/parameters/rowFilter.worker_tickets.business_unit_id'
        - $ref: '#/components/parameters/rowFilter.worker_tickets.business_unit_name'
        - $ref: '#/components/parameters/rowFilter.worker_tickets.site_id'
        - $ref: '#/components/parameters/rowFilter.worker_tickets.site_name'
        - $ref: '#/components/parameters/rowFilter.worker_tickets.top_location_id'
        - $ref: '#/components/parameters/rowFilter.worker_tickets.top_location_name'
        - $ref: '#/components/parameters/rowFilter.worker_tickets.location_id'
        - $ref: '#/components/parameters/rowFilter.worker_tickets.assigned_team_id'
        - $ref: '#/components/parameters/rowFilter.worker_tickets.assigned_team_name'
        - $ref: '#/components/parameters/rowFilter.worker_tickets.worker_id'
        - $ref: '#/components/parameters/rowFilter.worker_tickets.worker_name'
        - $ref: '#/components/parameters/rowFilter.worker_tickets.assignment_role'
        - $ref: '#/components/parameters/rowFilter.worker_tickets.assigned_at'
        - $ref: >-
            #/components/parameters/rowFilter.worker_tickets.worker_checked_in_minutes
        - $ref: '#/components/parameters/select'
        - $ref: '#/components/parameters/order'
        - $ref: '#/components/parameters/range'
        - $ref: '#/components/parameters/rangeUnit'
        - $ref: '#/components/parameters/offset'
        - $ref: '#/components/parameters/limit'
        - $ref: '#/components/parameters/preferCount'
      responses:
        '200':
          content:
            application/json:
              schema:
                items:
                  $ref: '#/components/schemas/worker_tickets'
                type: array
            application/vnd.pgrst.object+json:
              schema:
                items:
                  $ref: '#/components/schemas/worker_tickets'
                type: array
            application/vnd.pgrst.object+json;nulls=stripped:
              schema:
                items:
                  $ref: '#/components/schemas/worker_tickets'
                type: array
            text/csv:
              schema:
                items:
                  $ref: '#/components/schemas/worker_tickets'
                type: array
          description: OK
        '206':
          description: Partial Content
components:
  parameters:
    rowFilter.worker_tickets.id:
      in: query
      name: id
      required: false
      schema:
        type: string
    rowFilter.worker_tickets.work_order_id:
      in: query
      name: work_order_id
      required: false
      schema:
        type: string
    rowFilter.worker_tickets.work_order_number:
      in: query
      name: work_order_number
      required: false
      schema:
        type: string
    rowFilter.worker_tickets.title:
      in: query
      name: title
      required: false
      schema:
        type: string
    rowFilter.worker_tickets.created_at:
      in: query
      name: created_at
      required: false
      schema:
        type: string
    rowFilter.worker_tickets.status_category:
      in: query
      name: status_category
      required: false
      schema:
        type: string
    rowFilter.worker_tickets.is_completed:
      in: query
      name: is_completed
      required: false
      schema:
        type: string
    rowFilter.worker_tickets.sla_breached:
      in: query
      name: sla_breached
      required: false
      schema:
        type: string
    rowFilter.worker_tickets.turnaround_minutes:
      in: query
      name: turnaround_minutes
      required: false
      schema:
        type: string
    rowFilter.worker_tickets.work_order_type_id:
      in: query
      name: work_order_type_id
      required: false
      schema:
        type: string
    rowFilter.worker_tickets.work_order_type_name:
      in: query
      name: work_order_type_name
      required: false
      schema:
        type: string
    rowFilter.worker_tickets.priority_name:
      in: query
      name: priority_name
      required: false
      schema:
        type: string
    rowFilter.worker_tickets.priority_rank:
      in: query
      name: priority_rank
      required: false
      schema:
        type: string
    rowFilter.worker_tickets.business_unit_id:
      in: query
      name: business_unit_id
      required: false
      schema:
        type: string
    rowFilter.worker_tickets.business_unit_name:
      in: query
      name: business_unit_name
      required: false
      schema:
        type: string
    rowFilter.worker_tickets.site_id:
      in: query
      name: site_id
      required: false
      schema:
        type: string
    rowFilter.worker_tickets.site_name:
      in: query
      name: site_name
      required: false
      schema:
        type: string
    rowFilter.worker_tickets.top_location_id:
      in: query
      name: top_location_id
      required: false
      schema:
        type: string
    rowFilter.worker_tickets.top_location_name:
      in: query
      name: top_location_name
      required: false
      schema:
        type: string
    rowFilter.worker_tickets.location_id:
      in: query
      name: location_id
      required: false
      schema:
        type: string
    rowFilter.worker_tickets.assigned_team_id:
      in: query
      name: assigned_team_id
      required: false
      schema:
        type: string
    rowFilter.worker_tickets.assigned_team_name:
      in: query
      name: assigned_team_name
      required: false
      schema:
        type: string
    rowFilter.worker_tickets.worker_id:
      in: query
      name: worker_id
      required: false
      schema:
        type: string
    rowFilter.worker_tickets.worker_name:
      in: query
      name: worker_name
      required: false
      schema:
        type: string
    rowFilter.worker_tickets.assignment_role:
      in: query
      name: assignment_role
      required: false
      schema:
        type: string
    rowFilter.worker_tickets.assigned_at:
      in: query
      name: assigned_at
      required: false
      schema:
        type: string
    rowFilter.worker_tickets.worker_checked_in_minutes:
      in: query
      name: worker_checked_in_minutes
      required: false
      schema:
        type: string
    select:
      description: Filtering Columns
      in: query
      name: select
      required: false
      schema:
        type: string
    order:
      description: Ordering
      in: query
      name: order
      required: false
      schema:
        type: string
    range:
      description: Limiting and Pagination
      in: header
      name: Range
      required: false
      schema:
        type: string
    rangeUnit:
      description: Limiting and Pagination
      in: header
      name: Range-Unit
      required: false
      schema:
        default: items
        type: string
    offset:
      description: Limiting and Pagination
      in: query
      name: offset
      required: false
      schema:
        type: string
    limit:
      description: Limiting and Pagination
      in: query
      name: limit
      required: false
      schema:
        type: string
    preferCount:
      description: Preference
      in: header
      name: Prefer
      required: false
      schema:
        enum:
          - count=none
        type: string
  schemas:
    worker_tickets:
      description: >-
        Each technician on each work order, one row per current assignment, with
        the role they hold on it.


        The source for counting maintenance tickets by technician: a job with a
        primary and a support technician is a row for each, and
        `assignment_role` (PRIMARY, SUPPORT, SUPERVISOR, OBSERVER or OWNER) says
        which. Work orders whose type is planned are not included.
        `is_completed` is a status in the COMPLETED or CLOSED category.
        `turnaround_minutes` is from raising to closing, or to now while the job
        is open, as on the work order. `worker_checked_in_minutes` is this
        technician's own closed check-in time on the job, and nought when they
        never checked in.


        Each row carries where the job is (business unit, site and the top of
        its location branch) and which team has it, so a report can be narrowed
        by any of them. Rows are the work orders the caller can already see.
      properties:
        assigned_at:
          format: timestamp with time zone
          type: string
        assigned_team_id:
          description: |-
            Note:
            This is a Foreign Key to `teams.id`.<fk table='teams' column='id'/>
          format: uuid
          type: string
        assigned_team_name:
          format: character varying
          maxLength: 200
          type: string
        assignment_role:
          format: character varying
          maxLength: 30
          type: string
        business_unit_id:
          description: >-
            Note:

            This is a Foreign Key to `business_units.id`.<fk
            table='business_units' column='id'/>
          format: uuid
          type: string
        business_unit_name:
          format: character varying
          maxLength: 200
          type: string
        created_at:
          format: timestamp with time zone
          type: string
        id:
          description: |-
            Note:
            This is a Primary Key.<pk/>
          format: uuid
          type: string
        is_completed:
          format: boolean
          type: boolean
        location_id:
          description: >-
            Note:

            This is a Foreign Key to `location_settings.id`.<fk
            table='location_settings' column='id'/>
          format: uuid
          type: string
        priority_name:
          format: text
          type: string
        priority_rank:
          format: smallint
          type: integer
        site_id:
          description: >-
            Note:

            This is a Foreign Key to `entry_currencies.for_site_id`.<fk
            table='entry_currencies' column='for_site_id'/>
          format: uuid
          type: string
        site_name:
          format: character varying
          maxLength: 200
          type: string
        sla_breached:
          format: boolean
          type: boolean
        status_category:
          format: character varying
          maxLength: 20
          type: string
        title:
          format: character varying
          maxLength: 250
          type: string
        top_location_id:
          format: uuid
          type: string
        top_location_name:
          format: text
          type: string
        turnaround_minutes:
          format: integer
          type: integer
        work_order_id:
          description: |-
            Note:
            This is a Primary Key.<pk/>
          format: uuid
          type: string
        work_order_number:
          format: character varying
          maxLength: 60
          type: string
        work_order_type_id:
          description: >-
            Note:

            This is a Foreign Key to `work_order_types.id`.<fk
            table='work_order_types' column='id'/>
          format: uuid
          type: string
        work_order_type_name:
          format: text
          type: string
        worker_checked_in_minutes:
          format: integer
          type: integer
        worker_id:
          description: >-
            Note:

            This is a Foreign Key to `assignable_workers.id`.<fk
            table='assignable_workers' column='id'/>
          format: uuid
          type: string
        worker_name:
          format: character varying
          maxLength: 200
          type: string
      type: object

````

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