API REFERENCE

Beta

Get a Finding’s History

The finding’s audit trail, newest first, up to 500 entries. Not paged: if a finding has accumulated more than 500 recorded field changes, entries beyond the cap are not retrievable through this endpoint. In practice findings rarely approach that volume — the cap is a safety bound, not a normal limit you should expect to hit.

Each entry is one field change, not one save — an edit that changed two fields at once produces two entries, sharing the same reviewer and changedAt.

Sample

url="https://api.pointservices.com/riskinsight-services-ws/resources/v1/findings/workflows/wfpop_0000000000002082611/findings/fndg_0000000000006051384/history"
curl -X GET "${url}" \
  -H "Authorization: Bearer your_access_token_here"

Header Properties

Property Value Required?
Authorization Bearer your token true

Path Parameters

Property Description Type
workflowId The opaque handle identifying the workflow. string
findingId The opaque finding identifier (fndg_…). string

workflowId is accepted with or without its wfpop_ prefix — a bare GUID resolves. findingId and attachmentId are not interchangeable this way: either must carry its exact prefix, or the request 404s as if that finding or attachment did not exist. There is no bare form of either that has ever been valid.

Responses

200

Property Description Type
workflowId The workflow handle. string
findingId Echoed even though the URL already names it, so this response stored apart from the request that produced it still says which finding it describes. string
history Up to 500 entries, newest first. Never null — [] when the finding has no recorded history. array
links.self This collection’s own address. object
links.finding The parent finding’s address. object
history entry
Property Description Type
field The name of the field this entry changed. Omitted when the stored event names none. string
previousValue The value before the change, rendered as text. Always present, explicitly null when there was nothing to report — the only field on this entry that behaves that way. Distinguish “the field was empty” ("") from “nothing was recorded” (null). string, nullable
newValue The value after the change, rendered as text. A stored non-string value arrives as its JSON form — do not assume this always parses as a bare scalar. Omitted when the stored change recorded none. string
reviewer Who made the change, as a display summary — never an internal identifier. string
changedAt When the change was made. RFC 3339 UTC, trailing Z. Omitted when the stored event carries no instant — entries with no changedAt sort last. string
{
  "workflowId": "wfpop_0000000000002082611",
  "findingId": "fndg_0000000000006051384",
  "history": [
    {
      "field": "reviewed",
      "previousValue": "false",
      "newValue": "true",
      "reviewer": "Jane Reviewer",
      "changedAt": "2026-08-07T15:04:09Z"
    },
    {
      "field": "reviewedNotes",
      "previousValue": null,
      "newValue": "Confirmed with borrower via phone on 8/7; income supported by attached paystub.",
      "reviewer": "Jane Reviewer",
      "changedAt": "2026-08-07T15:01:42Z"
    }
  ],
  "links": {
    "self": { "href": "https://api.pointservices.com/riskinsight-services-ws/resources/v1/findings/workflows/wfpop_0000000000002082611/findings/fndg_0000000000006051384/history" },
    "finding": { "href": "https://api.pointservices.com/riskinsight-services-ws/resources/v1/findings/workflows/wfpop_0000000000002082611/findings/fndg_0000000000006051384" }
  }
}

Note the note-then-resolve sequence above: the note was recorded first (older changedAt), then the finding was resolved (newer changedAt), and both entries share reviewer with the call that produced each — consistent with Set a Finding’s Review Note and Mark a Finding Reviewed.

403

You are not authorized to read this workflow.

Zero-length body, no Content-Type. Do not attempt to parse a body from this response — there is none. Branch on the status code alone.

This surface uses a bodyless 403 for every authorization failure, which is different from a problem+json 404 on the same operation. Do not assume every non-2xx on this API carries JSON — check the status first.

A 403 is also produced at the edge, before this service is reached, when a request value resembles SQL injection or cross-site scripting, and separately from the per-address rate limit (429). Both of those are also bodyless and carry no Content-Type.

404

Unknown workflowId or unknown findingId. A finding with no recorded history is a 200 with an empty history array, never a 404.

An RFC 9457 problem document, served as application/problem+json.

Property Description Type
type An absolute URI identifying the problem type. https://pointservices.com/problems/not-found is the only type this surface emits. This is the stable value to match on. string
title A short summary, written for a person. string
status The HTTP status code, repeated in the body. number
detail An explanation of this occurrence, written for your logs — never a stable code. string
instance A URI identifying this occurrence, written as urn:pps:request:<id>. Quote it when you raise a support ticket. string
{
  "type": "https://pointservices.com/problems/not-found",
  "title": "No such resource",
  "status": 404,
  "detail": "No finding fndg_0000000000006051384 is available to this request.",
  "instance": "urn:pps:request:8d3a1f56-6c94-4e20-b7f8-0a5e9c2d4b73"
}

Branch on type, never on the text of detail.


Copyright © Pitchpoint Solutions. All rights reserved.