Skip to main content

Series Sync and Data Quality

Read sync state and provider health of external series, change a workspace sync interval, read quality detectors, remap series, and sync series on demand.

External series are the feeds behind the index values. Six routes show and steer them. GET /v1/price-baseline/data/series lists the series the workspace reads with their sync state, PUT /v1/price-baseline/data/series changes a workspace's sync interval or pauses a series, and GET /v1/price-baseline/data/health reports sync health per provider. GET /v1/price-baseline/data/quality counts quality detectors, POST /v1/price-baseline/data/remap moves hand-entry series to the synced series their wording names, and POST /v1/price-baseline/data/series/sync fetches series on demand.

A series definition is either shared (one definition for every workspace, shared: true, customer_id null) or workspace-owned. The connector is catalog (a publisher fetcher), library (values read from the workspace's own data library, for example grid fees), manual (entered by hand) or eex_web_rnd (a workspace-scoped research feed). The last sync outcome is last_status: ok, error, pending when a publisher job is outstanding, or need when a person must act.

GET/v1/price-baseline/data/series

Response fields

data[].key / label / unit / base_year / providerstringIdentity of the series.
data[].connectorstringcatalog, library, manual, or eex_web_rnd.
data[].sharedbooleanTrue for a definition shared by every workspace.
data[].sync_hours / activeinteger / booleanHours between syncs and whether the series is active.
data[].last_synced_at / last_status / last_error / last_storedmixedThe last sync outcome.
data[].duebooleanTrue when an active, non-manual series is past its sync interval.
data[].storedobject | nullcount, first and last period stored.
data[].contractsintegerHow many contracts of the workspace read the series.
data[].readsobject | nullThe publisher series actually read when the contract quotes a code the publisher retired.
PUT/v1/price-baseline/data/series

Body fields

key*stringSeries key, up to 120 characters.
sync_hoursintegerHours between syncs. 1 to 2160; values outside are clamped.
activebooleanfalse pauses the series.

cURL: Pause a series for this workspace

curl -X PUT "https://api.talonic.com/v1/price-baseline/data/series" \
  -H "Authorization: Bearer $TALONIC_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"key": "destatis.erdgas.boerse", "active": false}'
GET/v1/price-baseline/data/health

Response fields (inside data)

checked_atdate-timeWhen the report was built.
providers[]arrayPer provider: provider, series, read, ok, error, pending, need, never_synced, unread_failing, error_share, last_ok_at, alert.
top_errors[]arrayThe commonest failure causes: cause, status, count, providers, examples.
alerts[]string[]The alert lines.
credentialsobjectdestatis_genesis and bls_api_key as booleans: whether the credentials are configured. The values are never returned.
thresholdsobjecterror_share and min_series used for alerts.
rnd_feeds[]arrayState of the EEX website research feed (unlicensed, workspace-scoped).
GET/v1/price-baseline/data/quality

Query parameters

yearintegerPlan year. Default: the last full year
freshstring1 or true recomputes at request time instead of reading the stored snapshot.

Response fields

currentobjectThe snapshot: generated_at, year, engine_version, plan (sell_net, sell_rows, complete_rows, currency) and detectors[] with id, severity (block or watch), title, count, amount, samples, share.
previousobject | nullThe latest stored snapshot of the year from an earlier day, with taken_on; null before the first one.
regressions[]arrayDetectors of severity block whose count rose, and a sell plan that moved beyond the configured share.
warnings[]arrayRisen watch detectors.
alerts[]string[]Alert lines.
POST/v1/price-baseline/data/remap

Body fields (body optional)

dry_runbooleanReport what would move without saving.

Response fields (201, inside data)

models / variablesintegerHow many models and variables were evaluated.
mapped / restored / certainintegerCounts of mapped, restored and certain mappings.
by_seriesobjectCounts per target series.
changes[]arrayPer change: model_id, contract_key, variable, action (mapped, changed, restored, expanded), from, to, certain, why.

The remap moves a hand-entry series whose wording names a synced series onto that series, reads a variable defined as a sum of charges part by part, and undoes an earlier mapping the rules no longer make. A mapping that would change a number entered with evidence on the hand-entry series is refused and restored. Run it with dry_run: true first to read the changes before anything moves.

POST/v1/price-baseline/data/series/sync

Body fields (body optional)

keysstring[]Series to fetch immediately, up to 50. Absent: every due shared series.

Response fields (201, bare array)

[].seriesstringThe series key.
[].storedintegerValues stored.
[].errorstring | nullWhy the series could not be fetched.
[].statusstringok, error, pending or need. Absent for library series.

cURL: Sync two series now

curl -X POST "https://api.talonic.com/v1/price-baseline/data/series/sync" \
  -H "Authorization: Bearer $TALONIC_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"keys": ["destatis.erdgas.boerse", "eex.eua.month"]}'
A sync of shared series writes shared data. Fetching a catalog series, or syncing without keys, stores publisher values that every workspace reads. Pausing or re-timing a series through PUT /data/series is workspace-only, but a sync is not. A sync also runs inside the request.

Frequently asked questions

Does changing a sync interval affect other workspaces?+
No. The first edit of a shared series forks its definition into a workspace override and patches that copy, so one workspace never pauses or re-times the sync of another. sync_hours is clamped to 1 to 2160.
Does the health report expose credentials?+
No. It reports whether the GENESIS and BLS credentials are configured as booleans only, never their values, together with per-provider counts, the error share and the commonest failure causes.
What do regressions and warnings in the quality view mean?+
regressions lists detectors of severity block whose count rose against the earlier snapshot, and a sell plan that moved beyond the configured share. warnings lists risen watch detectors. Without fresh the latest stored snapshot answers; one is computed when none is stored.
Why does GET /data/series change anything?+
It creates the series definitions that the workspace's contracts and assumptions name before listing every series visible to the workspace. The listing is otherwise a read; the definitions it creates are what the sync and the interval routes then act on.