Skip to Content
This documentation is provided with the HEAT environment and is relevant for this HEAT instance only.
DeploymentPlatform configuration

Platform configuration

Platform configuration is a key-value store in the Core API database (PlatformConfigurations). It holds deployment-wide settings so values can be changed without rebuilding images and restored after disaster recovery.

This page documents operator and platform keys. The full legacy public_api_v1.* catalog (connection strings, Mailjet, Cosmos, and similar) is internal-only: see the engineering catalog in the monorepo at docs/src/content/_internal/platform-configuration-keys.md. Machine-readable inventory: docs/platform-config-keys.json (regenerate with node docs/scripts/extract-platform-config-keys.mjs).

Where keys are managed

SurfaceUse
Cluster ManagerConfiguration → Manage Settings for operators
v2 APIAuthenticated GET/POST/PUT under /api/v2/config (dashboard roles)
In-cluster servicesCore API GET/POST/PUT/DELETE under /api/config (privileged callers)

HEAT Auth loads the public_api_v1 prefix from Core API at startup. Python runners read runner_config via GET /api/config/runner_config (nested JSON). The scheduler reads GET /api/config/system and GET /api/config/scheduler.

Access and redaction

  • External integrators may read public_api_v1.* and frontend.facade only.
  • Keys whose names contain connectionstring or secret return **REDACTED** unless the caller has Privileged or System context.
  • Creating or updating system.* keys requires Privileged or System context.

Prefix guide

PrefixAudiencePurpose
system.*Operator / platformCore API auth, retention, statics rotation, project worker image
runner_config.*OperatorDefault object store and S3 gzip behaviour for runners
frontend.*OperatorCluster Manager login integration
report.*OperatorLegacy facade report definitions
monitoring.Grafana.*OperatorEmbedded Grafana URLs in Cluster Manager
scheduler.*OperatorScheduler poll intervals and runner pod limits (optional)
qa.*Operator (non-prod)Cypress QA user reset
public_api_v1.*Integrator (legacy)v1 cloud settings bundle (internal catalog)

system.*

KeyPurposeAffectsLimitationsDefault
system.core.auth_modeCore API authentication mode: Local, ClusterOnly, or Strict.Every Core API request via CoreAuthMiddleware.ClusterOnly requires ingress to set X-HEAT-Request-Source: external for outside traffic.Local (seeded at setup)
system.core.internal_request_privilegePrivilege for in-cluster requests without the external header.Internal service access to platform-only resources.Use System only for trusted services (for example v2 API aggregating statics). Default Privileged.Privileged
system.retention.tick_minutesMinutes between session output retention archive sweeps.Session retention background job.Integer 1-1440; invalid values fall back to ~5 minutes.~5
system.statics.global_singleton_session_rotate_hour_utcUTC hour (0-23) to rotate global singleton static backing sessions.Statics (for example Resource Monitor).Unset: no platform-wide rotation hour.(none)
system.ProjectWorkerContainerImageContainer image for project-worker (JetStream ingest).Scheduler provisioning of per-project workers.Must exist in cluster registry; privileged key.heatglobal.azurecr.io/heat-project-worker:latest

runner_config.*

Read as nested JSON from GET /api/config/runner_config (for example default_store under the runner_config object).

KeyPurposeAffectsLimitationsDefault
runner_config.default_storeDefault data source name when nodes omit dataSourceName.Python runners, system-utils dimension nodes, uploads.Must match a registered data source (usually HEAT Managed Object Store).HEAT Managed Object Store
runner_config.gzip_node_outputsWhen literal true, eligible JSON S3 node outputs may be stored gzip-compressed.system-utils S3 writers, node output download path.Empty means off.(empty, off)

frontend.*

KeyPurposeAffectsLimitationsDefault
frontend.facadeWhen true, Cluster Manager login uses HEAT Auth.Cluster Manager /login flow.Required for HEAT Auth login; setup forces true.true

report.*

Legacy v1 facade reports only. Authoring detail: monorepo docs/src/content/_internal/facade/Report.md.

KeyPurposeAffectsLimitationsDefault
report.Settings.ReportsJSON array of available report definitions.Legacy report UI and /v1/Report routing.Each entry needs matching report.Configurations.{key}.* keys.Seeded session-list entry
report.Settings.DefaultDefault report key when none is requested.Legacy report export.Must exist in report.Settings.Reports.session-list
report.Configurations.sessionList.Columns.DateColumn spec for session date.Session list reportLegacy onlyJSON column
report.Configurations.sessionList.Columns.AccountColumn spec for account name.Session list reportLegacy onlyJSON column
report.Configurations.sessionList.Columns.DimensionNameColumn spec for dimension name.Session list reportLegacy onlyJSON column
report.Configurations.sessionList.FileNameExport filename prefix.Session list CSV/exportLegacy onlySession_List
report.Configurations.{configurationKey}.*Pattern: per-report blocks (columns, FileName, and similar).Custom legacy reportsAdd keys for each configurationKey in report.Settings.Reports(operator-defined)

monitoring.Grafana.*

Operator-added keys for on-prem Grafana. Example dashboard names: CoreApi, HeatAuth, HeatScheduler, LegacyRunner, V1ExternalApi.

KeyPurposeAffectsLimitations
monitoring.Grafana.BaseUrlGrafana base URL for embeds.Cluster Manager monitoring pagesMust match live Grafana ingress
monitoring.Grafana.Dashboards.{name}Pattern: public dashboard path per service.Embedded panels in Cluster ManagerOne key per dashboard

scheduler.*

Optional keys returned as nested JSON from GET /api/config/scheduler. If missing, the scheduler uses built-in defaults (poll_interval_ms and config_update_interval_ms typically 10000).

KeyPurposeAffectsLimitations
scheduler.poll_interval_msTask polling interval (ms).Runner task claimingString numeric value
scheduler.config_update_interval_msConfig reload interval (ms).Scheduler control loopString numeric value
scheduler.limits.{runnerName}.*Pattern: min/max pods per runner type.Kubernetes runner deploymentsMust match SchedulerConfig shape

system.ProjectWorkerContainerImage is exposed to the scheduler via GET /api/config/system as ProjectWorkerContainerImage (not under the scheduler. prefix).

qa.*

Non-production Cypress environments only. See monorepo tests/qa-environments.md.

KeyPurposeAffectsLimitations
qa.enabledEnables QA user reset endpoint.HEAT Auth QaControllerNever true in production
qa.lastResetUtcLast successful reset timestamp (ISO).Written by reset endpointRuntime-written
qa.users.adminCurrent QA admin external user GUID.Cypress admin loginRuntime-written
qa.users.instructorCurrent QA instructor GUID.CypressRuntime-written
qa.users.traineeCurrent QA trainee GUID.CypressRuntime-written
qa.users.developerCurrent QA developer GUID.CypressRuntime-written

Feature toggles (legacy bundle)

The Next dashboard feature flag API reads FeatureToggleSettings.FeatureToggles from the nested public_api_v1 configuration (comma-separated names). That key lives in the public_api_v1.* internal catalog, not in the operator table above.