Kindsight Integrations API teaching reference · v20240515 · unofficial
Every endpoint, parameter and response here is extracted programmatically from the Postman collection — nothing is retyped. Quotes are verbatim; values are labelled Tier A · source-verbatim or Tier B · authored illustration. How this was built →

← Home

Deprecation done well — scores became part of profiles

Three endpoints are deprecated for a reason you can see in the data model itself.

Three endpoints tell you they're deprecated — in their own names

  • POST /score-request"DEPRECATED: Please use the /profile endpoint instead."
  • GET /score-request/:id"DEPRECATED: Please use the /profile/{id} endpoint instead."
  • GET /project/:id/scores"DEPRECATED: Please use the /project/{id}/profiles endpoint instead."

The rationale is visible in the schema

You don't have to take the deprecation on faith — the replacement's response body shows you why. Open the Profile schema: the profile object contains a complete mostRecentScore component (and a parallel pendingScore), holding everything the score-request endpoints returned — scoreDetails, rfmDetails, plannedGivingDetails, analytics, multiLensScores.

In other words, the score object was merged into the profile object. One POST /profile call now returns what previously took a profile call plus a score call. The deprecated path still works and stays documented, but every new integration should be profiles-first.

(Internal corroboration for the rationale: reference key INT-04.)

The general lesson

Good deprecation has three properties, all on display here: the replacement is named in the deprecation notice itself; the old path keeps working; and the new path is strictly better (fewer calls for more data). When you design your own API sunsets, copy this pattern.

Endpoints in this lesson