Skip to content

Maintenance

Query and manage maintenance log entries across all items.

MaintenanceClient

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}")