Skip to content

feat(environments-client): scalar value types Text, Number, Boolean, Options (ER-5350) - #461

Merged
serge-sedelnikov merged 2 commits into
mainfrom
ser/ER-5350-environments-client-scalar-types
Aug 28, 2026
Merged

feat(environments-client): scalar value types Text, Number, Boolean, Options (ER-5350)#461
serge-sedelnikov merged 2 commits into
mainfrom
ser/ER-5350-environments-client-scalar-types

Conversation

@serge-sedelnikov

Copy link
Copy Markdown
Contributor

Adds the scalar environment variable types Text, Number, Boolean and Options to the environments client, regenerated from the environments-api OpenAPI spec.

This is the SDK half of ER-5350. It is what lets the portal UI, journey-api and config-engine all agree on a variable's shape.

What changes

EnvironmentValueType widens from "String" | "SecretString" to include the four new types, and value widens from string to string | number | boolean | OptionsValue — a Number variable holds a JSON number, a Boolean a JSON boolean, an Options variable an object of selectable entries.

Two new exported types:

  • EnvironmentValue — the value union
  • EnvironmentOption — one entry of an Options list, carrying either a single label or a labels map keyed by language

The Text/Number/Boolean/Options split matters to browser-facing consumers: those four may be served to a browser, String and SecretString may not. SecretString is unchanged — encrypted at rest, value never returned.

value also becomes genuinely optional rather than merely absent for secrets. A variable created without one — as a blueprint install does, syncing a variable's key and type but never its value — reads back with no value at all.

protected is now declared on the variable payloads.

Breaking-ish

Consumers that exhaustively switch on EnvironmentValueType, or assign value straight to a string, will need to widen. Anything only reading String and SecretString variables is unaffected at runtime. Hence minor on both the client and @epilot/sdk; @epilot/cli is patch since it only regenerates its definitions from the client at build time.

Files

clients/environments-client/src/openapi.{json,d.ts} are the regenerated client. The packages/epilot-sdk-v2/** files are the vendored copies — sdk-v2's build is tsup only and does not re-run generate, so those are committed rather than generated at publish. packages/cli/definitions/ is deliberately untouched: the CLI regenerates it from clients/ during prepublishOnly.

Related

The rest of ER-5350, all open:

  • environments-api!28 — the API contract and storage
  • config-engine!161 — carries type across orgs on blueprint install
  • journey-api!553 — serves the browser-safe types to journeys
  • epilot360-environments!19 — the portal editors
  • epilot360-root-config!2335 — German translations

@epilot/sdk@2.19.6-alpha.0 was published from this branch so the portal MFE could be built against it. Merging here releases the real version, and the MFE's pin gets updated to match.

🤖 Generated with Claude Code

sergeysedelnikov and others added 2 commits August 28, 2026 09:48
… (ER-5350)

Co-authored-by: Claude <noreply@anthropic.com>
Without a changeset the merge publishes nothing, which is what the
frontend's pinned 2.19.6-alpha.0 is waiting to be replaced by.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>

Co-authored-by: Claude <noreply@anthropic.com>
@serge-sedelnikov
serge-sedelnikov merged commit e4ff923 into main Aug 28, 2026
7 checks passed
@serge-sedelnikov
serge-sedelnikov deleted the ser/ER-5350-environments-client-scalar-types branch August 28, 2026 12:38
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants