Data Models↲
Data models are used to strongly type and verify API request and response structure. All
API calls require a data model to be passed in as a parameter. Each module in the pyvesync.models
module is for a specific product type or API call.
The dataclasses inherit from mashumaro's DataClassORJSONMixin
which allows for easy serialization and deserialization of the data models, as well as providing a discrimintor for subclasses.
The bypassv2_models
module is a generic mixin for the bypassv2 API calls.
- Data Models
- Data Models Module
- Base Models
- BypassV2 Models
- VeSync General API Models
- Bulb Models
- Fan Models
- Humidifier Models
- Outlet Models
- Purifier Models
- Switch Models
- Fryer Models
- Thermostat Models
Data Models Module↲
Data models for VeSync API requests and responses.
Models should follow the naming convention of Request/Response + API Name. Internal models can have any descriptive name.
The base_models
module contains the base classes for the VeSync API models, while the
models for each device type and other API calls are stored in their respective modules.
The bypassv2_models module contains the models for the common bypassV2 API calls.
Base Models↲
Base data models for API requests and response.
These models are used to define the structure of the requests and
responses from the API. They use Mashumaro for serialization and
deserialization. The DataClassConfigMixin
class sets default options
for orjson
and Mashumaro
.
Note
Dataclasses should follow the naming convention of Request/Response + API Name. Internal models can have any descriptive name.
All models should inherit ResponseBaseModel
or RequestBaseModel
. Use
pyvesync.const to set default values and import here.
Attributes are inherited from the const module for default values.
Classes↲
DefaultValues
dataclass
↲
Default request fields.
Attributes for the default values of the request fields and static methods for preparing calculated fields.
Source code in src\pyvesync\models\base_models.py
RequestBaseModel
dataclass
↲
Bases: DataClassORJSONMixin
Base request model for API requests.
Forbids extra keys in the request JSON.
Source code in src\pyvesync\models\base_models.py
ResponseBaseModel
dataclass
↲
Bases: DataClassORJSONMixin
Base response model for API responses.
Allows extra keys in the response model and non-string keys in the JSON.
Source code in src\pyvesync\models\base_models.py
ResponseCodeModel
dataclass
↲
Bases: ResponseBaseModel
Model for the 'result' field in response.
Source code in src\pyvesync\models\base_models.py
Attributes↲
BypassV2 Models↲
Request Models for Bypass V2 Endpoints.
API calls to bypassV2 endpoints have similar request structures. These models are used to serialize and deserialize the JSON requests for the bypassV2 endpoints.
Classes↲
BypassV1Result
dataclass
↲
BypassV2InnerResult
dataclass
↲
Bases: DataClassORJSONMixin
Inner Bypass V2 Result Data Model.
Source code in src\pyvesync\models\bypass_models.py
BypassV2OuterResult
dataclass
↲
Bases: DataClassORJSONMixin
Bypass V2 Outer Result Data Model.
Source code in src\pyvesync\models\bypass_models.py
BypassV2RequestPayload
dataclass
↲
BypassV2ResultError
dataclass
↲
RequestBypassV1
dataclass
↲
Bases: RequestBaseModel
Bypass V1 Status Request Dict.
This is the bypassV1 request model for API calls
that use the configModel
and deviceId
fields.
Source code in src\pyvesync\models\bypass_models.py
Attributes↲
RequestBypassV2
dataclass
↲
Bases: RequestBaseModel
Bypass V2 Status Request Dict.
This is the bypassV2 request model for API calls
that use the configModel
and deviceId
fields.
Source code in src\pyvesync\models\bypass_models.py
RequestV1ClearTimer
dataclass
↲
Bases: RequestBypassV1
Request model for clearing Bypass V1 API outlet timer.
Source code in src\pyvesync\models\bypass_models.py
RequestV1GetTimer
dataclass
↲
Bases: RequestBypassV1
Request model for getting timers from v1 API.
Source code in src\pyvesync\models\bypass_models.py
RequestV1SetTime
dataclass
↲
Bases: RequestBypassV1
Request model for setting timer with counterTime.
Source code in src\pyvesync\models\bypass_models.py
RequestV1SetTimer
dataclass
↲
Bases: RequestBypassV1
Request model for timer with counterTimer key.
Attributes:
Name | Type | Description |
---|---|---|
counterTimer |
str
|
The timer value in seconds. |
action |
str
|
The action to perform (e.g., "on", "off"). |
switchNo |
int | None
|
The switch number for the timer. |
Source code in src\pyvesync\models\bypass_models.py
ResponseBypassV1
dataclass
↲
Bases: ResponseCodeModel
Bypass V1 Response Dict.
Source code in src\pyvesync\models\bypass_models.py
ResponseBypassV2
dataclass
↲
Bases: ResponseCodeModel
Bypass V2 Response Dict.
This is the bypassV2 response model for API calls
that use the configModel
and deviceId
fields.
Source code in src\pyvesync\models\bypass_models.py
ResultV1GetTimerList
dataclass
↲
Bases: BypassV1Result
Get timers result for v1 API.
Source code in src\pyvesync\models\bypass_models.py
ResultV1SetTimer
dataclass
↲
ResultV2GetTimer
dataclass
↲
Bases: BypassV2InnerResult
Inner result for Bypass V2 GetTimer method.
Source code in src\pyvesync\models\bypass_models.py
ResultV2SetTimer
dataclass
↲
Bases: BypassV2InnerResult
Result for Bypass V2 SetTimer method.
Source code in src\pyvesync\models\bypass_models.py
TimeItemV1
dataclass
↲
Bases: ResponseBaseModel
Data model for Bypass V1 Timers.
Source code in src\pyvesync\models\bypass_models.py
TimerItemV1
dataclass
↲
TimerItemV2
dataclass
↲
TimerModels ↲
Class holding all common timer models.
Attributes:
Name | Type | Description |
---|---|---|
ResultV2GetTimer |
ResultV2GetTimer
|
Result model for Bypass V2 GetTimer method. |
ResultV2SetTimer |
ResultV2SetTimer
|
Result model for Bypass V2 SetTimer method. |
ResultV1SetTimer |
ResultV1SetTimer
|
Result model V1 API for setting timer. |
ResultV1GetTimer |
ResultV1GetTimerList
|
Get timers result for v1 API. |
TimeItemV1 |
TimeItemV1
|
Data model for Bypass V1 Timers. |
TimerItemV1 |
TimerItemV1
|
Data model for Bypass V1 Timers. |
TimerItemV2 |
TimerItemV2
|
Data model for Bypass V2 Timers. |
RequestV1ClearTimer |
RequestV1ClearTimer
|
Model for deleting timer. |
RequestV1SetTimer |
RequestV1SetTimer
|
Model for timer with counterTimer key. |
RequestV1GetTimer |
RequestV1GetTimer
|
Model for getting timers from v1 API. |
RequestV1SetTime |
RequestV1SetTime
|
Model for setting timer with counterTime key. |
Source code in src\pyvesync\models\bypass_models.py
VeSync General API Models↲
Models for general VeSync API requests and responses.
Dataclasses should follow the naming convention of Request/Response +
Note
All models should inherit ResponseBaseModel
or RequestBaseModel
. Use
pyvesync.models.base_models.DefaultValues
to set default values. There
should be no repeating keys set in the child models.
Classes↲
IntRespLoginResultModel
dataclass
↲
Bases: ResponseBaseModel
Model for the 'result' field in login response containing token and account ID.
This class is referenced by the ResponseLoginModel
class.
Source code in src\pyvesync\models\vesync_models.py
InternalDeviceListExtension
dataclass
↲
Bases: ResponseBaseModel
Internal Optional 'extension' field in device list response.
Used by the InnerRespDeviceListDevModel
class to populate
the extension field in the device list response.
Source code in src\pyvesync\models\vesync_models.py
InternalDeviceListResult
dataclass
↲
Bases: ResponseBaseModel
Internal model for the 'result' field in device list response.
Notes
Used by the ResponseDeviceListModel
class to populate result field.
Source code in src\pyvesync\models\vesync_models.py
RequestDeviceListModel
dataclass
↲
Bases: RequestBaseModel
Model for the device list request.
Source code in src\pyvesync\models\vesync_models.py
RequestLoginModel
dataclass
↲
Bases: RequestBaseModel
Request model for login.
Source code in src\pyvesync\models\vesync_models.py
RequestPID
dataclass
↲
Bases: RequestBaseModel
Model for the PID request.
Source code in src\pyvesync\models\vesync_models.py
ResponseDeviceDetailsModel
dataclass
↲
Bases: ResponseBaseModel
Internal response model for each device in device list response.
Populates the 'list' field in the InternalDeviceListResult
.
Certain Devices have device status information in the deviceProp
or extension
fields. This model flattens those fields into the deviceStatus
and
connectionStatus
fields before deserialization.
Source code in src\pyvesync\models\vesync_models.py
ResponseDeviceListModel
dataclass
↲
Bases: ResponseCodeModel
Device list response model.
Inherits from BaseResultModel
. The BaseResultModel
class provides the
defaults "code" and "msg" fields for the response.
Attributes:
Name | Type | Description |
---|---|---|
result |
InternalDeviceListResult
|
InternalDeviceListResult The inner model for the 'result' field in the device list response. |
module |
str | None
|
str | None |
stacktrace |
str | None
|
str | None |
Notes
See the DeviceListResultModel
and DeviceListDeviceModel
classes for
the inner model of the 'result' field.
Source code in src\pyvesync\models\vesync_models.py
ResponseLoginModel
dataclass
↲
Bases: ResponseCodeModel
Model for the login response.
Inherits from BaseResultModel
. The BaseResultModel
class provides the
defaults "code" and "msg" fields for the response.
Attributes:
Name | Type | Description |
---|---|---|
result |
IntRespLoginResultModel
|
ResponseLoginResultModel The inner model for the 'result' field in the login response. |
Examples:
a = {
"code": 0,
"msg": "success",
"stacktrace": null,
"module": null,
"traceId": "123456",
"result": {
"accountID": "123456",
"acceptLanguage": "en",
"countryCode": "US",
}
}
b = ResponseLoginModel.from_dict(a)
account_id = b.result.accountId
token = b.result.token
Source code in src\pyvesync\models\vesync_models.py
Bulb Models↲
Models for VeSync Bulb API responses and requests.
These models are used to serialize and deserialize the JSON responses from the VeSync API. The models are used in the VeSync API class methods to provide type hints and data validation.
Classes↲
JSONCMD
dataclass
↲
Bases: DataClassORJSONMixin
Tunable Bulb JSON CMD dict.
Source code in src\pyvesync\models\bulb_models.py
JSONCMDLight
dataclass
↲
Bases: DataClassORJSONMixin
Light JSON CMD dict.
Source code in src\pyvesync\models\bulb_models.py
RequestESL100Brightness
dataclass
↲
RequestESL100CWBase
dataclass
↲
Bases: RequestBypassV1
Request model for ESL100CW bulb.
Source code in src\pyvesync\models\bulb_models.py
RequestESL100Detail
dataclass
↲
Bases: RequestBypassV1
Request model for Etekcity bulb details.
Source code in src\pyvesync\models\bulb_models.py
RequestESL100Status
dataclass
↲
Bases: RequestBypassV1
Request model for Etekcity bulb details.
Source code in src\pyvesync\models\bulb_models.py
ResponseESL100CWDetail
dataclass
↲
Bases: ResponseCodeModel
Response model for Etekcity bulb details.
Source code in src\pyvesync\models\bulb_models.py
ResponseESL100CWDetailResult
dataclass
↲
Bases: ResponseBaseModel
Result model for ESL100CW Tunable bulb details.
Source code in src\pyvesync\models\bulb_models.py
ResponseESL100CWLight
dataclass
↲
Bases: ResponseBaseModel
ESL100CW Tunable Bulb Device Detail Response.
Source code in src\pyvesync\models\bulb_models.py
ResponseESL100Detail
dataclass
↲
Bases: ResponseCodeModel
Response model for Etekcity bulb details.
Source code in src\pyvesync\models\bulb_models.py
Attributes↲
ResponseESL100DetailResult
dataclass
↲
Bases: ResponseBaseModel
ESL100 Dimmable Bulb Device Detail Response.
Source code in src\pyvesync\models\bulb_models.py
ResponseESL100MCOuterResult
dataclass
↲
ResponseESL100MCResult
dataclass
↲
ESL100MC Multi-Color Bulb Status Response.
Source code in src\pyvesync\models\bulb_models.py
ResponseESL100MCStatus
dataclass
↲
Bases: ResponseCodeModel
Response model for Etekcity bulb status.
Source code in src\pyvesync\models\bulb_models.py
ResponseValcenoOuterResult
dataclass
↲
ResponseValcenoStatus
dataclass
↲
Bases: ResponseCodeModel
Response model for Valceno bulb status.
Source code in src\pyvesync\models\bulb_models.py
ResponseValcenoStatusResult
dataclass
↲
Bases: ResponseBaseModel
Valceno Bulb Status Result.
Source code in src\pyvesync\models\bulb_models.py
ValcenoStatusPayload ↲
Bases: TypedDict
Typed Dict for setting Valceno bulb status.
Source code in src\pyvesync\models\bulb_models.py
Fan Models↲
Data models for VeSync Fans.
These models inherit from ResponseBaseModel
and RequestBaseModel
from the
base_models
module.
Classes↲
FanSleepPreferences
dataclass
↲
Bases: DataClassORJSONMixin
Fan Sleep Preferences.
Source code in src\pyvesync\models\fan_models.py
TowerFanResult
dataclass
↲
Bases: BypassV2InnerResult
Vital 100S/200S and Everest Fan Result Model.
Source code in src\pyvesync\models\fan_models.py
Humidifier Models↲
Data models for VeSync Humidifier devices.
These models inherit from ResponseBaseModel
and RequestBaseModel
from the
base_models
module.
The InnerHumidifierBaseResult
class is used as a base class for the inner humidifier
result models. The correct subclass is determined by the mashumaro discriminator.
Classes↲
BypassV2InnerErrorResult
dataclass
↲
Bases: InnerHumidifierBaseResult
Inner Error Result Model.
Source code in src\pyvesync\models\humidifier_models.py
ClassicLVHumidResult
dataclass
↲
Bases: InnerHumidifierBaseResult
Classic 200S Humidifier Result Model.
Inherits from InnerHumidifierBaseResult.
Source code in src\pyvesync\models\humidifier_models.py
InnerHumidifierBaseResult
dataclass
↲
Bases: ResponseBaseModel
Base class for inner humidifier results model.
All inner results models inherit from this class and are correctly subclassed by the mashumaro discriminator.
Source code in src\pyvesync\models\humidifier_models.py
LV600SExtension
dataclass
↲
LV600SHumidResult
dataclass
↲
Bases: InnerHumidifierBaseResult
LV600S Humidifier Result Model.
Inherits from InnerHumidifierBaseResult.
Source code in src\pyvesync\models\humidifier_models.py
Levoit1000SResult
dataclass
↲
Bases: InnerHumidifierBaseResult
Levoit 1000S Humidifier Result Model.
Source code in src\pyvesync\models\humidifier_models.py
OuterHumidifierResult
dataclass
↲
ResponseHumidifierBase
dataclass
↲
Bases: ResponseCodeModel
Humidifier Base Response Dict.
Source code in src\pyvesync\models\humidifier_models.py
Superior6000SDryingMode
dataclass
↲
Bases: ResponseBaseModel
Drying Mode Model for Superior 6000S Humidifier.
Source code in src\pyvesync\models\humidifier_models.py
Superior6000SResult
dataclass
↲
Bases: InnerHumidifierBaseResult
Superior 6000S Humidifier Result Model.
Inherits from InnerHumidifierBaseResult.
Source code in src\pyvesync\models\humidifier_models.py
Outlet Models↲
Data models for VeSync outlets.
Classes↲
EnergyInfo
dataclass
↲
Request15ADetails
dataclass
↲
Bases: RequestBypassV1
Request data model for 15A outlet Details.
Source code in src\pyvesync\models\outlet_models.py
Request15ANightlight
dataclass
↲
Bases: RequestBypassV1
Nightlight request data model for 15A Outlets.
Inherits from RequestBypassV1.
Source code in src\pyvesync\models\outlet_models.py
Request15AStatus
dataclass
↲
Bases: RequestBypassV1
Request data model for 15A outlet.
Inherits from RequestBypassV1.
Source code in src\pyvesync\models\outlet_models.py
RequestEnergyHistory
dataclass
↲
Bases: RequestBaseModel
Request model for energy history.
Source code in src\pyvesync\models\outlet_models.py
RequestOutdoorStatus
dataclass
↲
Response10ADetails
dataclass
↲
Bases: ResponseCodeModel
Response model for Etekcity outlet details.
Source code in src\pyvesync\models\outlet_models.py
Response15ADetails
dataclass
↲
Bases: ResponseCodeModel
Response for 15A Outlets.
Source code in src\pyvesync\models\outlet_models.py
Response15AOutletResult
dataclass
↲
Bases: ResponseBaseModel
Response model for 15A outlet.
Source code in src\pyvesync\models\outlet_models.py
Response7AOutlet
dataclass
↲
Bases: ResponseBaseModel
Response model for 7A outlet.
Source code in src\pyvesync\models\outlet_models.py
ResponseBSDGO1Details
dataclass
↲
Bases: ResponseCodeModel
Response model for BSDGO1 outlet.
Source code in src\pyvesync\models\outlet_models.py
ResponseBSDGO1OutletResult
dataclass
↲
Bases: ResponseBaseModel
Response model for BSDGO1 outlet.
Source code in src\pyvesync\models\outlet_models.py
ResponseEnergyHistory
dataclass
↲
Bases: ResponseCodeModel
Response model for energy history.
Source code in src\pyvesync\models\outlet_models.py
ResponseEnergyResult
dataclass
↲
Bases: ResponseBaseModel
Response model for energy result.
Source code in src\pyvesync\models\outlet_models.py
ResponseOldEnergy
dataclass
↲
Bases: ResponseCodeModel
Response model for old energy history.
Source code in src\pyvesync\models\outlet_models.py
ResponseOutdoorDetails
dataclass
↲
Bases: ResponseCodeModel
Response model for outdoor outlet.
Source code in src\pyvesync\models\outlet_models.py
ResponseOutdoorOutletResult
dataclass
↲
Bases: ResponseBaseModel
Response model for outdoor outlet.
Source code in src\pyvesync\models\outlet_models.py
ResponseOutdoorSubDevices
dataclass
↲
Bases: ResponseBaseModel
Response model for outdoor energy.
Source code in src\pyvesync\models\outlet_models.py
ResultESW10Details
dataclass
↲
Bases: ResponseBaseModel
Response model for ESW10 outlet.
Source code in src\pyvesync\models\outlet_models.py
Purifier Models↲
Data models for VeSync Purifiers.
These models inherit from ResponseBaseModel
and RequestBaseModel
from the
base_models
module.
The InnerPurifierBaseResult
class is used as a base class for the inner purifier
result models for all models and the mashumaro discriminator determines the correct
subclass when deserializing.
Classes↲
InnerPurifierBaseResult
dataclass
↲
Bases: BypassV2InnerResult
Base class for inner purifier results model.
Source code in src\pyvesync\models\purifier_models.py
Purifier131Filter
dataclass
↲
Purifier131Result
dataclass
↲
Bases: BypassV1Result
Purifier 131 Details Response Dict.
Source code in src\pyvesync\models\purifier_models.py
PurifierCoreDetailsResult
dataclass
↲
Bases: InnerPurifierBaseResult
Purifier inner Result Dict.
Source code in src\pyvesync\models\purifier_models.py
PurifierDetailsExtension
dataclass
↲
Bases: ResponseBaseModel
Extension dict in purifier details response for Core 200/300/400.
Source code in src\pyvesync\models\purifier_models.py
PurifierGetTimerResult
dataclass
↲
Bases: InnerPurifierBaseResult
Purifier inner Timer Result Dict.
Source code in src\pyvesync\models\purifier_models.py
PurifierModifyTimerResult
dataclass
↲
Bases: InnerPurifierBaseResult
Purifier inner Add Timer Result Dict.
Source code in src\pyvesync\models\purifier_models.py
PurifierV2DetailsResult
dataclass
↲
Bases: InnerPurifierBaseResult
Vital 100S/200S and Everest Purifier Result Model.
Source code in src\pyvesync\models\purifier_models.py
PurifierV2EventTiming
dataclass
↲
Bases: RequestBaseModel
Purifier Event Timing Request Dict.
Source code in src\pyvesync\models\purifier_models.py
PurifierV2TimerActionItems
dataclass
↲
PurifierV2TimerPayloadData
dataclass
↲
Bases: RequestBaseModel
Purifier Timer Payload Data Request Dict.
Source code in src\pyvesync\models\purifier_models.py
RequestPurifier131
dataclass
↲
Bases: RequestBypassV1
Purifier 131 Request Dict.
Source code in src\pyvesync\models\purifier_models.py
RequestPurifier131Level
dataclass
↲
Bases: RequestBypassV1
Purifier 131 Request Dict.
Source code in src\pyvesync\models\purifier_models.py
RequestPurifier131Mode
dataclass
↲
Bases: RequestBypassV1
Purifier 131 Request Dict.
Source code in src\pyvesync\models\purifier_models.py
ResponsePurifierTimerItems
dataclass
↲
Switch Models↲
Data models for VeSync switches.
These models inherit from ResponseBaseModel
and RequestBaseModel
from the
base_models
module.
Classes↲
InternalDimmerDetailsResult
dataclass
↲
Bases: ResponseBaseModel
Dimmer Details Result Dict.
Source code in src\pyvesync\models\switch_models.py
InternalSwitchResult
dataclass
↲
RequestDimmerBrightness
dataclass
↲
Bases: RequestBypassV1
Dimmer Status Request Dict.
Source code in src\pyvesync\models\switch_models.py
RequestDimmerDetails
dataclass
↲
Bases: RequestBypassV1
Dimmer Details Request Dict.
Source code in src\pyvesync\models\switch_models.py
RequestDimmerStatus
dataclass
↲
Bases: RequestBypassV1
Dimmer Status Request Dict.
Source code in src\pyvesync\models\switch_models.py
RequestSwitchBase
dataclass
↲
Bases: RequestBypassV1
Base Dimmer Request Dict.
Inherits from RequestBypassV1 to include the common fields for all requests.
Source code in src\pyvesync\models\switch_models.py
RequestSwitchStatus
dataclass
↲
ResponseSwitchDetails
dataclass
↲
Bases: ResponseCodeModel
Dimmer and Wall Switch Details Response Dict.
Source code in src\pyvesync\models\switch_models.py
Fryer Models↲
Data models for VeSync air fryers.
Classes↲
FryerBaseReturnStatus
dataclass
↲
Bases: ResponseBaseModel
Result returnStatus model for air fryer status.
Source code in src\pyvesync\models\fryer_models.py
FryerCookingReturnStatus
dataclass
↲
Bases: ResponseBaseModel
Result returnStatus model for air fryer status.
Source code in src\pyvesync\models\fryer_models.py
ResultFryerDetails
dataclass
↲
Bases: ResponseBaseModel
Result model for air fryer details.
Source code in src\pyvesync\models\fryer_models.py
Thermostat Models↲
Data models for VeSync thermostats.
Classes↲
ResultThermostatDetails
dataclass
↲
Bases: BypassV2InnerResult
Result model for thermostat details.
Source code in src\pyvesync\models\thermostat_models.py
ThermostatAlarm
dataclass
↲
Bases: DataClassORJSONMixin
Model for thermostat alarm.
Source code in src\pyvesync\models\thermostat_models.py
ThermostatMinorDetails
dataclass
↲
Bases: DataClassORJSONMixin
Model for thermostat minor details.
Source code in src\pyvesync\models\thermostat_models.py
ThermostatReminder
dataclass
↲
Bases: DataClassORJSONMixin
Model for thermostat reminder.
Source code in src\pyvesync\models\thermostat_models.py
ThermostatRoutine
dataclass
↲
Bases: DataClassORJSONMixin
Model for full thermostat routine.