Sub-client for cross-item maintenance-log endpoints.
Accessed via HomeboxClient.maintenance.
Source code in homebox/client.py
| class MaintenanceClient:
"""Sub-client for cross-item maintenance-log endpoints.
Accessed via ``HomeboxClient.maintenance``.
"""
def __init__(self, client: HomeboxClient):
"""Initialise the maintenance sub-client with the shared root client."""
self.client = client
def query_all_maintenance(self, status: MaintenanceFilterStatus) -> list[MaintenanceEntryWithDetails]:
"""Return maintenance entries across all items, optionally filtered by status.
Args:
status: Status filter – ``MaintenanceFilterStatus.MaintenanceFilterStatusScheduled``,
``MaintenanceFilterStatus.MaintenanceFilterStatusCompleted``, or
``MaintenanceFilterStatus.MaintenanceFilterStatusBoth`` (default).
Returns:
list[MaintenanceEntryWithDetails]: All matching maintenance entries
including their parent item ID and name.
"""
params = {}
if status:
params["status"] = status.value
data = self.client._request("get", "/v1/maintenance", params=params)
return [MaintenanceEntryWithDetails(**item) for item in data.get("data", [])]
def update_maintenance_entry(self, id: str, data: MaintenanceEntryUpdate) -> MaintenanceEntry:
"""Update an existing maintenance entry.
Args:
id: UUID of the maintenance entry to update.
data: Updated maintenance entry fields.
Returns:
MaintenanceEntry: Updated maintenance entry.
"""
return MaintenanceEntry(**self.client._request("put", f"/v1/maintenance/{id}", data=data.model_dump()))
def delete_maintenance_entry(self, id: str):
"""Permanently delete a maintenance entry.
Args:
id: UUID of the maintenance entry to delete.
"""
self.client._request("delete", f"/v1/maintenance/{id}")
|
__init__
__init__(client: HomeboxClient)
Initialise the maintenance sub-client with the shared root client.
Source code in homebox/client.py
| def __init__(self, client: HomeboxClient):
"""Initialise the maintenance sub-client with the shared root client."""
self.client = client
|
query_all_maintenance
query_all_maintenance(status: MaintenanceFilterStatus) -> list[MaintenanceEntryWithDetails]
Return maintenance entries across all items, optionally filtered by status.
Parameters:
| Name |
Type |
Description |
Default |
status
|
MaintenanceFilterStatus
|
Status filter – MaintenanceFilterStatus.MaintenanceFilterStatusScheduled,
MaintenanceFilterStatus.MaintenanceFilterStatusCompleted, or
MaintenanceFilterStatus.MaintenanceFilterStatusBoth (default).
|
required
|
Returns:
| Type |
Description |
list[MaintenanceEntryWithDetails]
|
list[MaintenanceEntryWithDetails]: All matching maintenance entries
including their parent item ID and name.
|
Source code in homebox/client.py
| def query_all_maintenance(self, status: MaintenanceFilterStatus) -> list[MaintenanceEntryWithDetails]:
"""Return maintenance entries across all items, optionally filtered by status.
Args:
status: Status filter – ``MaintenanceFilterStatus.MaintenanceFilterStatusScheduled``,
``MaintenanceFilterStatus.MaintenanceFilterStatusCompleted``, or
``MaintenanceFilterStatus.MaintenanceFilterStatusBoth`` (default).
Returns:
list[MaintenanceEntryWithDetails]: All matching maintenance entries
including their parent item ID and name.
"""
params = {}
if status:
params["status"] = status.value
data = self.client._request("get", "/v1/maintenance", params=params)
return [MaintenanceEntryWithDetails(**item) for item in data.get("data", [])]
|
update_maintenance_entry
update_maintenance_entry(id: str, data: MaintenanceEntryUpdate) -> MaintenanceEntry
Update an existing maintenance entry.
Parameters:
| Name |
Type |
Description |
Default |
id
|
str
|
UUID of the maintenance entry to update.
|
required
|
data
|
MaintenanceEntryUpdate
|
Updated maintenance entry fields.
|
required
|
Returns:
| Name | Type |
Description |
MaintenanceEntry |
MaintenanceEntry
|
Updated maintenance entry.
|
Source code in homebox/client.py
| def update_maintenance_entry(self, id: str, data: MaintenanceEntryUpdate) -> MaintenanceEntry:
"""Update an existing maintenance entry.
Args:
id: UUID of the maintenance entry to update.
data: Updated maintenance entry fields.
Returns:
MaintenanceEntry: Updated maintenance entry.
"""
return MaintenanceEntry(**self.client._request("put", f"/v1/maintenance/{id}", data=data.model_dump()))
|
delete_maintenance_entry
delete_maintenance_entry(id: str)
Permanently delete a maintenance entry.
Parameters:
| Name |
Type |
Description |
Default |
id
|
str
|
UUID of the maintenance entry to delete.
|
required
|
Source code in homebox/client.py
| def delete_maintenance_entry(self, id: str):
"""Permanently delete a maintenance entry.
Args:
id: UUID of the maintenance entry to delete.
"""
self.client._request("delete", f"/v1/maintenance/{id}")
|