Source code for pybragerone.models.api.module_events
"""Module alarm / activity list DTOs for BragerOne REST responses."""
from __future__ import annotations
from pydantic import BaseModel, ConfigDict, Field, JsonValue
[docs]
class ModuleAlarm(BaseModel):
"""One active or historical module alarm row.
``id`` is the SPA alarm *type* code (mapped via ``AlarmName`` → ``errors.*``),
not a unique row primary key.
"""
model_config = ConfigDict(extra="allow", populate_by_name=True)
id: int
devid: str = ""
created_at: str | None = None
finished_at: str | None = None
[docs]
class ModuleActivityUser(BaseModel):
"""Author of a module activity row when the API returns a user object."""
model_config = ConfigDict(extra="allow", populate_by_name=True)
id: int
name: str
[docs]
class ModuleActivity(BaseModel):
"""One module activity (parameter change / remote action) row.
Live ``POST /v1/modules/activity`` rows typically include:
- ``prevValue`` (camelCase): scalar previous value — :attr:`previous_value`
- ``prev_value`` (snake_case): nested param snapshot ``{P*: {n: {v, u}}}`` —
:attr:`prev_value_snapshot` (distinct from the camelCase scalar)
- ``user``: either a username string or :class:`ModuleActivityUser`
"""
model_config = ConfigDict(extra="allow", populate_by_name=True)
id: int | None = None
devid: str = ""
module_id: int | None = None
name: str = ""
unit: int | None = None
value: JsonValue = None
previous_value: JsonValue = Field(default=None, validation_alias="prevValue", serialization_alias="prevValue")
prev_value_snapshot: JsonValue = Field(
default=None,
validation_alias="prev_value",
serialization_alias="prev_value",
)
state: str = ""
created_at: str | None = None
user: ModuleActivityUser | str | None = None
user_id: int | None = None