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

# Read what a remediation kit's reports found on each device

> Return what each computer last reported to a kit's Fleet reports, refreshed every hour without running anything: a count of devices per kind of finding, the devices with something left to fix (paginated, narrowed by `platform` or `status`), and the enrolled computers that have not reported yet. A computer with nothing left to fix is counted in `cleanDevices`. To add the kit first, use `addRemediationKit`. To read what one script run printed, use `getScriptRunExecutions`.

Each finding has a `status`: `IOC` (a compromised certificate was seen on the device: investigate), `EXPOSED` (a trust store still trusts a compromised root), `STALE` (the OS vendor's block has not reached the device), `UPDATE` (a runtime or binary to update or rebuild), `REVIEW` (a toolchain whose version to check) or `PRIMO` (the Primo agent's own bundle, which Primo fixes on its own), with an `area` and a `detail` that names the fix. Each reported device carries `isOnline` and `resultChangedAt`: a device reports every hour while online, and `resultChangedAt` stays put while its result does not change. `offline` lists the reported devices that are offline, clean ones included: their findings are the last they sent.

Kits: `emudhra_ca_compromise`, the eMudhra CA compromise of October 2026 (https://docs.getprimo.com/guides/security/emudhra-ca-compromise).

Key: ReadScope: Company


## OpenAPI

````yaml https://api.getprimo.com/openapi.json get /scripts/remediation-kits/{kit}/findings
openapi: 3.1.1
info:
  title: Public API - BETA
  description: Read docs on https://docs.getprimo.com/
  version: '1.0'
  contact: {}
servers:
  - url: https://api.getprimo.com
security:
  - apikey: []
tags: []
paths:
  /scripts/remediation-kits/{kit}/findings:
    get:
      tags:
        - Scripts
      summary: Read what a remediation kit's reports found on each device
      description: >-
        Return what each computer last reported to a kit's Fleet reports,
        refreshed every hour without running anything: a count of devices per
        kind of finding, the devices with something left to fix (paginated,
        narrowed by `platform` or `status`), and the enrolled computers that
        have not reported yet. A computer with nothing left to fix is counted in
        `cleanDevices`. To add the kit first, use `addRemediationKit`. To read
        what one script run printed, use `getScriptRunExecutions`.


        Each finding has a `status`: `IOC` (a compromised certificate was seen
        on the device: investigate), `EXPOSED` (a trust store still trusts a
        compromised root), `STALE` (the OS vendor's block has not reached the
        device), `UPDATE` (a runtime or binary to update or rebuild), `REVIEW`
        (a toolchain whose version to check) or `PRIMO` (the Primo agent's own
        bundle, which Primo fixes on its own), with an `area` and a `detail`
        that names the fix. Each reported device carries `isOnline` and
        `resultChangedAt`: a device reports every hour while online, and
        `resultChangedAt` stays put while its result does not change. `offline`
        lists the reported devices that are offline, clean ones included: their
        findings are the last they sent.


        Kits: `emudhra_ca_compromise`, the eMudhra CA compromise of October 2026
        (https://docs.getprimo.com/guides/security/emudhra-ca-compromise).
      operationId: getRemediationKitFindings
      parameters:
        - name: kit
          required: true
          in: path
          schema:
            type: string
        - name: status
          required: false
          in: query
          description: Only the devices with a finding of this status
          schema:
            type: string
            enum:
              - IOC
              - EXPOSED
              - STALE
              - UPDATE
              - REVIEW
              - PRIMO
        - name: platform
          required: false
          in: query
          description: Only the devices of this platform
          schema:
            type: string
            enum:
              - macos
              - windows
              - linux
        - name: page
          required: false
          in: query
          description: Page number
          schema:
            type: number
        - name: perPage
          required: false
          in: query
          description: Number of items per page (max 100)
          schema:
            type: number
      responses:
        default:
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GetRemediationKitFindings_Output'
components:
  schemas:
    GetRemediationKitFindings_Output:
      type: object
      properties:
        kit:
          type: string
          enum:
            - emudhra_ca_compromise
        reports:
          type: array
          items:
            type: object
            properties:
              name:
                type: string
              platform:
                type: string
              inFleet:
                description: 'False when the report is missing: add the kit first.'
                type: boolean
              reportedDevices:
                type: number
              unreadableDevices:
                type: number
              clipped:
                type: boolean
            required:
              - name
              - platform
              - inFleet
              - reportedDevices
              - unreadableDevices
              - clipped
            additionalProperties: false
        reportedDevices:
          type: number
          description: Devices whose last report Primo could read.
        cleanDevices:
          type: number
          description: Reported devices with nothing left to fix.
        summary:
          type: array
          description: >-
            Devices per kind of finding, over every reported device, most
            serious first.
          items:
            type: object
            properties:
              status:
                type: string
                enum:
                  - IOC
                  - EXPOSED
                  - STALE
                  - UPDATE
                  - REVIEW
                  - PRIMO
              area:
                type: string
              deviceCount:
                type: number
            required:
              - status
              - area
              - deviceCount
            additionalProperties: false
        devices:
          type: object
          description: >-
            The reported devices with at least one finding, narrowed by
            `platform` and `status`, by name.
          properties:
            data:
              type: array
              items:
                type: object
                properties:
                  deviceId:
                    type: string
                  name:
                    anyOf:
                      - type: string
                      - type: 'null'
                  platform:
                    type: string
                  ownerId:
                    description: The employee who uses the device, when one is assigned.
                    anyOf:
                      - type: string
                      - type: 'null'
                  isOnline:
                    description: Whether the device is online now.
                    anyOf:
                      - type: boolean
                      - type: 'null'
                  resultChangedAt:
                    description: >-
                      When the device last reported a different result. A device
                      reports every hour while online, and this date stays put
                      while its result does not change.
                    anyOf:
                      - type: string
                      - type: 'null'
                  findings:
                    type: array
                    items:
                      type: object
                      properties:
                        status:
                          type: string
                          enum:
                            - IOC
                            - EXPOSED
                            - STALE
                            - UPDATE
                            - REVIEW
                            - PRIMO
                        area:
                          type: string
                        detail:
                          type: string
                      required:
                        - status
                        - area
                        - detail
                      additionalProperties: false
                required:
                  - deviceId
                  - name
                  - platform
                  - ownerId
                  - isOnline
                  - resultChangedAt
                  - findings
                additionalProperties: false
            pagination:
              type: object
              properties:
                totalElements:
                  type: integer
                  minimum: 0
                  maximum: 9007199254740991
                totalPages:
                  type: integer
                  minimum: 0
                  maximum: 9007199254740991
                page:
                  type: integer
                  minimum: 1
                  maximum: 9007199254740991
                perPage:
                  type: integer
                  minimum: 1
                  maximum: 100
              required:
                - totalElements
                - totalPages
                - page
                - perPage
              additionalProperties: false
          required:
            - data
            - pagination
          additionalProperties: false
        offline:
          type: object
          description: >-
            The first 100 reported devices that are offline, clean or not: their
            findings are the last they sent.
          properties:
            total:
              type: number
            items:
              type: array
              items:
                type: object
                properties:
                  deviceId:
                    type: string
                  name:
                    anyOf:
                      - type: string
                      - type: 'null'
                  platform:
                    type: string
                  findingCount:
                    type: number
                required:
                  - deviceId
                  - name
                  - platform
                  - findingCount
                additionalProperties: false
          required:
            - total
            - items
          additionalProperties: false
        notReported:
          type: object
          properties:
            total:
              type: number
            items:
              description: >-
                The first 100 enrolled computers of the kit’s platforms that
                have not reported yet.
              type: array
              items:
                type: object
                properties:
                  deviceId:
                    type: string
                  name:
                    anyOf:
                      - type: string
                      - type: 'null'
                  platform:
                    type: string
                  isOnline:
                    anyOf:
                      - type: boolean
                      - type: 'null'
                required:
                  - deviceId
                  - name
                  - platform
                  - isOnline
                additionalProperties: false
          required:
            - total
            - items
          additionalProperties: false
      required:
        - kit
        - reports
        - reportedDevices
        - cleanDevices
        - summary
        - devices
        - offline
        - notReported
      additionalProperties: false
  securitySchemes:
    apikey:
      scheme: bearer
      bearerFormat: API key
      type: http
      description: >-
        Use your Primo API key in the Authorization header as `Bearer
        <API_KEY>`.

````

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