Changelog
Changes that affect what you can call, configure or see. Dates are release dates of the early-access build.
Unreleased
- Changed (2026-08-26): flows, sources, contacts and contact lists belong to a user.
A signed-in user sees and edits only their own records; everything they create is theirs.
Tenant keys and tenant sessions see all records, filter lists with
?userKey=, and assign an owner withownerUserKey(records without an owner are private to the tenant and hidden from users). Responses carryownerUserId/ownerUserKey. A flow’s sources and contact lists, and a list’s contacts, must share the flow’s owner.tenantKeyis now unique per owner. The hourly targets sync runs once per user. A user session can start and confirm verification of its own contacts (POST /v1/contacts/{id}/verifications). See who owns what. - Available (2026-08-26): outbound webhooks. Register
httpsendpoints under/v1/webhooks(webhooks:manage) forrun.completed,flow.triggered,flow.reset,alert.sent,report.generated,user.verified,contact.verified,sources.syncedor*. Deliveries are signed (X-GrowthEngine-Signature), retried at 1 m / 5 m / 30 m / 2 h / 8 h, then dead-lettered in a queryable log with redelivery; the signing secret is shown once (rotate any time); seven days of continuous failure disables the subscription. See Webhooks. - Available (2026-08-26): Flows More Actions. The three-dot menu on a selected flow is
More Actions: Export Flow (JSON of the definition), Simulate (run as of a
chosen date and time via
POST /v1/flows/{id}/run { now }, alerts suppressed) and Inspect (past runs, tile-output chart, CSV of runs and chart data). Upload reads that JSON (and classic Growth Lab{name, model}exports) back as a draft. See Workspace. - Available (2026-08-25): toolbar Help. Help opens a short map of the workspace (Flows, Create, Flow settings, Settings) and a link to these docs.
- Improved (2026-08-25): sensor type on Sources. Sensor type is only offered on
non-area sources (it drives averaging groups). The field suggests
soil-probeand types already in your catalog. - Changed (2026-08-25): flow colours and units on Create and Edit. Flow settings sits next to Draft / Active / Paused on the Flow wizard step. It writes colours, temperature units and per-flow report branding into the draft; Create flow / Save flow persist them. Toolbar Settings is contacts, account branding and adapters only.
- Changed (2026-08-24): contacts live in Settings. Settings → Contacts is where you add people and assign them to lists. The Alerts and Reports steps only pick which lists a flow uses.
- Changed (2026-08-24): toolbar flow shortcuts removed. Create / save / run live on the Flows and Create tabs; the toolbar keeps Settings, theme, sign-in and Help.
- Available (2026-08-24): report PDF download. The public
/report/{token}page has Download PDF (brand, per-target tiles, daily-values table, optional map). See Reports. - Available (2026-08-24): alert verification in the GUI, Run opt-in. The Alerts step shows
verified / unverified badges, warns when a selected list has unverified channels, and sends
the email link or SMS code from Edit contact. Run on a flow asks whether to send alerts
(
suppressAlerts: false); scheduled runs always send. See Alerts. - Available (2026-08-24): Adapters in Settings. Sign in as tenant, then Settings → Adapters to register and edit adapters (script, write-only env, allow-list, Test, targets Sync). See Workspace and Adapters.
- Available (2026-08-24):
targetsadapters. An adapter can supply your source catalog itself (typed entries withhint,sensorTypeand geometry, keyed by your own ids); the Engine syncs it into/v1/sourceshourly and onPOST /v1/adapters/{id}/sync. Sources that disappear upstream are disabled, never deleted. See Adapters. - Available (2026-08-24):
sourceKeysin adapter requests.series/eventsrequests carry each source’stenantKeybeside the EnginesourceIds, so your adapter can look upstream data up by the id your system knows. New canonical metricmoisture.percentAvailable(0–100 %). - Available (2026-08-24): run results chart. Latest analysis has Run results: trigger bands, tile values, the combined flow trigger and the run-window marker. Area targets list the sensors that were averaged.
- Available (2026-08-24): reports. Flows can schedule reports (
settings.reports): time mode (calendar, forces a fresh run) and event mode (on trigger, 6-hour throttle), plusPOST /v1/flows/{id}/reports/send-now. The Engine freezes the payload, emails a 7-day link (opt-in, verified recipients only) and logs every attempt (GET /v1/flows/{id}/reports); the payload is public JSON atGET /reports/{token}and the GUI renders it at/report/{token}. See Reports. - Available (2026-08-24):
commsadapters. Register acomms-facet adapter to send alert and report messages through your own email / SMS / voice provider. Default emails are brand-resolved ("{brand} Report: …","{brand} Alert"). - Available (2026-08-21): tenant sessions.
POST /v1/session-tokensmints a session token with no user, so the GUI can sign in as the tenant for adapter and branding management. The session is frozen to the minting key’s scopes;GET /v1/auth/mereturnskind: "user" | "tenant"with a nullableuser. - Available (2026-08-21): branding profile. The tenant brand has
nameandlogobeside the skin (PUT /v1/branding); tenants can grant userscanOverrideBrandingto set a personal brand (PUT /v1/branding/me).GET /v1/branding/themereturns the caller-resolved{name, logo, colorSchemes, shape}. See Branding. - Available (2026-08-21): area sensor averaging. An
areatarget averages the series of same-sensorTypesensors located inside its boundary (newsensorTypefield on sources); sensors outside any area remain their own targets. See Flows & Runs. - Available (2026-08-21): Source catalog editing in the GUI. The wizard Sources step can add, edit, disable and delete sources; click the map for a point or draw a ring for a boundary. List-only sources (no geometry) remain valid.
- Available (2026-08-21): °C / °F display. Flow settings temperature units convert tile parameters, summaries and run values in the GUI; stored values and tile math stay Celsius.
- Available (2026-08-21): flow settings dialog. Temperature units, trigger / reset colours,
optional probability gradient and band notes, and per-flow report name / logo. Colours
persist as
settings.colors. - Improved (2026-08-21): stale-data protection for alerts. A target’s previous trigger
state carries forward when a run fetches no newer sensor or scout samples, so a quiet sensor
cannot flip a triggered flow to reset. The
nowoverride onPOST /runis honoured by queued runs. - Available (2026-08-21): alerts and contacts. Manage recipients (
/v1/contacts,/v1/contact-lists), verify their addresses (email link / SMS code; the Engine never sends to an unverified address) and configure per-flow alerts (settings.alerts: trigger / reset modes, per-target cooldowns, aggregation). Alerts evaluate after each scheduled run (manual runs opt in with{"suppressAlerts": false}); every send and skip is recorded. See Alerts & contacts. - Available (2026-08-20): Tenant Skins. Brand the GUI with your colours: light and dark
palettes plus optional corner radii, set via
PUT /v1/branding/skinand served merge-ready atGET /v1/branding/theme. See Tenant Skins. - Contract change (2026-08-20): runs are always asynchronous.
POST /v1/flows/{id}/runreturns 202 with the queued run; pollGET /v1/runs/{id}untilstatusis terminal. - Contract change (2026-08-20):
lastRun. The flatlastRun*fields on a flow are now a nested read-timelastRunobject ({id, status, trigger, finishedAt, triggered, probability, color}). - Available (2026-08-20): scheduling and parallel runs. Give a flow
scheduleMinutes(≥ 5) and it runs automatically while active; targets execute in parallel. Overlapping runs of the same flow are skipped (409 on run-now); a per-tenantmaxRunsPerHourcap (default 120) applies. - Breaking rename (2026-08-20): the identity pair. Every record you supply carries
displayName(GUI label) plus a stabletenantKey(your own id): sources (name→displayName,externalId→tenantKey), adapters and flows (name→displayName,tenantKeyadded), tiles (name→displayName;keyremains the stable reference). Adapter requests includeuserKey, thetenantKeyof the user behind the run. - Available (2026-08-20): adapters; the Engine stores no telemetry. Sensor series, weather
and scout events are fetched at run time from your adapters and never persisted. Push
ingestion is not offered; the
ingest:write/weather:write/events:writescopes are replaced byadapters:manage./v1/adaptersis live (per-facet script, encrypted write-only env, egress allow-list, test endpoint) anddataSource: adapteron data tiles works. See Adapters. - Available (2026-08-19): Sources.
POST/GET/PATCH/DELETE /v1/sources: one generic record with ahint(area,sensor,weather-stationor your own), optional boundary / location andtenantKey. Flows bind targets bysourceId; the Engine resolves name, geometry and timezone per run. The GUI Sources step draws satellite polygons and markers from the catalog. Scopes aresources:read|write. See Glossary. - Available (2026-08-19): the GUI runs on the Engine. Flows are stored in the Engine
(
/v1/flows), the Create palette is built fromGET /v1/tiles, tile settings dialogs are generated from each tile’s spec, and Run shows per-tile results. - Available (2026-08-19): flow engine. Seven built-in tiles (
gdd,ch,bv,wv,acc,tw,se) with self-describing specs (GET /v1/tiles,/{id},/{id}/spec); flow CRUD (/v1/flows, params validated against each tile’s schema, tile versions pinned); manual runs on generated demo data (every data tile hasdataSource: generate | adapter); run history (/v1/flows/{id}/runs,/v1/runs/{id}). See Flows & Runs. - Available (2026-08-18): tenancy and access. Tenant API keys (
/v1/keys), users (/v1/users,by-key, disable / enable), session tokens (mint / list / revoke), auth (/v1/auth/session|me|logout|sessions), cursor pagination andqsearch on every list, RFC 7807 errors withrequestId,X-Request-Id. Every route declares a gate (admin/tenant/user, hierarchical) with tenant-key scopes on top. Tenancy is flat (Tenant → Users): you manage user hierarchy in your own platform and register users with your owntenantKey; there is no username / password login, GUI sessions come from tenant-minted session tokens; email and phone addresses must be verified by the Engine before use. - Available (2026-08-18): GUI shell. Iframe bridge v1 (
lab-ready, origin-allow-listedinithandshake, token exchange) and the two-tab workspace (Flows and the Create wizard). Standalone/session?token=bootstrap. - Docs: this site.