Trendtracker Connect

Release 0.0.5

Proof-point time series include every empty bucket in the requested period. Brand facts add a directory read, mostly perfume brands for now. Fragrance family, fragrance group, fragrance note group, and fragrance note facts add directory reads.

Proof-point time series now return the full period you ask for. A bucket with no proof points has a count of 0, so a chart from 2010 through 2025 can be drawn without filling in missing years.

This is a response change on the time-series routes introduced in Release 0.0.1. Request bodies are unchanged. Project activity time series already returned every bucket and is unchanged.

What you get back

labels and counts stay aligned. weightedCounts, when you asked for them, is 0 on the same empty buckets.

WindowSeries
start and end setEvery bucket from start through end, including leading and trailing zeros
start omittedBegins at the first bucket that has proof points, then fills through end
end omittedend still defaults to now, so zeros run through the current bucket
end set to nullStops at the last bucket that has proof points
No proof points, both bounds setThe full window, every count 0
No proof points and no startAn empty series

The same rule applies at every resolution: day, week, month, quarter, and year. A year chart is the common case; a month chart fills empty months the same way.

counts of 0 means there were no proof points in that bucket. It is not a missing or failed response.

Routes

RouteWhat changed
POST /proof-points/news-articles/time-seriesEmpty buckets in the published-date window are returned as 0
POST /proof-points/research-articles/time-seriesSame
POST /proof-points/patents/time-seriesSame
POST /proof-points/pdfs/time-seriesSame
POST /proof-points/earnings-calls/time-seriesSame
POST /proof-points/projects/time-seriesSame. start / end are still published date
POST /proof-points/projects/activity-time-seriesUnchanged

Schemas are in the OpenAPI spec and the API reference. See Proof points for the shared time-series shape.

Brands

This is an additive change. One read route exposes a brand directory. The collection is mostly perfume brands for now. These are not knowledge-graph searches: there is no topicQuery, gpeQuery, or time series.

RouteWhat it does
GET /facts/brandsA page of brands. query is an optional case-insensitive substring of name, labels, or description. ids keeps specific brands.

take is at most 100. sortColumn is name. sortDirection is desc by default. Set returnTotal to include the match count.

Each brand has name, labels (stored in lowercase; name may be included), and optional website, image, description, and people. metadata holds source URLs: fragsi, wikidata, lineage, and brandtree. metadata.organization is the company behind the brand, when one is known: name, description, image, website, city, country, founded, ticker, and alternativeNames. Source ids are left out. organizationIds are knowledge-graph organization ids when resolution succeeded.

Fragrance families and groups

This is an additive change. Two read routes expose a fragrance family directory and a fragrance group directory. A group belongs to one family. These are not knowledge-graph searches: there is no topicQuery, gpeQuery, or time series.

RouteWhat it does
GET /facts/fragrance-familiesA page of families. query is an optional case-insensitive substring of name, labels, or description. ids keeps specific families.
GET /facts/fragrance-groupsA page of groups. query works the same way. familyId keeps groups in one family. ids keeps specific groups.

take is at most 100. sortColumn is name. sortDirection is desc by default. Set returnTotal to include the match count.

Each record has name, labels (stored in lowercase; name may be included), and optional description. metadata holds source URLs: perfumeSociety, wikidata, and fragrantica. A group has family, with id and name.

Fragrance note groups and fragrance notes

This is an additive change. Two read routes expose a fragrance note group directory and a fragrance note directory. A fragrance note belongs to one group. These are not knowledge-graph searches: there is no topicQuery, gpeQuery, or time series.

RouteWhat it does
GET /facts/fragrance-note-groupsA page of groups. query is an optional case-insensitive substring of name, labels, or description. ids keeps specific groups.
GET /facts/fragrance-notesA page of fragrance notes. query is an optional case-insensitive substring of name or labels. groupId keeps fragrance notes in one group. ids keeps specific fragrance notes.

take is at most 100. sortColumn is name. sortDirection is desc by default. Set returnTotal to include the match count.

Each record has name, labels (stored in lowercase; name may be included), and optional image. A group also has an optional description. metadata.fragrantica is the Fragrantica page when one is known. A fragrance note has group, with id and name.

On this page