History API: return values split by source
The History API now supports filtering by sourceRef via path|sourceRef (#2737), which is useful when the client already knows the source.
What is still missing is a provider-agnostic way to discover/use historical sources when the client does not know them yet.
Example:
GET /signalk/v2/api/history/values?paths=navigation.headingMagnetic&from=...&to=...&splitBySource=true
Expected: return one series per historical source, using the existing values[].sourceRef field:
{
"values": [
{
"path": "navigation.headingMagnetic",
"method": "average",
"sourceRef": "can0.c03382007cfd1670"
},
{
"path": "navigation.headingMagnetic",
"method": "average",
"sourceRef": "can0.c050a008e8331bf1"
}
],
"data": [
["2026-06-16T21:32:00Z", 1.5289, 1.7188]
]
}
Use case: calibration tools need to select and compare specific historical sources without depending on the underlying history provider.
This would complement #2737: filtering works once a source is known; splitBySource=true would allow clients to discover/use source-separated historical values through the History API itself.
History API: return values split by source
The History API now supports filtering by
sourceRefviapath|sourceRef(#2737), which is useful when the client already knows the source.What is still missing is a provider-agnostic way to discover/use historical sources when the client does not know them yet.
Example:
Expected: return one series per historical source, using the existing
values[].sourceReffield:{ "values": [ { "path": "navigation.headingMagnetic", "method": "average", "sourceRef": "can0.c03382007cfd1670" }, { "path": "navigation.headingMagnetic", "method": "average", "sourceRef": "can0.c050a008e8331bf1" } ], "data": [ ["2026-06-16T21:32:00Z", 1.5289, 1.7188] ] }Use case: calibration tools need to select and compare specific historical sources without depending on the underlying history provider.
This would complement #2737: filtering works once a source is known;
splitBySource=truewould allow clients to discover/use source-separated historical values through the History API itself.