Skip to content

API Reference

Packages

ha.homeassistant.io/v1

Package v1 contains API Schema definitions for the ha v1 API group.

Resource Types

AlphaSpec

AlphaSpec groups experimental fields that are not yet stable enough for the top-level spec. See spec.alpha.* lifecycle: alpha (opt-in, default false) -> stable default false -> stable default true -> mandatory.

Appears in: - HomeAssistantSpec

Field Description Default Validation
networkPolicy NetworkPolicyAlphaSpec NetworkPolicy controls whether the operator creates a NetworkPolicy
restricting ingress to the Home Assistant pod.
Optional: {}
tls TLSAlphaSpec TLS groups experimental TLS integration with cert-manager. Native TLS
changes the Home Assistant pod networking/config, so it starts in
spec.alpha until it stabilizes.
Optional: {}
devices DevicePassthroughEntry array Devices declares host device nodes (e.g. /dev/ttyACM0 for a Zigbee/
Z-Wave USB coordinator) to mount into the Home Assistant container.
Each entry is mounted via a hostPath volume typed as a character
device; the container is never granted privileged: true for this.
Declaring at least one entry changes the pod's security context, so
this starts in spec.alpha until it stabilizes. This does not affect
where the pod is scheduled — the declared device(s) must already
exist on whichever node the pod lands on (see node pinning, a
separate capability) for this to be useful.
Optional: {}

AutomationAction

AutomationAction defines an action to be executed by the automation This is a flexible structure that accepts any valid Home Assistant action configuration

Appears in: - HomeAssistantAutomationSpec

AutomationCondition

AutomationCondition defines a condition that must be met for the automation to execute This is a flexible structure that accepts any valid Home Assistant condition configuration

Appears in: - HomeAssistantAutomationSpec

AutomationMode

Underlying type: string

AutomationMode defines how the automation should behave when triggered again while already running

Validation: - Enum: [single restart queued parallel]

Appears in: - HomeAssistantAutomationSpec

Field Description
single AutomationModeSingle - Do not start a new run, issue a warning
restart AutomationModeRestart - Stop previous runs and start a new one
queued AutomationModeQueued - Queue runs in order, sequential execution guaranteed
parallel AutomationModeParallel - Launch independent concurrent runs

AutomationTrigger

AutomationTrigger defines an event that will trigger the automation This is a flexible structure that accepts any valid Home Assistant trigger configuration

Appears in: - HomeAssistantAutomationSpec

BackupSpec

BackupSpec configures Home Assistant's built-in backup system via WebSocket API.

Appears in: - HomeAssistantSpec

Field Description Default Validation
enabled boolean Enabled controls whether automatic backups are configured in HA false Optional: {}
recurrence string Recurrence defines how often to create a backup daily Enum: [daily mon tue wed thu fri sat sun never]
Optional: {}
time string Time is the time of day to create the backup in HH:MM:SS 24-hour format (e.g. "03:00:00").
If empty, Home Assistant picks automatically.
Pattern: ^([01]\d\|2[0-3]):[0-5]\d:[0-5]\d$
Optional: {}
retentionCopies integer RetentionCopies is the number of backup copies to keep. Nil means unlimited. Minimum: 1
Optional: {}
retentionDays integer RetentionDays is the number of days to keep backups. Nil means unlimited. Minimum: 1
Optional: {}
includeDatabase boolean IncludeDatabase controls whether the database is included in the backup. true Optional: {}
agentIDs string array AgentIDs is the list of backup agent IDs to use
(e.g. "backup.local", "google_drive.my_drive").
Defaults to ["backup.local"] if not specified.
Optional: {}

BootstrapCredentials

BootstrapCredentials references a Secret containing admin credentials

Appears in: - BootstrapSpec

Field Description Default Validation
secretRef CredentialsSecretRef SecretRef references a Secret containing username and password

BootstrapSpec

BootstrapSpec configures automatic Home Assistant onboarding and API token creation

Appears in: - HomeAssistantSpec

Field Description Default Validation
enabled boolean Enabled controls whether automatic bootstrap is performed false Optional: {}
credentials BootstrapCredentials Credentials references a Secret containing username and password for the admin user
The Secret must have "username" and "password" keys
createApiToken boolean CreateAPIToken controls whether a long-lived access token is created after onboarding
The token is valid for 10 years and stored in a Secret
true Optional: {}
apiTokenSecretName string APITokenSecretName is the name of the Secret where the API token will be stored
The Secret will have a "token" key containing the long-lived access token
If not specified, defaults to "{homeassistant-name}-homeassistant-api-token"
Optional: {}
ownerName string OwnerName is the display name for the owner user created during onboarding Admin Optional: {}
language string Language is the language code for Home Assistant (e.g., "en", "pl") en Optional: {}
location LocationConfig Location configures the location settings during onboarding
If not specified, location configuration step is skipped
Optional: {}
analytics boolean Analytics controls whether to enable analytics during onboarding
If not specified, analytics is disabled by default
false Optional: {}

BootstrapStatus

BootstrapStatus contains the status of the automatic bootstrap process

Appears in: - HomeAssistantStatus

Field Description Default Validation
completed boolean Completed indicates whether the bootstrap process has finished successfully Optional: {}
apiTokenReady boolean APITokenReady indicates whether the API token has been created and stored Optional: {}
apiTokenSecretName string APITokenSecretName is the name of the Secret containing the API token Optional: {}
lastAttempt Time LastAttempt is the timestamp of the last bootstrap attempt Optional: {}
message string Message provides additional information about the bootstrap status Optional: {}
onboardingDoneFirstSeen Time OnboardingDoneFirstSeen is the timestamp when /api/onboarding first returned 404.
Used to implement confirmation delay without relying on condition LastTransitionTime
(which does not update when only the Reason changes).
Optional: {}
loginRecoveryAttempts integer LoginRecoveryAttempts tracks how many times login recovery was attempted.
Reset to zero when onboarding is confirmed fresh or bootstrap succeeds.
Optional: {}

ConfigurationReloadStrategy

Underlying type: string

ConfigurationReloadStrategy defines how configuration changes should be handled

Validation: - Enum: [auto hot-reload restart]

Appears in: - HomeAssistantConfigurationSpec

Field Description
auto ConfigurationReloadStrategyAuto - automatically choose best strategy based on config changes
hot-reload ConfigurationReloadStrategyHotReload - attempt to hot-reload via HA REST API
restart ConfigurationReloadStrategyRestart - force full pod restart

CredentialsSecretRef

CredentialsSecretRef references a Secret containing username and password credentials

Appears in: - BootstrapCredentials

Field Description Default Validation
name string Name of the Secret
usernameKey string UsernameKey is the key in the Secret containing the username username Optional: {}
passwordKey string PasswordKey is the key in the Secret containing the password password Optional: {}

DevicePassthroughEntry

DevicePassthroughEntry declares one host device node to expose inside the Home Assistant container.

Appears in: - AlphaSpec

Field Description Default Validation
hostPath string HostPath is the device node's path on the host, e.g. /dev/ttyACM0.
Must be an absolute path under /dev.
Required: {}
containerPath string ContainerPath is the path the device is mounted at inside the Home
Assistant container. Defaults to HostPath when omitted.
Optional: {}

GatewayParentRef

GatewayParentRef references an existing Gateway listener.

Appears in: - GatewaySpec

Field Description Default Validation
name string Name of the existing Gateway.
namespace string Namespace of the Gateway. When different from the HA namespace, the user
must provide a ReferenceGrant.
Optional: {}
sectionName string SectionName is the listener name (e.g. "https"). Optional: {}

GatewaySpec

GatewaySpec configures operator-managed Gateway API exposure for HA. Managing Gateway API routing resources (sibling to the HA pod) is a stable opt-in — it does not change the Home Assistant pod's networking or security context, so it lives at the top level rather than under spec.alpha.

Appears in: - HomeAssistantSpec

Field Description Default Validation
enabled boolean Enabled turns on operator management of Gateway API routing (HTTPRoute,
and optionally a Gateway).
false Optional: {}
host string Host is the hostname for the route and certificate. Optional: {}
issuerRef IssuerReference IssuerRef references an existing cert-manager Issuer/ClusterIssuer. When
set (and cert-manager available), the operator issues a certificate for
the listener.
Optional: {}
secretName string SecretName references a bring-your-own TLS Secret for the listener.
Takes precedence over IssuerRef.
Optional: {}
parentRef GatewayParentRef ParentRef references an existing Gateway/listener to attach the HTTPRoute
to. When empty and ManageGateway is true, the operator creates a Gateway.
Optional: {}
manageGateway boolean ManageGateway controls whether the operator also creates a Gateway
resource (not just the HTTPRoute). GatewayClass and the gateway controller
remain the platform's responsibility.
false Optional: {}
filters HTTPRouteFilter array Filters are HTTP route-level behaviors (header modification, redirect, URL
rewrite) applied, in order, to the single HTTPRoute rule the operator
manages for this instance. Omitted/empty leaves the route unchanged from
its default shape.
Optional: {}

HTTPConfig

HTTPConfig defines HTTP component configuration

Appears in: - HomeAssistantConfigurationSpec

Field Description Default Validation
corsDomains string array CorsDomains is a list of allowed CORS origins Optional: {}
trustProxy boolean TrustProxy enables trust in X-Forwarded-For header Optional: {}
useXForwardedFor boolean UseXForwardedFor enables usage of X-Forwarded-For header Optional: {}

HTTPHeader

HTTPHeader is a single HTTP header name/value pair.

Appears in: - HTTPHeaderFilter

Field Description Default Validation
name string Name of the header. MinLength: 1
Pattern: ^[A-Za-z0-9!#$%&'*+\-.^_\x60\|~]+$
Required: {}
value string Value of the header. MinLength: 1
Required: {}

HTTPHeaderFilter

HTTPHeaderFilter adds, sets, or removes HTTP headers. Used for both RequestHeaderModifier and ResponseHeaderModifier.

Appears in: - HTTPRouteFilter

Field Description Default Validation
set HTTPHeader array Set overwrites headers already present. Optional: {}
add HTTPHeader array Add appends headers, keeping any existing value. Optional: {}
remove string array Remove lists header names to strip. Optional: {}

HTTPPathModifier

HTTPPathModifier describes a path replacement for HTTPRequestRedirectFilter or HTTPURLRewriteFilter.

Appears in: - HTTPRequestRedirectFilter - HTTPURLRewriteFilter

Field Description Default Validation
type string Type selects which of the fields below applies. Enum: [ReplaceFullPath ReplacePrefixMatch]
Required: {}
replaceFullPath string ReplaceFullPath is the whole replacement path. Must be set, and only be
set, when Type is ReplaceFullPath.
Optional: {}
replacePrefixMatch string ReplacePrefixMatch is the replacement for the matched path prefix. Must
be set, and only be set, when Type is ReplacePrefixMatch.
Optional: {}

HTTPRequestRedirectFilter

HTTPRequestRedirectFilter redirects the request to a different scheme/hostname/path/port, optionally with a specific status code.

Appears in: - HTTPRouteFilter

Field Description Default Validation
scheme string Scheme replaces the request scheme (e.g. "https"). Optional: {}
hostname string Hostname replaces the request hostname. Optional: {}
path HTTPPathModifier Path replaces the request path. Optional: {}
port integer Port replaces the request port. Optional: {}
statusCode integer StatusCode is the redirect status code. Enum: [301 302 303 307 308]
Optional: {}

HTTPRouteFilter

HTTPRouteFilter is one user-declared route behavior attached to the HTTP route exposing a HomeAssistant instance through Gateway API. Mirrors the field names/shape of upstream Gateway API's own HTTPRouteFilter, limited to the four supported types: RequestHeaderModifier, ResponseHeaderModifier, RequestRedirect, URLRewrite. Exactly the sub-object matching Type must be set; the webhook rejects any other combination.

Appears in: - GatewaySpec

Field Description Default Validation
type string Type selects which of the sub-objects below applies. Enum: [RequestHeaderModifier ResponseHeaderModifier RequestRedirect URLRewrite]
Required: {}
requestHeaderModifier HTTPHeaderFilter RequestHeaderModifier modifies request headers. Must be set, and only be
set, when Type is RequestHeaderModifier.
Optional: {}
responseHeaderModifier HTTPHeaderFilter ResponseHeaderModifier modifies response headers. Must be set, and only
be set, when Type is ResponseHeaderModifier.
Optional: {}
requestRedirect HTTPRequestRedirectFilter RequestRedirect redirects the request. Must be set, and only be set,
when Type is RequestRedirect.
Optional: {}
urlRewrite HTTPURLRewriteFilter URLRewrite rewrites the request path/hostname. Must be set, and only be
set, when Type is URLRewrite.
Optional: {}

HTTPURLRewriteFilter

HTTPURLRewriteFilter rewrites the request hostname/path before it reaches Home Assistant.

Appears in: - HTTPRouteFilter

Field Description Default Validation
hostname string Hostname replaces the request hostname. Optional: {}
path HTTPPathModifier Path replaces the request path. Optional: {}

HomeAssistant

HomeAssistant is the Schema for the homeassistants API.

Appears in: - HomeAssistantList

Field Description Default Validation
apiVersion string ha.homeassistant.io/v1
kind string HomeAssistant
metadata ObjectMeta Refer to Kubernetes API documentation for fields of metadata.
spec HomeAssistantSpec
status HomeAssistantStatus

HomeAssistantArea

HomeAssistantArea is the Schema for the homeassistantareas API

Appears in: - HomeAssistantAreaList

Field Description Default Validation
apiVersion string ha.homeassistant.io/v1
kind string HomeAssistantArea
metadata ObjectMeta Refer to Kubernetes API documentation for fields of metadata. Optional: {}
spec HomeAssistantAreaSpec Required: {}
status HomeAssistantAreaStatus Optional: {}

HomeAssistantAreaList

HomeAssistantAreaList contains a list of HomeAssistantArea

Field Description Default Validation
apiVersion string ha.homeassistant.io/v1
kind string HomeAssistantAreaList
metadata ListMeta Refer to Kubernetes API documentation for fields of metadata.
items HomeAssistantArea array

HomeAssistantAreaSpec

HomeAssistantAreaSpec defines the desired state of HomeAssistantArea

Appears in: - HomeAssistantArea

Field Description Default Validation
homeAssistantRef HomeAssistantReference homeAssistantRef is a reference to the HomeAssistant CR this area belongs to Required: {}
name string name is the display name of the area in Home Assistant MinLength: 1
Required: {}
floorName string floorName is the name of the HomeAssistantFloor CR to assign this area to (resolved at reconcile time) Optional: {}
icon string icon is the Material Design Icon for the area (e.g. "mdi:sofa") Optional: {}
labels string array labels is a list of HomeAssistantLabel CR names to assign to this area (resolved at reconcile time) Optional: {}

HomeAssistantAreaStatus

HomeAssistantAreaStatus defines the observed state of HomeAssistantArea

Appears in: - HomeAssistantArea

Field Description Default Validation
areaID string areaID is the ID assigned by Home Assistant after creation Optional: {}
observedGeneration integer observedGeneration is the most recent generation observed Optional: {}
lastError string lastError contains the error message from the last failed operation
Cleared when operation succeeds
Optional: {}
conditions Condition array conditions represent the current state of the HomeAssistantArea resource Optional: {}

HomeAssistantAutomation

HomeAssistantAutomation is the Schema for the homeassistantautomations API

Appears in: - HomeAssistantAutomationList

Field Description Default Validation
apiVersion string ha.homeassistant.io/v1
kind string HomeAssistantAutomation
metadata ObjectMeta Refer to Kubernetes API documentation for fields of metadata.
spec HomeAssistantAutomationSpec
status HomeAssistantAutomationStatus

HomeAssistantAutomationList

HomeAssistantAutomationList contains a list of HomeAssistantAutomation

Field Description Default Validation
apiVersion string ha.homeassistant.io/v1
kind string HomeAssistantAutomationList
metadata ListMeta Refer to Kubernetes API documentation for fields of metadata.
items HomeAssistantAutomation array

HomeAssistantAutomationSpec

HomeAssistantAutomationSpec defines the desired state of HomeAssistantAutomation

Appears in: - HomeAssistantAutomation

Field Description Default Validation
homeAssistantRef HomeAssistantReference HomeAssistantRef references the HomeAssistant CR that will use this automation Required: {}
id string ID is a unique identifier for the automation (used by Home Assistant)
If not specified, will be auto-generated from the CR name
Must contain only lowercase letters, digits, and underscores. Existing
resources with an id predating this constraint (uppercase letters or
hyphens) keep working until their next update, which will then be
rejected until id is renamed to a conforming value.
Pattern: ^[a-z][a-z0-9_]*$
Optional: {}
alias string Alias is a user-friendly name for the automation MinLength: 1
Required: {}
description string Description provides details about what the automation does Optional: {}
triggers AutomationTrigger array Triggers define the events that will trigger this automation
At least one trigger is required
MinItems: 1
Required: {}
conditions AutomationCondition array Conditions define requirements that must be met for the automation to execute
All conditions must evaluate to true for the automation to run
Optional: {}
actions AutomationAction array Actions define the sequence of tasks to execute when triggered
At least one action is required
MinItems: 1
Required: {}
mode AutomationMode Mode defines how the automation should behave when triggered again while already running single Enum: [single restart queued parallel]
Optional: {}
max integer Max defines the maximum number of concurrent or queued runs (for queued/parallel modes) 10 Minimum: 1
Optional: {}
maxExceeded string MaxExceeded defines the log severity level when max is exceeded (silent, info, warning, error) warning Enum: [silent info warning error]
Optional: {}
initialState boolean InitialState defines whether the automation should be enabled at startup
If not specified, the last state is restored
Optional: {}
autoReload boolean AutoReload enables automatic hot-reload when automation changes
If false, requires manual reload or pod restart
true Optional: {}
enabled boolean Enabled controls whether this automation is active
Can be used to temporarily disable without deleting the CR
true Optional: {}

HomeAssistantAutomationStatus

HomeAssistantAutomationStatus defines the observed state of HomeAssistantAutomation

Appears in: - HomeAssistantAutomation

Field Description Default Validation
conditions Condition array Conditions represent the latest available observations of the HomeAssistantAutomation state Optional: {}
automationHash string AutomationHash is the SHA256 hash of the current automation configuration
Used to detect changes and determine if reload is needed
Optional: {}
lastReloadTime Time LastReloadTime is the timestamp of the last successful reload Optional: {}
lastTriggeredTime Time LastTriggeredTime is the timestamp when the automation was last triggered (if available from HA) Optional: {}
lastError string LastError contains the error message from the last failed operation
Cleared when operation succeeds
Optional: {}
lastReloadMethod string LastReloadMethod indicates how the last reload was performed
Possible values: "hot-reload", "restart", "none"
Optional: {}
observedGeneration integer ObservedGeneration reflects the generation of the most recently observed HomeAssistantAutomation Optional: {}

HomeAssistantConfiguration

HomeAssistantConfiguration is the Schema for the homeassistantconfigurations API.

Appears in: - HomeAssistantConfigurationList

Field Description Default Validation
apiVersion string ha.homeassistant.io/v1
kind string HomeAssistantConfiguration
metadata ObjectMeta Refer to Kubernetes API documentation for fields of metadata.
spec HomeAssistantConfigurationSpec
status HomeAssistantConfigurationStatus

HomeAssistantConfigurationList

HomeAssistantConfigurationList contains a list of HomeAssistantConfiguration.

Field Description Default Validation
apiVersion string ha.homeassistant.io/v1
kind string HomeAssistantConfigurationList
metadata ListMeta Refer to Kubernetes API documentation for fields of metadata.
items HomeAssistantConfiguration array

HomeAssistantConfigurationSpec

HomeAssistantConfigurationSpec defines the desired state of HomeAssistantConfiguration

Appears in: - HomeAssistantConfiguration

Field Description Default Validation
homeAssistantRef HomeAssistantReference HomeAssistantRef references the HomeAssistant CR that will use this configuration Required: {}
configuration string Configuration contains the full configuration.yaml content as a string
This is the raw YAML configuration for Home Assistant
Required: {}
reloadStrategy ConfigurationReloadStrategy ReloadStrategy defines how configuration changes should be applied auto Enum: [auto hot-reload restart]
Optional: {}
autoReload boolean AutoReload enables automatic reloading/restart when configuration changes true Optional: {}
http HTTPConfig HTTP component configuration (optional typed section) Optional: {}
logger LoggerConfig Logger component configuration (optional typed section) Optional: {}
recorder RecorderConfig Recorder component configuration (optional typed section) Optional: {}
mqtt MQTTConfig MQTT component configuration (optional typed section) Optional: {}

HomeAssistantConfigurationStatus

HomeAssistantConfigurationStatus defines the observed state of HomeAssistantConfiguration

Appears in: - HomeAssistantConfiguration

Field Description Default Validation
conditions Condition array Conditions represent the latest available observations of the HomeAssistantConfiguration state Optional: {}
configHash string ConfigHash is the SHA256 hash of the current configuration
Used to detect changes and determine if reload is needed
Optional: {}
lastReloadTime Time LastReloadTime is the timestamp of the last successful reload/restart Optional: {}
lastReloadMethod string LastReloadMethod indicates how the last reload was performed (hot-reload or restart) Optional: {}
lastError string LastError contains the error message from the last failed reload attempt
Cleared when reload succeeds
Optional: {}
observedGeneration integer Generation tracks the generation of the spec that the status reflects Optional: {}
trustedProxiesDefaulted boolean TrustedProxiesDefaulted reports whether the operator's default
http.trusted_proxies / http.use_x_forwarded_for values are currently
active in the generated configuration for the referenced HomeAssistant.
false covers every case where they are not active (not exposed via
Ingress/Gateway, opted out via spec.disableDefaultTrustedProxies, or the
user already manages these keys themselves) — see the HomeAssistant's own
ExposureReady condition message for which of those it is.
Optional: {}

HomeAssistantFloor

HomeAssistantFloor is the Schema for the homeassistantfloors API

Appears in: - HomeAssistantFloorList

Field Description Default Validation
apiVersion string ha.homeassistant.io/v1
kind string HomeAssistantFloor
metadata ObjectMeta Refer to Kubernetes API documentation for fields of metadata. Optional: {}
spec HomeAssistantFloorSpec Required: {}
status HomeAssistantFloorStatus Optional: {}

HomeAssistantFloorList

HomeAssistantFloorList contains a list of HomeAssistantFloor

Field Description Default Validation
apiVersion string ha.homeassistant.io/v1
kind string HomeAssistantFloorList
metadata ListMeta Refer to Kubernetes API documentation for fields of metadata.
items HomeAssistantFloor array

HomeAssistantFloorSpec

HomeAssistantFloorSpec defines the desired state of HomeAssistantFloor

Appears in: - HomeAssistantFloor

Field Description Default Validation
homeAssistantRef HomeAssistantReference homeAssistantRef is a reference to the HomeAssistant CR this floor belongs to Required: {}
name string name is the display name of the floor in Home Assistant MinLength: 1
Required: {}
level integer level is the floor level (e.g. 0 for ground, 1 for first, -1 for basement) Optional: {}
icon string icon is the Material Design Icon for the floor (e.g. "mdi:home-floor-1") Optional: {}

HomeAssistantFloorStatus

HomeAssistantFloorStatus defines the observed state of HomeAssistantFloor

Appears in: - HomeAssistantFloor

Field Description Default Validation
floorID string floorID is the ID assigned by Home Assistant after creation Optional: {}
observedGeneration integer observedGeneration is the most recent generation observed Optional: {}
lastError string lastError contains the error message from the last failed operation
Cleared when operation succeeds
Optional: {}
conditions Condition array conditions represent the current state of the HomeAssistantFloor resource Optional: {}

HomeAssistantIntegration

HomeAssistantIntegration manages a Home Assistant integration (config entry) via the Config Flow API. It supports create, adopt, reconfigure (delete+re-create on spec change), and cleanup via finalizer. Only single-step Config Flows are supported (e.g. mqtt, recorder, esphome).

Appears in: - HomeAssistantIntegrationList

Field Description Default Validation
apiVersion string ha.homeassistant.io/v1
kind string HomeAssistantIntegration
metadata ObjectMeta Refer to Kubernetes API documentation for fields of metadata.
spec HomeAssistantIntegrationSpec
status HomeAssistantIntegrationStatus

HomeAssistantIntegrationList

HomeAssistantIntegrationList contains a list of HomeAssistantIntegration

Field Description Default Validation
apiVersion string ha.homeassistant.io/v1
kind string HomeAssistantIntegrationList
metadata ListMeta Refer to Kubernetes API documentation for fields of metadata.
items HomeAssistantIntegration array

HomeAssistantIntegrationSpec

HomeAssistantIntegrationSpec defines the desired state of HomeAssistantIntegration

Appears in: - HomeAssistantIntegration

Field Description Default Validation
homeAssistantRef HomeAssistantReference HomeAssistantRef references the HomeAssistant instance to configure Required: {}
domain string Domain is the integration name in Home Assistant (e.g. "mqtt", "esphome", "recorder") MinLength: 1
Required: {}
configuration object (keys:string, values:IntegrationValue) Configuration contains fields submitted to the Config Flow (single-step flows only).
Keys are field names from the data_schema; values are plain text or Secret references.
Optional: {}

HomeAssistantIntegrationStatus

HomeAssistantIntegrationStatus defines the observed state of HomeAssistantIntegration

Appears in: - HomeAssistantIntegration

Field Description Default Validation
entryID string EntryID is the Home Assistant config entry ID created or adopted by the Config Flow Optional: {}
configHash string ConfigHash is the SHA256 hash of the resolved configuration values.
Used to detect spec changes and trigger reconfiguration (delete + re-create).
Optional: {}
conditions Condition array Conditions represent the latest available observations of the integration state Optional: {}
lastError string LastError contains the error message from the last failed operation
Cleared when operation succeeds
Optional: {}
observedGeneration integer ObservedGeneration reflects the generation of the most recently observed CR Optional: {}

HomeAssistantLabel

HomeAssistantLabel is the Schema for the homeassistantlabels API

Appears in: - HomeAssistantLabelList

Field Description Default Validation
apiVersion string ha.homeassistant.io/v1
kind string HomeAssistantLabel
metadata ObjectMeta Refer to Kubernetes API documentation for fields of metadata. Optional: {}
spec HomeAssistantLabelSpec Required: {}
status HomeAssistantLabelStatus Optional: {}

HomeAssistantLabelList

HomeAssistantLabelList contains a list of HomeAssistantLabel

Field Description Default Validation
apiVersion string ha.homeassistant.io/v1
kind string HomeAssistantLabelList
metadata ListMeta Refer to Kubernetes API documentation for fields of metadata.
items HomeAssistantLabel array

HomeAssistantLabelSpec

HomeAssistantLabelSpec defines the desired state of HomeAssistantLabel

Appears in: - HomeAssistantLabel

Field Description Default Validation
homeAssistantRef HomeAssistantReference homeAssistantRef is a reference to the HomeAssistant CR this label belongs to Required: {}
name string name is the display name of the label in Home Assistant MinLength: 1
Required: {}
icon string icon is the Material Design Icon for the label (e.g. "mdi:tag") Optional: {}
color string color is the label color (e.g. "red", "blue", "green") Optional: {}

HomeAssistantLabelStatus

HomeAssistantLabelStatus defines the observed state of HomeAssistantLabel

Appears in: - HomeAssistantLabel

Field Description Default Validation
labelID string labelID is the ID assigned by Home Assistant after creation Optional: {}
observedGeneration integer observedGeneration is the most recent generation observed Optional: {}
lastError string lastError contains the error message from the last failed operation
Cleared when operation succeeds
Optional: {}
conditions Condition array conditions represent the current state of the HomeAssistantLabel resource Optional: {}

HomeAssistantList

HomeAssistantList contains a list of HomeAssistant.

Field Description Default Validation
apiVersion string ha.homeassistant.io/v1
kind string HomeAssistantList
metadata ListMeta Refer to Kubernetes API documentation for fields of metadata.
items HomeAssistant array

HomeAssistantPhase

Underlying type: string

HomeAssistantPhase represents the current phase of the HomeAssistant instance.

Validation: - Enum: [Pending Running Failed Unknown]

Appears in: - HomeAssistantStatus

Field Description
Pending
Running
Failed
Unknown

HomeAssistantReference

HomeAssistantReference references a HomeAssistant CR.

Appears in: - HomeAssistantAreaSpec - HomeAssistantAutomationSpec - HomeAssistantConfigurationSpec - HomeAssistantFloorSpec - HomeAssistantIntegrationSpec - HomeAssistantLabelSpec - HomeAssistantSceneSpec - HomeAssistantScriptSpec - HomeAssistantSecretsSpec

Field Description Default Validation
name string Name of the HomeAssistant resource MinLength: 1
Required: {}

HomeAssistantScene

HomeAssistantScene is the Schema for the homeassistantscenes API

Appears in: - HomeAssistantSceneList

Field Description Default Validation
apiVersion string ha.homeassistant.io/v1
kind string HomeAssistantScene
metadata ObjectMeta Refer to Kubernetes API documentation for fields of metadata.
spec HomeAssistantSceneSpec
status HomeAssistantSceneStatus

HomeAssistantSceneList

HomeAssistantSceneList contains a list of HomeAssistantScene

Field Description Default Validation
apiVersion string ha.homeassistant.io/v1
kind string HomeAssistantSceneList
metadata ListMeta Refer to Kubernetes API documentation for fields of metadata.
items HomeAssistantScene array

HomeAssistantSceneSpec

HomeAssistantSceneSpec defines the desired state of HomeAssistantScene

Appears in: - HomeAssistantScene

Field Description Default Validation
homeAssistantRef HomeAssistantReference HomeAssistantRef references the HomeAssistant CR that will use this scene Required: {}
id string ID is a unique identifier for the scene (used by Home Assistant)
If not specified, will be auto-generated from the CR name
Must contain only lowercase letters, digits, and underscores. Existing
resources with an id predating this constraint (uppercase letters or
hyphens) keep working until their next update, which will then be
rejected until id is renamed to a conforming value.
Pattern: ^[a-z][a-z0-9_]*$
Optional: {}
name string Name is a user-friendly name for the scene (displayed in Home Assistant UI)
If not specified, the CR name will be used
MinLength: 1
Optional: {}
icon string Icon is a Material Design icon for the scene (e.g., "mdi:movie", "mdi:candle")
See https://mdi.bessarabov.com/ for available icons
Optional: {}
entities SceneEntity array Entities define the list of devices and their states to set when scene is activated
At least one entity is required
MinItems: 1
Required: {}
autoReload boolean AutoReload enables automatic hot-reload when scene configuration changes
If false, requires manual reload or pod restart
true Optional: {}

HomeAssistantSceneStatus

HomeAssistantSceneStatus defines the observed state of HomeAssistantScene

Appears in: - HomeAssistantScene

Field Description Default Validation
conditions Condition array Conditions represent the latest available observations of the HomeAssistantScene state Optional: {}
sceneHash string SceneHash is the SHA256 hash of the current scene configuration
Used to detect changes and determine if reload is needed
Optional: {}
lastReloadTime Time LastReloadTime is the timestamp of the last successful reload Optional: {}
lastActivated Time LastActivated is the timestamp when the scene was last activated (if available from HA) Optional: {}
lastError string LastError contains the error message from the last failed operation
Cleared when operation succeeds
Optional: {}
entityCount integer EntityCount is the number of entities defined in the scene
Updated by the controller for display in kubectl output
Optional: {}
observedGeneration integer ObservedGeneration reflects the generation of the most recently observed HomeAssistantScene Optional: {}

HomeAssistantScript

HomeAssistantScript is the Schema for the homeassistantscripts API

Appears in: - HomeAssistantScriptList

Field Description Default Validation
apiVersion string ha.homeassistant.io/v1
kind string HomeAssistantScript
metadata ObjectMeta Refer to Kubernetes API documentation for fields of metadata.
spec HomeAssistantScriptSpec
status HomeAssistantScriptStatus

HomeAssistantScriptList

HomeAssistantScriptList contains a list of HomeAssistantScript

Field Description Default Validation
apiVersion string ha.homeassistant.io/v1
kind string HomeAssistantScriptList
metadata ListMeta Refer to Kubernetes API documentation for fields of metadata.
items HomeAssistantScript array

HomeAssistantScriptSpec

HomeAssistantScriptSpec defines the desired state of HomeAssistantScript

Appears in: - HomeAssistantScript

Field Description Default Validation
homeAssistantRef HomeAssistantReference HomeAssistantRef references the HomeAssistant CR that will use this script Required: {}
id string ID is a unique identifier for the script (used by Home Assistant)
If not specified, will be auto-generated from the CR name
Must contain only lowercase letters, digits, and underscores
Pattern: ^[a-z][a-z0-9_]*$
Optional: {}
alias string Alias is a user-friendly name for the script MinLength: 1
Required: {}
description string Description provides details about what the script does Optional: {}
icon string Icon is a Material Design icon for the script (e.g., "mdi:script", "mdi:play")
See https://mdi.bessarabov.com/ for available icons
Optional: {}
sequence ScriptAction array Sequence defines the list of actions to execute when the script is called
At least one action is required
MinItems: 1
Required: {}
fields object (keys:string, values:ScriptField) Fields define input parameters for the script
These allow the script to accept arguments when called
Optional: {}
mode ScriptMode Mode defines how the script should behave when called again while already running single Enum: [single restart queued parallel]
Optional: {}
max integer Max defines the maximum number of concurrent or queued runs (for queued/parallel modes) 10 Minimum: 1
Optional: {}
maxExceeded string MaxExceeded defines the log severity level when max is exceeded (silent, info, warning, error) warning Enum: [silent info warning error]
Optional: {}
autoReload boolean AutoReload enables automatic hot-reload when script changes
If false, requires manual reload or pod restart
true Optional: {}

HomeAssistantScriptStatus

HomeAssistantScriptStatus defines the observed state of HomeAssistantScript

Appears in: - HomeAssistantScript

Field Description Default Validation
conditions Condition array Conditions represent the latest available observations of the HomeAssistantScript state Optional: {}
scriptHash string ScriptHash is the SHA256 hash of the current script configuration
Used to detect changes and determine if reload is needed
Optional: {}
lastReloadTime Time LastReloadTime is the timestamp of the last successful reload Optional: {}
lastRunTime Time LastRunTime is the timestamp when the script was last executed (if available from HA) Optional: {}
lastError string LastError contains the error message from the last failed operation
Cleared when operation succeeds
Optional: {}
lastReloadMethod string LastReloadMethod indicates how the last reload was performed
Possible values: "hot-reload" (success), "failed" (all retries exhausted), "none" (skipped/initial)
Optional: {}
observedGeneration integer ObservedGeneration reflects the generation of the most recently observed HomeAssistantScript Optional: {}

HomeAssistantSecrets

HomeAssistantSecrets is the Schema for the homeassistantsecrets API.

Appears in: - HomeAssistantSecretsList

Field Description Default Validation
apiVersion string ha.homeassistant.io/v1
kind string HomeAssistantSecrets
metadata ObjectMeta Refer to Kubernetes API documentation for fields of metadata.
spec HomeAssistantSecretsSpec
status HomeAssistantSecretsStatus

HomeAssistantSecretsList

HomeAssistantSecretsList contains a list of HomeAssistantSecrets.

Field Description Default Validation
apiVersion string ha.homeassistant.io/v1
kind string HomeAssistantSecretsList
metadata ListMeta Refer to Kubernetes API documentation for fields of metadata.
items HomeAssistantSecrets array

HomeAssistantSecretsSpec

HomeAssistantSecretsSpec defines the desired state of HomeAssistantSecrets.

Appears in: - HomeAssistantSecrets

Field Description Default Validation
homeAssistantRef HomeAssistantReference HomeAssistantRef references the HomeAssistant CR that will use these secrets Required: {}
secretRefs SecretKeyReference array SecretRefs is a list of references to Kubernetes Secrets.
Keys from these Secrets will be merged into the generated secrets.yaml
MinItems: 1
Required: {}
autoRestart boolean AutoRestart controls whether the Home Assistant pod should be automatically
restarted when secrets change. When enabled, the controller updates an annotation
on the StatefulSet to trigger a rolling restart.
true Optional: {}

HomeAssistantSecretsStatus

HomeAssistantSecretsStatus defines the observed state of HomeAssistantSecrets.

Appears in: - HomeAssistantSecrets

Field Description Default Validation
conditions Condition array Conditions represent the latest available observations of the HomeAssistantSecrets state Optional: {}
secretsHash string SecretsHash is the SHA256 hash of the generated secrets.yaml content.
Used to detect changes and trigger pod restarts.
Optional: {}
lastUpdated Time LastUpdated is the timestamp when the secrets were last updated Optional: {}
observedGeneration integer ObservedGeneration reflects the generation of the most recently observed HomeAssistantSecrets Optional: {}
lastError string LastError contains a human-readable description of the last error encountered Optional: {}

HomeAssistantSpec

HomeAssistantSpec defines the desired state of HomeAssistant.

Appears in: - HomeAssistant

Field Description Default Validation
version string Version is the Home Assistant version/tag to deploy (e.g., "2024.1.0", "stable", "latest") stable Optional: {}
image string Image allows overriding the default Home Assistant image ghcr.io/home-assistant/home-assistant Optional: {}
storage StorageSpec Storage configuration for Home Assistant data Optional: {}
resources ResourceRequirements Resources defines CPU and memory requests/limits Optional: {}
service ServiceSpec Service configuration for exposing Home Assistant Optional: {}
ingress IngressSpec Ingress configuration for external access Optional: {}
gateway GatewaySpec Gateway configures operator-managed Gateway API exposure (HTTPRoute, and
optionally a Gateway) for Home Assistant, with optional cert-manager TLS.
Optional: {}
timezone string Timezone for the Home Assistant instance (e.g., "Europe/Warsaw") UTC Optional: {}
secretsFrom SecretReference SecretsFrom references a Secret containing secrets.yaml
The Secret should have a key "secrets.yaml" with the HA secrets
Optional: {}
hostNetwork boolean HostNetwork enables host networking for the Home Assistant pod.
When true, the pod uses the host's network namespace, enabling discovery
of IoT devices via mDNS, SSDP, and DHCP on the local network.
Optional: {}
bootstrap BootstrapSpec Bootstrap configures automatic onboarding and API token creation
When enabled, the operator will automatically complete the Home Assistant
onboarding process and create a long-lived access token for API access
Optional: {}
backup BackupSpec Backup configures automatic backups using Home Assistant's built-in backup system.
Requires bootstrap with API token enabled.
Optional: {}
disableDefaultTrustedProxies boolean DisableDefaultTrustedProxies opts out of the operator's automatic
http.trusted_proxies / http.use_x_forwarded_for defaults. When Ingress or
Gateway API exposure is enabled, Home Assistant rejects every request
through that endpoint with 400 Bad Request until it trusts the proxy
forwarding the request. Unless this is set to true, and unless the user
has already set these keys themselves in HomeAssistantConfiguration (or
manages http: entirely externally, e.g. via an !include tag), the
operator injects the RFC1918 private address ranges (10.0.0.0/8,
172.16.0.0/12, 192.168.0.0/16) as sensible defaults — this cannot be a
reliable autodetection of the real cluster CIDR, only a conservative
guess, so this field exists to opt out entirely for clusters where it
doesn't apply (e.g. non-RFC1918 pod/service networks, or where other
workloads on the pod network should not be trusted to set
X-Forwarded-For for the actual Ingress/Gateway proxy).
Optional: {}
scheduling SchedulingSpec Scheduling controls where the Home Assistant pod is eligible to run and
how it is treated under resource contention, using Kubernetes' own
well-tested scheduling primitives directly (node selector, node/pod
affinity and anti-affinity, tolerations, priority class) rather than a
project-specific abstraction. Ships on the stable spec (not
spec.alpha.*): the operator only passes these fields through to the
generated pod template unchanged, it does not implement any new
scheduling behavior of its own.
Optional: {}
alpha AlphaSpec Alpha groups experimental, unstable fields. Fields here may change or be
removed without a deprecation notice.
Optional: {}

HomeAssistantStatus

HomeAssistantStatus defines the observed state of HomeAssistant.

Appears in: - HomeAssistant

Field Description Default Validation
phase HomeAssistantPhase Phase represents the current lifecycle phase of the HomeAssistant instance Enum: [Pending Running Failed Unknown]
Optional: {}
conditions Condition array Conditions represent the latest available observations of the HomeAssistant state Optional: {}
version string Version is the currently deployed Home Assistant version Optional: {}
url string URL is the access URL for Home Assistant (if Ingress is enabled) Optional: {}
ready boolean Ready indicates if the Home Assistant instance is ready to serve traffic Optional: {}
observedGeneration integer ObservedGeneration reflects the generation of the most recently observed HomeAssistant Optional: {}
bootstrap BootstrapStatus BootstrapStatus contains the status of the automatic bootstrap process Optional: {}
selfUnbanCount integer SelfUnbanCount is the total number of ban-recovery pod restarts. Kept for
backwards compatibility; prefer BanRestartWindowCount for limit enforcement.
Optional: {}
lastSelfUnban Time LastSelfUnban is the timestamp of the most recent ban-recovery pod restart. Optional: {}
banRestartWindowStart Time BanRestartWindowStart is the start of the current ban-recovery sliding window.
Nil means no window is active (no ban seen or window has expired).
Optional: {}
banRestartWindowCount integer BanRestartWindowCount is the number of ban-recovery pod restarts within the
current sliding window. When it reaches banRestartMaxCount the operator stops
restarting and sets condition BanRecoveryFailed=True.
Optional: {}

IngressSpec

IngressSpec defines external access configuration.

Appears in: - HomeAssistantSpec

Field Description Default Validation
enabled boolean Enabled controls whether an Ingress resource is created false Optional: {}
host string Host is the hostname for the Ingress (e.g., "ha.example.com") Optional: {}
ingressClassName string IngressClassName specifies the Ingress controller to use Optional: {}
tls IngressTLSSpec TLS configuration Optional: {}
annotations object (keys:string, values:string) Annotations to add to the Ingress resource Optional: {}

IngressTLSSpec

IngressTLSSpec defines TLS configuration for Ingress.

Appears in: - IngressSpec

Field Description Default Validation
enabled boolean Enabled controls whether TLS is enabled false Optional: {}
secretName string SecretName containing the TLS certificate. When set, it is used as-is
(bring-your-own) and takes precedence over IssuerRef.
Optional: {}
issuerRef IssuerReference IssuerRef references an existing cert-manager Issuer/ClusterIssuer. When
set and cert-manager is available, the operator creates a Certificate for
the Ingress TLS Secret. Ignored when SecretName is provided.
Optional: {}

InitContainerSpec

InitContainerSpec configures the image used for the config-init init container.

Appears in: - StorageSpec

Field Description Default Validation
repository string Repository is the container image repository (e.g. "docker.io/library") docker.io/library Optional: {}
image string Image is the container image name (e.g. "busybox") busybox Optional: {}
tag string Tag is the container image tag (e.g. "1.36", "latest") 1.36 Optional: {}

IntegrationSecretKeyRef

IntegrationSecretKeyRef references a specific key within a Kubernetes Secret

Appears in: - IntegrationValue

Field Description Default Validation
name string Name of the Secret MinLength: 1
key string Key within the Secret MinLength: 1

IntegrationValue

IntegrationValue holds a plain text value, a JSON value, or a reference to a Kubernetes Secret key. Exactly one of Value, JSONValue, or SecretKeyRef must be set.

Appears in: - HomeAssistantIntegrationSpec

Field Description Default Validation
value string Value is a plain text configuration value sent as a string to the Config Flow API. Optional: {}
jsonValue string JSONValue is a JSON-encoded value that will be parsed and sent as a native JSON
object to the Config Flow API. Use this for fields that expect a dictionary or
array (e.g. location: '{"latitude": 54.17, "longitude": 18.55}').
Optional: {}
secretKeyRef IntegrationSecretKeyRef SecretKeyRef references a key in a Kubernetes Secret Optional: {}

IssuerReference

IssuerReference references a cert-manager Issuer or ClusterIssuer. The operator only references issuers — it never creates application issuers.

Appears in: - GatewaySpec - IngressTLSSpec - NativeTLSAlphaSpec

Field Description Default Validation
name string Name of the Issuer/ClusterIssuer.
kind string Kind of the issuer. Issuer Enum: [Issuer ClusterIssuer]
Optional: {}
group string Group of the issuer API. cert-manager.io Optional: {}

LocationConfig

LocationConfig defines location settings for Home Assistant onboarding

Appears in: - BootstrapSpec

Field Description Default Validation
name string Name is the location name (e.g., "Home", "Warsaw") Optional: {}
latitude string Latitude in decimal degrees (e.g., "52.2297") Pattern: ^-?([0-8]?[0-9](\.[0-9]+)?\|90(\.0+)?)$
Optional: {}
longitude string Longitude in decimal degrees (e.g., "21.0122") Pattern: ^-?(1[0-7][0-9](\.[0-9]+)?\|[0-9]\{1,2\}(\.[0-9]+)?\|180(\.0+)?)$
Optional: {}
elevation integer Elevation in meters Optional: {}
unitSystem string UnitSystem defines the unit system ("metric" or "us_customary") metric Enum: [metric us_customary]
Optional: {}
currency string Currency is the ISO 4217 currency code (e.g., "USD", "EUR", "PLN") Optional: {}
timeZone string TimeZone is the IANA timezone (e.g., "Europe/Warsaw", "America/New_York")
If not specified, uses spec.timezone
Optional: {}

LoggerConfig

LoggerConfig defines logging component configuration

Appears in: - HomeAssistantConfigurationSpec

Field Description Default Validation
defaultLevel string DefaultLevel is the default logging level (DEBUG, INFO, WARNING, ERROR, CRITICAL) INFO Optional: {}
logs object (keys:string, values:string) Logs is a map of component names to their logging levels
Example: {"homeassistant.core": "DEBUG", "homeassistant.components.mqtt": "DEBUG"}
Optional: {}

MQTTConfig

MQTTConfig defines MQTT component configuration

Appears in: - HomeAssistantConfigurationSpec

Field Description Default Validation
broker string Broker is the MQTT broker address (e.g., "mqtt://localhost:1883") Required: {}
username string Username for MQTT authentication Optional: {}
passwordRef SecretKeySelector PasswordRef references a Secret containing the MQTT password
The Secret should have a "password" key
Optional: {}
clientID string ClientID for MQTT connection Optional: {}
keepAlive integer KeepAlive defines MQTT keep-alive interval in seconds 60 Optional: {}

NativeTLSAlphaSpec

NativeTLSAlphaSpec configures native TLS termination inside Home Assistant.

Appears in: - TLSAlphaSpec

Field Description Default Validation
enabled boolean Enabled turns on native TLS. Home Assistant serves HTTPS on its existing
port (8123); the Service port is unchanged. Requires cert-manager to be
installed (or a bring-your-own SecretName). When cert-manager is absent,
the operator reports a status condition and keeps serving HTTP.
Deliberately without omitempty (see NetworkPolicyAlphaSpec.Enabled).
false Optional: {}
issuerRef IssuerReference IssuerRef references an existing cert-manager Issuer/ClusterIssuer used to
issue the certificate. Required unless SecretName (bring-your-own) is set.
Optional: {}
dnsNames string array DNSNames are additional SANs for the certificate. The operator always adds
the in-cluster Service FQDN so it can trust HA over HTTPS.
Optional: {}
secretName string SecretName references a user-provided TLS Secret (bring-your-own). When
set, the operator does not create a cert-manager Certificate and this
Secret takes precedence over IssuerRef.
Optional: {}

NetworkPolicyAlphaSpec

NetworkPolicyAlphaSpec configures the (alpha) NetworkPolicy created for the Home Assistant pod.

Appears in: - AlphaSpec

Field Description Default Validation
enabled boolean Enabled controls whether the operator creates a NetworkPolicy for the
Home Assistant pod, restricting ingress to the operator's namespace and
the Home Assistant namespace on the Service port. Egress is left
unrestricted (Home Assistant needs broad, unpredictable egress to IoT
devices, cloud APIs, and MQTT brokers).
NetworkPolicy operates on pod IPs — it does not restrict traffic
arriving via the host network interface. Combining this with
spec.hostNetwork: true gives only partial isolation.
Deliberately without omitempty: this field represents explicit user
intent, and the spec.alpha lifecycle plans to flip its default to true
in a later phase — omitempty would let an explicit false be dropped and
silently re-defaulted to true by the API server once that happens.
false Optional: {}

RecorderConfig

RecorderConfig defines recorder (database) component configuration

Appears in: - HomeAssistantConfigurationSpec

Field Description Default Validation
enabled boolean Enabled controls if the recorder is enabled true Optional: {}
database string Database URL for the recorder (e.g., "postgresql://user:pass@host/db")
If not specified, uses SQLite with default path.
Mutually exclusive with DatabaseSecretRef; DatabaseSecretRef takes precedence.
Optional: {}
databaseSecretRef SecretKeySelector DatabaseSecretRef references a Secret containing the database URL.
The resolved value is written as plain text into configuration.yaml,
avoiding the !secret tag which is stripped by the YAML round-trip.
Takes precedence over Database if both are set.
The Secret must be in the same namespace as the HomeAssistant CR.
Optional: {}
purgeKeepDays integer PurgeKeepDays specifies how many days of history to keep 30 Minimum: 1
Optional: {}

SceneEntity

SceneEntity represents a single entity (device) in a scene with its desired state

Appears in: - HomeAssistantSceneSpec

Field Description Default Validation
entity_id string EntityID is the Home Assistant entity identifier in format domain.object_id
Examples: light.living_room, switch.fan, climate.bedroom
Pattern: ^[a-z_]+\.[a-z0-9_]+$
Required: {}
state string State is the desired state for this entity
Examples: "on", "off", numeric values
Required: {}
attributes RawExtension Attributes contains additional entity-specific attributes
Examples: brightness, color_temp, rgb_color for lights
This is a flexible structure that accepts any valid Home Assistant entity attributes
Type: object
Optional: {}

SchedulingSpec

SchedulingSpec declares Kubernetes-native pod scheduling constraints for the Home Assistant pod. Every field is optional and copied verbatim onto the generated StatefulSet's pod template; leaving all of them unset preserves today's freely-schedulable, default-priority behavior.

Appears in: - HomeAssistantSpec

Field Description Default Validation
nodeSelector object (keys:string, values:string) NodeSelector restricts the pod to nodes matching all of these labels. Optional: {}
affinity Affinity Affinity declares node affinity/anti-affinity and pod
affinity/anti-affinity rules, using Kubernetes' own Affinity semantics
unchanged. Both node-level placement (e.g. "prefer nodes with local
NVMe storage") and pod-level positioning relative to other workloads
(e.g. "never share a node with this other deployment") are expressed
through this single field, matching how corev1.Affinity itself groups
NodeAffinity/PodAffinity/PodAntiAffinity together.
Optional: {}
tolerations Toleration array Tolerations allows the pod to be scheduled onto nodes with matching
taints that would otherwise repel it.
Optional: {}
priorityClassName string PriorityClassName assigns a PriorityClass to the pod, influencing
scheduling preemption and eviction order under resource contention.
Must name an existing PriorityClass — validated at admission time.
Optional: {}

ScriptAction

ScriptAction defines an action to be executed by the script This is a flexible structure that accepts any valid Home Assistant action configuration

Appears in: - HomeAssistantScriptSpec

ScriptField

ScriptField defines an input parameter for the script This is a flexible structure that accepts any valid Home Assistant field configuration

Appears in: - HomeAssistantScriptSpec

ScriptMode

Underlying type: string

ScriptMode defines how the script should behave when called again while already running

Validation: - Enum: [single restart queued parallel]

Appears in: - HomeAssistantScriptSpec

Field Description
single ScriptModeSingle - Do not start a new run, issue a warning
restart ScriptModeRestart - Stop previous runs and start a new one
queued ScriptModeQueued - Queue runs in order, sequential execution guaranteed
parallel ScriptModeParallel - Launch independent concurrent runs

SecretKeyReference

SecretKeyReference defines a reference to a specific key in a Kubernetes Secret.

Appears in: - HomeAssistantSecretsSpec

Field Description Default Validation
name string Name of the Secret Required: {}
keys string array Keys to extract from the Secret. If empty, all keys will be included. Optional: {}

SecretKeySelector

SecretKeySelector selects a Secret and an optional key

Appears in: - MQTTConfig - RecorderConfig

Field Description Default Validation
name string Name of the Secret Required: {}
key string Key in the Secret (if not specified, defaults to "password" or "value") Optional: {}

SecretReference

SecretReference references a Secret for sensitive data

Appears in: - HomeAssistantSpec

Field Description Default Validation
name string Name of the Secret

ServiceSpec

ServiceSpec defines how Home Assistant is exposed within the cluster.

Appears in: - HomeAssistantSpec

Field Description Default Validation
type ServiceType Type of Kubernetes Service (ClusterIP, NodePort, LoadBalancer) ClusterIP Enum: [ClusterIP NodePort LoadBalancer]
Optional: {}
port integer Port for the Home Assistant web UI 8123 Optional: {}
nodePort integer NodePort for NodePort service type (optional, auto-assigned if not set) Optional: {}

StorageSpec

StorageSpec defines storage configuration for Home Assistant.

Appears in: - HomeAssistantSpec

Field Description Default Validation
size Quantity Size of the persistent volume (e.g., "5Gi", "10Gi") 5Gi Optional: {}
storageClassName string StorageClassName for the PVC. If empty, uses cluster default. Optional: {}
accessMode PersistentVolumeAccessMode AccessMode for the PVC ReadWriteOnce Optional: {}
retainPVC boolean RetainPVC controls whether the PVC survives deletion of the HomeAssistant CR.
When true, no ownerReference is set on the PVC — it will not be garbage-collected
when the CR is deleted (e.g. by FluxCD reconciliation), preventing accidental data loss.
When false (default), the PVC is owned by the CR and deleted together with it.
false Optional: {}
initContainer InitContainerSpec InitContainer configures the init container that pre-creates required YAML files
(automations.yaml, scenes.yaml, scripts.yaml) on the PVC before Home Assistant starts.
This prevents HA from entering recovery mode when the !include directives are present
but the files do not yet exist.
Optional: {}

TLSAlphaSpec

TLSAlphaSpec groups the (alpha) TLS integration modes backed by cert-manager.

Appears in: - AlphaSpec

Field Description Default Validation
native NativeTLSAlphaSpec Native enables Home Assistant to serve HTTPS natively (TLS terminated in
HA itself on the same port), using a certificate issued by cert-manager.
Optional: {}