complete: name: Complete Maintenance description: Mark a maintenance task as completed. fields: entity_id: name: Entity description: One or more maintenance sensor entities to complete. required: true selector: entity: domain: sensor integration: maintenance_supporter multiple: true notes: name: Notes description: Optional notes about the maintenance performed. selector: text: cost: name: Cost description: Cost of the maintenance performed. A negative amount is a credit — money back, such as the old unit sold. selector: number: min: -1000000 max: 1000000 step: 0.01 mode: box duration: name: Duration (minutes) description: Duration of the maintenance in minutes. selector: number: min: 0 # Keep in step with MAX_DURATION_MINUTES (const.py) — the service # schema accepts up to a year; a lower UI ceiling rejected multi-day # jobs the WS/panel path accepts (bug review 2026-09-04). max: 525600 step: 1 mode: box reading_value: name: Reading value description: Recorded value for reading-type tasks (meter reading, level check). selector: number: mode: box step: any reading_values: name: Readings description: "Values for a task with several named readings, keyed by reading name (e.g. Water cold: 123.4)." selector: object: completed_by: name: Completed by description: Person who performed the maintenance (must be linked to a Home Assistant user). When omitted, the user triggering the call is recorded. selector: entity: domain: person completed_at: name: Completed at description: When the maintenance was actually performed — use it to backfill a past completion. Must not be in the future; when omitted, now is recorded. selector: datetime: via_tag_scan: name: Via tag scan description: Assert that this completion came from a physical tag/QR scan the automation handled itself — satisfies a task's "Only complete by scanning the tag" setting. selector: boolean: reset: name: Reset Maintenance description: Reset the last performed date of a maintenance task. fields: entity_id: name: Entity description: The maintenance sensor entity to reset. required: true selector: entity: domain: sensor integration: maintenance_supporter multiple: true date: name: Date description: The date to set as last performed. Defaults to today. selector: date: skip: name: Skip Maintenance description: Skip the current maintenance cycle. fields: entity_id: name: Entity description: The maintenance sensor entity to skip. required: true selector: entity: domain: sensor integration: maintenance_supporter multiple: true reason: name: Reason description: Optional reason for skipping. selector: text: export_data: name: Export Data description: Export all maintenance data as JSON or YAML to maintenance_export.json / maintenance_export.yaml in the Home Assistant config folder, then fire maintenance_supporter_export_completed with the file path. Admin only. fields: format: name: Format description: Output format for the exported data. default: "json" selector: select: options: - "json" - "yaml" include_history: name: Include History description: Whether to include task history entries in the export. default: true selector: boolean: add_object: name: Add Object description: Create a new maintenance object (device). Returns the new entry_id. fields: name: name: Name description: Name of the object/device. required: true selector: text: area_id: name: Area description: Area to assign the device to. selector: area: manufacturer: name: Manufacturer description: The manufacturer of the object. selector: text: model: name: Model description: The model name or number. selector: text: serial_number: name: Serial number description: The serial number of the object. selector: text: installation_date: name: Installation date description: When this object was installed or purchased. selector: date: warranty_expiry: name: Warranty expiry description: Warranty expiry date (used for asset tracking and reminders). selector: date: documentation_url: name: Documentation URL description: Link to a manual or vendor page (http/https only). selector: text: notes: name: Notes description: Free-form notes about the object — part numbers, procedures, settings reminders, etc. selector: text: multiline: true add_task: name: Add Task description: Add a maintenance task to an existing object. Returns the new task_id. fields: entry_id: name: Object description: The maintenance object to add the task to. required: true selector: config_entry: integration: maintenance_supporter name: name: Name description: Name of the task. required: true selector: text: task_type: name: Task type description: Free-form category (e.g. inspection, service, custom). selector: text: schedule_type: name: Schedule type description: "time_based (needs interval_days), one_time (needs due_date) or manual. Left out, the other fields decide: an interval makes it time_based, a due date one_time, neither manual. Sensor-triggered tasks need a trigger and are created in the panel." selector: select: options: ["time_based", "one_time", "manual"] interval_days: name: Interval description: Interval length between occurrences (for time-based tasks), combined with interval_unit. selector: number: min: 1 max: 3650 step: 1 mode: box interval_unit: name: Interval unit description: "Unit for the interval: days, weeks, months or years. Default: days." selector: select: options: - days - weeks - months - years due_date: name: Due date description: Due date (YYYY-MM-DD) for a one-time task (schedule_type one_time). selector: text: schedule: name: Calendar schedule description: >- Nested recurrence for the calendar kinds, e.g. {"kind": "nth_weekday", "nth": 1, "weekday": 5} for the 1st Saturday (weekday 0=Mon … 6=Sun), {"kind": "weekdays", "weekdays": [0, 3]} for Mon & Thu, or {"kind": "day_of_month", "day": 15}. Takes precedence over interval_days / schedule_type. selector: object: warning_days: name: Warning (days) description: "Days before due to enter the due-soon window. Default: the integration-wide setting." selector: number: min: 0 max: 365 step: 1 mode: box enabled: name: Enabled description: When disabled, scheduling and triggers are paused. The task is not deleted. default: true selector: boolean: notes: name: Notes description: Additional notes or instructions for this task. selector: text: multiline: true update_task: name: Update Task description: Update the common fields of an existing maintenance task. Only the provided fields change. fields: entry_id: name: Object description: The maintenance object the task belongs to. required: true selector: config_entry: integration: maintenance_supporter task_id: name: Task ID description: The id of the task to update (see list_tasks). required: true selector: text: name: name: Name description: New name of the task. selector: text: task_type: name: Task type description: Category (cleaning, inspection, replacement, calibration, service, reading, custom). selector: text: schedule_type: name: Schedule type description: "time_based (needs interval_days unless the task already has an interval), one_time (needs due_date) or manual. Switching to manual or one_time drops the old interval." selector: select: options: ["time_based", "one_time", "manual"] interval_days: name: Interval description: Interval length between occurrences, combined with interval_unit. selector: number: min: 1 max: 3650 mode: box interval_unit: name: Interval unit description: days, weeks, months or years. selector: select: options: ["days", "weeks", "months", "years"] due_date: name: Due date description: Due date for one-time tasks (YYYY-MM-DD). selector: date: schedule: name: Schedule (calendar recurrence) description: "Nested recurrence object for the calendar kinds, e.g. {\"kind\": \"day_of_month\", \"day\": -1, \"business\": true}. Takes precedence over the flat fields." selector: object: warning_days: name: Warning days description: Days before due when the task turns due-soon. selector: number: min: 0 max: 365 mode: box enabled: name: Enabled description: Whether the task is active. selector: boolean: notes: name: Notes description: Free-form notes on the task. selector: text: priority: name: Priority description: low, normal or high. selector: select: options: ["low", "normal", "high"] labels: name: Labels description: List of tags for filtering and reporting. selector: object: responsible_user: name: Responsible user description: Assign the task to this person (must be linked to a Home Assistant user). selector: entity: domain: person clear_responsible_user: name: Clear responsible user description: Remove the current assignment. Cannot be combined with "Responsible user". selector: boolean: delete_task: name: Delete Task description: Delete a maintenance task including its history. This cannot be undone — consider archiving via the panel instead. fields: entry_id: name: Object description: The maintenance object the task belongs to. required: true selector: config_entry: integration: maintenance_supporter task_id: name: Task ID description: The id of the task to delete (see list_tasks). required: true selector: text: list_tasks: name: List Tasks description: Return a snapshot of active maintenance tasks (ids, sensor entity_id, name, status, next due, last completion, live trigger reading with target and unit, who is responsible) for automations, scripts and voice. Supports filtering by object, status and person. fields: entry_id: name: Object description: Only return tasks of this maintenance object. selector: config_entry: integration: maintenance_supporter status: name: Status description: Only return tasks with this status. selector: select: options: ["ok", "due_soon", "overdue", "triggered", "paused"] person: name: Person description: Only return the tasks meant for this person (the ones they are responsible for, and the ones shared with them that nobody is responsible for). The person must be linked to a Home Assistant user. selector: entity: domain: person