# Findings

Source: https://docs.pitchpointsolutions.com/api/findings/index/

**Beta**

## Findings API

A finding is one thing a product noticed about your data. Read the findings a workflow produced, filter them by category or severity, and record your review: mark a finding reviewed, add a note, override its result, or attach a document.

You can call these at any time. Before a result exists a workflow has no findings yet, which is a normal answer rather than an error. A `workflow.updated` delivery is what tells you there will be data.

> **API Reference:** [Findings](https://docs.pitchpointsolutions.com/developer_guides/findings/index/) covers reading findings, reviewing them, and working with attachments.

> **API Reference:** Browse every operation, its schemas and code samples in the [API Explorer](https://docs.pitchpointsolutions.com/api/explorer/?api=findings), or download the [OpenAPI specification](https://docs.pitchpointsolutions.com/assets/openapi/findings-v1.yaml) for your own tools.

Every path below is relative to the base URL, and every one is scoped to a workflow:

```text
https://api.pointservices.com/riskinsight-services-ws/resources
```

### Reading findings

| Operation | Method and path | Reference |
|---|---|---|
| Get a Workflow's Findings Summary | `GET /v1/findings/workflows/{workflowId}` | [Findings Summary](https://docs.pitchpointsolutions.com/api/findings/get_workflow_findings/) |
| List a Workflow's Findings | `GET /v1/findings/workflows/{workflowId}/findings` | [List Findings](https://docs.pitchpointsolutions.com/api/findings/get_workflow_findings_list/) |
| Get a Workflow's Findings by Category | `GET /v1/findings/workflows/{workflowId}/bycategories` | [Findings by Category](https://docs.pitchpointsolutions.com/api/findings/get_workflow_findings_by_category/) |
| Get a Workflow's Category Counts | `GET /v1/findings/workflows/{workflowId}/categories` | [Category Counts](https://docs.pitchpointsolutions.com/api/findings/get_workflow_category_counts/) |
| Get One Finding | `GET /v1/findings/workflows/{workflowId}/findings/{findingId}` | [Get One Finding](https://docs.pitchpointsolutions.com/api/findings/get_workflow_finding/) |
| Get a Finding's History | `GET /v1/findings/workflows/{workflowId}/findings/{findingId}/history` | [Finding History](https://docs.pitchpointsolutions.com/api/findings/get_workflow_finding_history/) |

### Reviewing a finding

One call changes a finding's review note, its reviewed state and its result override. Send only the fields you want to change.

| Operation | Method and path | Reference |
|---|---|---|
| Edit a Finding | `POST /v1/findings/workflows/{workflowId}/findings/{findingId}` | [Edit a Finding](https://docs.pitchpointsolutions.com/api/findings/edit_workflow_finding/) |

### Attachments

| Operation | Method and path | Reference |
|---|---|---|
| List a Finding's Attachments | `GET /v1/findings/workflows/{workflowId}/findings/{findingId}/attachments` | [List Attachments](https://docs.pitchpointsolutions.com/api/findings/get_workflow_finding_attachments/) |
| Add an Attachment | `POST /v1/findings/workflows/{workflowId}/findings/{findingId}/attachments` | [Add an Attachment](https://docs.pitchpointsolutions.com/api/findings/create_workflow_finding_attachment/) |
| Download an Attachment | `GET /v1/findings/workflows/{workflowId}/findings/{findingId}/attachments/{attachmentId}/content` | [Download an Attachment](https://docs.pitchpointsolutions.com/api/findings/get_workflow_finding_attachment_content/) |
| Remove an Attachment | `DELETE /v1/findings/workflows/{workflowId}/findings/{findingId}/attachments/{attachmentId}` | [Remove an Attachment](https://docs.pitchpointsolutions.com/api/findings/delete_workflow_finding_attachment/) |

Adding an attachment is the one operation here that doesn't take JSON: it takes `multipart/form-data`.

Every error response that carries a body is an RFC 9457 problem document, served as `application/problem+json`. Branch on its `type`, never on the text of `title` or `detail`. Some rejections, such as those made at the edge before the service is reached, carry no JSON body at all, so handle an error response you can't parse.
