Release 0.0.2
topicIds and topicFields are replaced by a single topicQuery expression, and fact requests no longer accept a certainty threshold. Includes a copy-paste LLM prompt to migrate a codebase.
Topic scoping moves from two separate fields to one expression. topicIds and topicFields are gone; topicQuery replaces both on proof-point, fact, and manifestation requests. Fact requests also stop accepting certainty.
These are breaking changes on the new routes introduced in Release 0.0.1. Deprecated /indicators/* routes keep their own topicIds / topicFields / certainty parameters and are mapped internally, so existing integrations on those routes are unaffected.
Breaking request changes
| Removed | Replacement |
|---|---|
topicIds: [a, b] | topicQuery: "a OR b" |
topicFields: ["title"] | title: prefix per term, e.g. topicQuery: "title:a" |
topicFields: ["title", "summary"] | One term per field, e.g. topicQuery: "title:a OR summary:a" |
topicFields: ["body"] or all fields | Unprefixed term, e.g. topicQuery: "a" |
certainty: 0.8 (facts) | title: prefix, which sets the score floor |
Requests that still send the removed fields are not rejected — unknown fields are ignored, so an unmigrated caller silently returns unfiltered results. Check for topicIds and topicFields explicitly rather than relying on error responses.
topicQuery syntax
topicQuery is a Lucene-lite expression whose terms are topic UUIDs, not free text. Each UUID matches that topic and its descendants. Consecutive UUIDs are combined with implicit AND. Quotes and body: are rejected.
topicQuery | Meaning |
|---|---|
a | Mentions topic A (or children) anywhere |
a OR b | Former topicIds: [a, b] |
title:a | Topic A in title only |
title:a AND summary:b | Title has A and summary has B |
a NOT b | Has A, excludes B |
(a OR b) AND NOT c | Grouping with parentheses |
AND binds tighter than OR, so mix them with explicit parentheses. Operators are case-sensitive: lowercase and is read as a term and fails UUID parsing.
Fields map to title → topics__title, summary → topics__summary, and document or unprefixed → topics.
Certainty on facts
Field prefixes now carry what certainty used to express. On fact routes each topicQuery term sets an IS_ACTIVE_IN score floor:
| Term | Score floor |
|---|---|
title:a | 80 |
summary:a | 60 |
a or document:a | 0 |
certainty remains a response field on organization, investment, and acquisition records, and a valid sortColumn. Only the request filter was removed.
Schemas for all operations are in the OpenAPI spec and the API reference. Machine-readable docs: /llms-full.txt.
Migrate with an LLM
Paste the prompt below into Cursor, ChatGPT, or another coding agent in the repository that calls Connect.
Migrate this codebase off the removed Trendtracker Connect API request fields `topicIds`, `topicFields`, and fact `certainty` onto the single `topicQuery` expression.
Source of truth (fetch these; do not invent schemas):
- OpenAPI JSON: https://connect-api.trendtracker.ai/openapi.json
(If CONNECT_API is set, use `{CONNECT_API}/openapi.json` instead.)
- Release note with these rules: Connect API docs "Release 0.0.2".
Scope: request bodies sent to /proof-points/*, /facts/*, and /manifestations/search.
Do NOT change callers of deprecated /indicators/* routes: those keep their own
topicIds / topicFields / certainty parameters and are mapped server-side.
Rules:
1. Find every request body, client method, type, fixture, and test that sets
`topicIds`, `topicFields`, or `certainty` on a /proof-points, /facts, or
/manifestations call. These fields are silently ignored by the API, so there
is no error to grep for: search the field names.
2. Replace them with a single `topicQuery` string built from topic UUIDs:
- topicIds: [a, b] -> "a OR b"
- topicFields: ["title"] -> "title:a OR title:b"
- topicFields: ["title","summary"] -> "title:a OR summary:a OR title:b OR summary:b"
- topicFields: ["body"] or all -> "a OR b" (unprefixed)
- fact certainty >= 0.8 -> "title:a" (score floor 80)
- fact certainty >= 0.6 -> "summary:a" (score floor 60)
- fact certainty 0 -> "a" (score floor 0)
3. Terms must be topic UUIDs. Operators are AND / OR / NOT, uppercase only.
AND binds tighter than OR, so add parentheses when mixing them.
Never emit `body:` (use `document:` or no prefix) and never quote terms.
4. Keep reading `certainty` from fact RESPONSES and keep `sortColumn: "certainty"`.
Only the request filter was removed.
5. If a caller builds topic filters from user input or config, add the join
logic in one helper rather than at each call site.
6. Update tests and fixtures. Report any caller you could not map.Release 0.0.3
Project routes keep published-date start and end, add an optional activeDuring filter, and introduce activity time-series.
Release 0.0.1
Deprecated /indicators routes (except Industry TSI) are replaced by proof-points, facts, and manifestations. Includes a copy-paste LLM prompt to migrate a codebase.