ReleaseResponseBodyDto
releaseDescriptionRelease Description for current release page
assetKeyS3 object key for the release media asset
assetTypeType of media asset (image or video)
assetUrlUrl to access the media asset
ctaLabelOptional call-to-action button label
ctaUrlOptional call-to-action URL. Use {systemId} as a placeholder for the active system.
ctaIsExternalWhether the CTA link should open in a new tab (external) or navigate within the app.
ReleaseResponseDto
_idUnique identifier for the release
releaseTitleRelease Title for current global operation
Array of objects containing respective descriptions and media for the release.
ReleaseBodyDto
releaseDescriptionRelease description for current release page
fileMedia file (image or video) for the current release page
existingAssetKeyExisting S3 object key for the release media asset
ctaLabelOptional call-to-action button label
ctaUrlOptional call-to-action URL. Use {systemId} as a placeholder for the active system.
ctaIsExternalWhether the CTA link should open in a new tab (external) or navigate within the app.
ReleaseDto
releaseTitleRelease Title for current global operation
Array of objects containing respective descriptions and media for the release.
CreateManufacturerApiKeyDto
labelHuman-readable label for this key
ManufacturerApiKeyCreatedResponseDto
_idlabelkeyPrefixFirst 8 chars of the key (for identification only)
enabledcreatedAtupdatedAtkeyFull API key — shown once only, store it securely
ManufacturerApiKeyResponseDto
_idlabelkeyPrefixFirst 8 chars of the key (for identification only)
enabledcreatedAtupdatedAtDeviceType
Type of device (PLUG, MCB, etc.)
UsageHistoryHour
_idPrimary ID of the UsageHistoryHour
hourNo. What Hour (E.g. 7 means 0700 - 0800)
onStatusStatus of the Plug (ON / OFF)
deviceTypeType of device (PLUG, MCB, etc.)
createdAtDate Time of the Creation
updatedAtDate Time of the Update
actualDateDate Time of the Update
macIdMAC ID of the device
deviceReference to the device
wifiStrengthWiFi signal strength at the time of the hourly record
UsageHistoryDay
_idPrimary ID of the UsageHistoryDay
Usage History of the device (Hourly)
createdAtDate Time of the Creation
updatedAtDate Time of the Update
deviceTypeType of device (PLUG, MCB, etc.)
macIdMAC ID of the device
deviceReference to the device
UsageHistoryDayWithCostBreakdownDto
dateNo. Hour of the Usage History
totalEnergyUsageTotal Energy Usage in a Day (kWh)
costEnergy cost for this day in dollars. Zero (0) if no tariff rate is configured for this day.
tariffRateTariff rate applied for this day in cents per kWh/L. Null if no tariff rate is configured.
UsageHistoryDayBreakdownDto
dateNo. Hour of the Usage History
totalEnergyUsageTotal Energy Usage in a Day (kWh)
UsageHistoryHourBreakdownDto
hourNo. Hour of the Usage History
totalEnergyUsageTotal Energy Usage in a Hour (kWh)
UsageHistoryHourWithTariffResponseDto
Array of hourly usage data
currentTariffRateCurrent tariff rate in cost per kWh. Null if no tariff rate is configured. Useful for frontend calculations.
UsageHistoryEnergyRealtimeDto
onStatusStatus of the device (ON / OFF)
createdAtDate Time of the Creation
currentCurrent in Amperes (A)
voltageVoltage in Volts (V)
powerFactorPower factor (0-1)
powerPower in Watts (W)
voltageAPhase A voltage (V)
voltageBPhase B voltage (V)
voltageCPhase C voltage (V)
currentAPhase A current (A)
currentBPhase B current (A)
currentCPhase C current (A)
activePowerAPhase A active power (W)
activePowerBPhase B active power (W)
activePowerCPhase C active power (W)
reactivePowerAPhase A reactive power (VAR)
reactivePowerBPhase B reactive power (VAR)
reactivePowerCPhase C reactive power (VAR)
apparentPowerAPhase A apparent power (VA)
apparentPowerBPhase B apparent power (VA)
apparentPowerCPhase C apparent power (VA)
powerFactorAPhase A power factor (0-1)
powerFactorBPhase B power factor (0-1)
powerFactorCPhase C power factor (0-1)
frequencyLine frequency (Hz)
McbRealtimeDataPointDto
createdAtpowerSummed power at this timestamp in Watts (W)
McbRealtimeSeriesDto
measurementTypeMCB measurement type for this series, or "COMBINED" for the total across all types
maxMaximum power value across all data points in this series (W). Only present for the COMBINED series.
averageAverage power value across all data points in this series (W). Only present for the COMBINED series.
McbRoomRealtimeResponseDto
One time-series per MCB measurement type found in the room, plus a COMBINED series that sums all types
RoomMcbAiInsightResponseDto
summaryOne-liner summary of room energy behaviour
List of predicted devices and why
DeviceEnergyDto
energyTotal energy consumed by the device in watt-hours.
UsageWithCostResponseDto
totalEnergyUsageTotal energy usage in kWh
totalCostTotal cost based on current tariff rate. Null if no tariff rate is configured.
tariffRateCurrent tariff rate in cost per kWh. Null if no tariff rate is configured.
TelemetryHourSmartSwitchResponseDto
hourHour of the day (0–23)
onStatusDevice on/off status for this hour
createdAtRecord creation timestamp
downTimeTotal downtime in milliseconds for this hour (3600000 = full hour down)
gangSwitchStatusGang switch states reported by the device (array index = gang index, 1 = ON, 0 = OFF)
actualDateActual date this hourly record is for
TelemetryAirconControlRealtimeResponseDto
onStatusDevice on/off status
createdAtRecord creation timestamp
ambientTemperatureAmbient temperature in Celsius
ambientHumidityAmbient humidity percentage
TelemetryHourAirconControlResponseDto
hourHour of the day (0–23)
onStatusDevice on/off status for this hour
createdAtRecord creation timestamp
downTimeTotal downtime in milliseconds for this hour (3600000 = full hour down)
ambientTemperatureAmbient temperature in Celsius
ambientHumidityAmbient humidity percentage
actualDateActual date this hourly record is for
DeviceBoxplotEntryDto
minq1medianq3maxhourHour of the day (0–23)
deviceCountNumber of distinct entities with data in this hour
DeviceBoxplotResponseDto
Hourly box plot entries (only hours with data)
DeviceBoxStatsDto
minq1medianq3maxDeviceBreakdownEntryDto
deviceIddeviceNamevalueAggregated value for this entity in the hour
DeviceDrilldownResponseDto
Overall box plot statistics across all entities in the hour
Per-entity breakdown
totalDevicesTelemetryHourEnvironmentSensor
_idPrimary ID of the UsageHistoryHour
hourNo. What Hour (E.g. 7 means 0700 - 0800)
onStatusStatus of the Plug (ON / OFF)
deviceTypeType of device (PLUG, MCB, etc.)
createdAtDate Time of the Creation
updatedAtDate Time of the Update
actualDateDate Time of the Update
macIdMAC ID of the device
deviceReference to the device
carbonDioxideCurrent CO2 reading in ppm
luxCurrent light level in lux (lx)
formaldehydeCurrent formaldehyde (HCHO) reading in ppm
temperatureCurrent temperature reading in degrees Celsius
humidityCurrent humidity percentage
fineParticulateMatterCurrent Fine Particulate Matter in µg/m3
coarseParticulateMatterCurrent Coarse Particulate Matter in µg/m3
totalVolatileOrganicCompoundsTotal Volatile Organic Compounds in ppm
soundLevelCurrent Sound Level in dB
motionDetectedMotion detection status
wifiStrengthWiFi signal strength at the time of the hourly record
TelemetryEnvironmentSensor
_idPrimary ID of the Usage History Real Time
onStatusStatus of the device (ON / OFF)
deviceTypeType of device (PLUG, MCB, etc.)
macIdMAC ID of the device
deviceReference to the device
createdAtDate Time of the Creation
temperatureCurrent temperature reading in degrees Celsius
carbonDioxideCurrent CO2 reading in ppm
luxCurrent light level in lux (lx)
formaldehydeCurrent formaldehyde (HCHO) reading in ppm
humidityCurrent humidity percentage
fineParticulateMatterCurrent Fine Particulate Matter in µg/m3
coarseParticulateMatterCurrent Coarse Particulate Matter in µg/m3
totalVolatileOrganicCompoundsTotal Volatile Organic Compounds in ppm
soundLevelCurrent Sound Level in dB
motionDetectedMotion detection status
TelemetryHourWaterMeter
_idPrimary ID of the UsageHistoryHour
hourNo. What Hour (E.g. 7 means 0700 - 0800)
onStatusDevice status during this hour
deviceTypeType of device (PLUG, MCB, etc.)
createdAtDate Time of the Creation
updatedAtDate Time of the Update
actualDateDate Time of the Update
macIdMAC ID of the device
deviceReference to the device
waterConsumptionTotal water consumption for this hour (liters)
realTimeFlowRateAverage flow rate for this hour (L/min)
realTimePressureAverage pressure for this hour (bar)
wifiStrengthWiFi signal strength at the time of the hourly record
realTimeTemperatureAverage temperature for this hour (Celsius)
TelemetryWaterMeter
_idPrimary ID of the Usage History Real Time
onStatusDevice status
deviceTypeType of device (PLUG, MCB, etc.)
macIdMAC ID of the device
deviceReference to the device
createdAtDate Time of the Creation
realTimeFlowRateCurrent flow rate in liters per minute (L/min)
realTimePressureWater pressure in bar
waterConsumptionCumulative water consumption in liters
realTimeTemperatureWater temperature in Celsius
TelemetryDayWaterMeter
_idPrimary ID of the UsageHistoryDay
Usage History of the device (Hourly)
createdAtDate Time of the Creation
updatedAtDate Time of the Update
deviceTypeType of device (PLUG, MCB, etc.)
macIdMAC ID of the device
deviceReference to the device
waterConsumptionTotal daily water consumption (liters)
realTimeFlowRateAverage daily flow rate (L/min)
realTimePressureAverage daily pressure (bar)
realTimeTemperatureAverage daily temperature (Celsius)
Role
Administrator role defining access permissions (SUPERADMIN or ADMIN)
FrontendApp
Frontend app context for app-specific signup flows
SignUpDto
nameFull name of the administrator
emailEmail address for the administrator account (must be unique)
passwordAccount password (minimum 6 characters, optional for invited admins)
roleAdministrator role defining access permissions (SUPERADMIN or ADMIN)
appFrontend app context for app-specific signup flows
unitNameUnit name for B2C signup — used as the zone name for the user's space
approvedWhether the admin account is approved and can access the system
associatedZoneOptional zone ID to associate this admin with a specific zone account
associatedTenantOptional tenant ID to associate this admin with a specific tenant
associatedRoomOptional room ID to associate this admin with a specific room
LoginResponseDto
isSuccessfulIndicates if the login was successful
idUser ID of the authenticated user
tokenJWT authentication token
mainSystemIdMain system ID associated with the user
requires2FAIndicates if the user has 2FA enabled and needs to complete 2FA verification
roleRole of the authenticated user
associatedTenantIdAssociated tenant ID if user has TENANT role
associatedUserIdAssociated user ID if user has USER role
associatedRoomIdAssociated room ID if user has ROOM_ADMIN role
refreshTokenRefresh token for obtaining new access tokens. Not provided when 2FA verification is pending.
LoginDto
emailAdministrator email address used for authentication
passwordAdministrator password (minimum 6 characters)
appFrontend app identifier for role-based access control
InviteDto
inviterIdID of the administrator sending the invitation
systemIdSystem ID where the new admin will have access
nameFull name of the person being invited
emailEmail address where the invitation will be sent
roleRole to be assigned to the new administrator (SUPERADMIN or ADMIN)
associatedZoneOptional zone ID to link this admin account to an existing zone
associatedTenantOptional tenant ID to associate this admin with a specific tenant for billing
associatedRoomOptional room ID to associate this admin with a specific room
ReInviteDto
inviterIdID of the Admin that is inviting
systemIdID of the System
emailEmail of the Admin
SignUpViaInviteDto
tokenReset password token for the Admin
passwordPassword of the Admin
ResetPasswordDto
tokenReset password token for the Admin
newPasswordNew password for the Admin
GoogleTokenDto
credentialGoogle Identity Services ID token (JWT credential) obtained client-side via the GIS button. Verified server-side against the configured Google client ID.
appFrontend app identifier for role-based access control
Auth2FAResponseDto
issuerIssuer for the 2FA secret
labelLabel for the 2FA secret
secret2FA secret
Disable2FAResponseDto
messageSuccess message
Disable2FASystemResponseDto
messageSuccess message
affectedUsersNumber of users whose 2FA was disabled
AuditAction
StatusTriggerSource
Trigger source for device actions
GetAuditLogDto
_idPrimary ID of the audit log entry
actionThe action that was performed
outcomeWhether the action succeeded or failed
createdAtWhen the action occurred
actorIdAccount that performed the action
actorNameDisplay name of the acting account (resolved from actorId)
actorRoleRole of the actor at the time of the action
systemIdSystem the action was scoped to
systemNameName of the system the action was scoped to
targetTypeType of resource the action targeted
targetIdID of the targeted resource
triggerSourceTrigger source for device actions
metadataFree-form contextual data; shape varies by action
GetAuditLogsResponseDto
totalTotal count of items matching filters
pageCurrent page number
sizeItems per page
totalPagesTotal number of pages
Array of audit log entries matching the query parameters
ChatMessageDto
roleRole of the message sender
contentContent of the message
ChatRequestDto
messageThe user's current message
Array of previous messages in the conversation (max 30 messages)
PlugCategoryResponseDto
_idCategory ID
nameUnique category key
displayNameHuman-readable display name
isBuiltInWhether this is a built-in category
createdAtCreation timestamp
createdByAdmin who created this category
PlugCategoriesListResponseDto
totalCreatePlugCategoryDto
nameUnique category key — must be UPPER_SNAKE_CASE
displayNameHuman-readable display name
SurgeConfig
calculatedThresholdKwhAuto-calculated threshold (median) in kWh
defaultViolationCountDefault number of violations to trigger flagging
defaultViolationWindowDefault rolling window in days for violation counting
manualThresholdKwhManual threshold override in kWh (if provided)
sentinelPowerRangeRulesSentinel power range rules for suspected device classification
LocationObject
locationInputLocation of the Tenant
typeType of the Tenant
coordinatesGeolocation of the Tenant
Price
monthlyPrice for monthly subscription in cents
quarterlyPrice for quarterly subscription in cents
yearlyPrice for yearly subscription in cents
FeatureType
Type of the feature
Feature
_idPrimary ID of the feature
nameName of the feature
featureTypeType of the feature
descriptionDescription of the feature
createdAtIndicates the creation time of the feature
updatedAtIndicates the last update time of the feature
SubscriptionTier
_idThe unique identifier of the subscription tier
nameThe name of the subscription tier
descriptionThe description of the subscription tier
The price of the subscription tier
The features included in the subscription tier
createdAtThe date when the subscription tier was created
updatedAtThe date when the subscription tier was last updated
isDeletedIndicates whether the subscription tier is deleted
SystemPermission
Array of features that are currently enabled for this system
Subscription tier that defines available features for the system
updatedAtTimestamp when the permission settings were last updated
expiryDateOptional expiry date for the current permission settings
ExclusionMode
FULL: skip all schedules for the day. TIMED: skip recurring schedules but run devices within timeStart–timeEnd.
ScheduleExclusion
dateISO date format (YYYY-MM-DD)
nameName of the exclusion day
typeType of exclusion
modeFULL: skip all schedules for the day. TIMED: skip recurring schedules but run devices within timeStart–timeEnd.
countryCodeISO country code (for holidays from API)
timeStartTime (HH:mm) when devices turn ON. Only set when mode is TIMED.
timeEndTime (HH:mm) when devices turn OFF. Only set when mode is TIMED.
SystemTimezone
IANA timezone identifier for the system location. Used for scheduling and public holiday calculations.
EntityLabelPairDto
singularSingular form of the label
pluralPlural form of the label
SystemEntityLabelsDto
Custom label for the zone entity
Custom label for the tenant entity
Custom label for the room entity
System
_idPrimary ID of the system
systemNameName of the system
maxMissedHeartbeatsMaximum number of missed heartbeats before the plug is considered offline (1 heart beat = 1 minute)
watchDogTimerRuleNameName of the Watch Dog Timer Rule for the system
inActiveDevicesCronJobRuleNameName of the Inactive Devices Cron Job Rule for the system
remarksRemarks for the system
startPilotDateStart date of the pilot program
endPilotDateEnd date of the pilot program
realTimeToggleOnReal Time Toggle Status for the system
heartBeatIntervalHeart Beat Interval for the system
Locations of the Tenant
createdAtDate Time of the Creation
updatedAtDate Time of the Update
createdAdminAdmin which created the system (ObjectId reference)
systemEnergyReportSystem Report
adminsSystem Admins of the system (ObjectId references)
tenantsTenants of the system (ObjectId references)
devicesAll IoT devices in the System (ObjectId references — Plugs, MCBs, Environment sensors, etc.)
distributionBoxesAll distribution boxes in the System (ObjectId references)
System permission settings including subscription tier, enabled features, and metadata
countryCodeISO 3166-1 alpha-2 country code for the system. Determines which public holidays are available for scheduling.
timezoneIANA timezone identifier for the system location. Used for scheduling and public holiday calculations.
inactiveDevicesSnapshotEnabledWhether notifications are sent for the daily inactive devices snapshot for this system. When disabled, snapshots are still saved to the database for historical tracking, but no in-app notifications, emails, or Telegram messages are sent.
lockedWhether the system is locked. A locked system is flagged by a SUPERADMIN (e.g. for non-payment or suspension). Toggle via PATCH /system/:systemId/lock.
Dates when recurring schedules will NOT execute
surgeMonitoringScheduleNameName of the surge monitoring daily check scheduled task rule for this system. If present, surge monitoring is enabled. If absent/undefined, monitoring is disabled.
surgeMonitoringDigestScheduleNameName of the surge monitoring digest scheduled task rule for this system
Surge monitoring configuration by entity type (ROOM, TENANT, USER). Map keys are MonitoringEntityType enum values.
notificationChannelConfigPer-notification-group channel configuration. Keys are NotificationGroup values. Controls which delivery channels (email, sms, push) are enabled for each notification group.
notificationEmailSubscribersList of admin ObjectIds subscribed to receive email/channel notifications for this system.
telegramGroupChatIdTelegram group chat ID for this system. When set, notifications are sent to this Telegram group.
scheduleAdjustmentConfigSchedule adjustment configuration for this system. Controls automatic schedule adjustments based on user manual override patterns.
Custom display labels for entity types (zone, tenant, room). Each entry has a singular and plural form. When absent, the frontend uses default names.
Tenant
_idPrimary ID of the Tenant
tenantNameName of the Tenant
remarksRemarks for the Plug
Locations of the Tenant
levelLevel of the Tenant
energyUsageEnergy Usage of the Tenant (Separated from the Tenants)
systemSystem ID reference
tenantEnergyReportTenant Report
devicesAll IoT devices under the Tenant (ObjectId references — Plugs, MCBs, Environment sensors, etc.)
distributionBoxesAll distribution boxes under the Tenant (ObjectId references)
zonesZones under the Tenant (ObjectId references)
roomsList of Rooms assigned to the Tenant (ObjectId references)
tenantEmailEmail of the Admin
tenantTypeTenant type key — must match a valid tenant type for this system
Zone
_idPrimary ID of the Zone
nameName of the Zone
emailEmail of the Zone
remarksRemarks for the Zone
zoneEnergyReportZone Energy Report
tenantTenant ID reference
roomsList of Rooms assigned to the zone (ObjectId references)
devicesAll IoT devices under the Zone (ObjectId references — Plugs, MCBs, Environment sensors, etc.)
distributionBoxesAll distribution boxes under the Zone (ObjectId references)
zoneTypeZone type key — must match a valid zone type for this system
floorPlanKeyS3 key for the 2D floor plan image
floorPlanUrlCDN URL for the 2D floor plan image
floorPlan3D floor plan design linked to this zone
Room
_idPrimary ID of the Room
nameName of the Room
remarksRemarks for the Room
roomEnergyReportRoom Energy Report
devicesAll IoT devices in the Room (ObjectId references — Plugs, MCBs, Environment sensors, etc.)
distributionBoxesAll distribution boxes in the Room (ObjectId references)
systemSystem ID reference
Zone tagged to room
tenantTenant ID reference
roomTypeRoom type key — must match a valid room type for this system
squareMeterFloor area of the room in square meters
floorPlanKeyS3 key for the floor plan image
floorPlanUrlCDN URL for the floor plan image
Admin
_idPrimary ID of the Admin
nameName of the Admin
emailEmail of the Admin
roleRole of the Admin (ENUM)
Profile Image of the Admin
systemsSystems available to use for the Admin (ObjectId references)
approvedWhether the Admin is approved
notificationsNotifications associated with the Admin (ObjectId references)
twoFASecretThe secret for 2FA setup
enable2FAIndicates whether 2FA is enabled for the Admin
createdAtDate when the Admin was created
updatedAtDate when the Admin was last updated
passwordPassword of the Admin
pendingIndicates whether the Admin's invitation is pending
associatedRoomRoom ID reference
Reference to the associated Zone
associatedTenantTenant ID reference
CreateSystemDto
systemNameName of the system. Typically represents an organization, building, or facility using the Ecovolt platform.
maxMissedHeartbeatsMaximum number of consecutive missed heartbeats before a plug is marked as offline. Used for monitoring plug connectivity.
realTimeToggleOnControls whether plugs in this system should send real-time energy data. When enabled, increases data transmission frequency.
heartBeatIntervalInterval in minutes between heartbeat signals from plugs. Determines how frequently plugs report their online status.
Geographic location details of the system. Includes address, city, country, and coordinates for mapping purposes.
costPerKWhInitial cost per kilowatt-hour (kWh) in cents for this system. This will be used to create the first tariff rate period. Example: 30.65 cents = $0.3065 per kWh.
countryCodeISO 3166-1 alpha-2 country code for the system. Determines which public holidays are available for scheduling.
timezoneSystem timezone used for scheduling and public holiday calculations. Should match the country code.
adminAdmin ID reference
subscriptionTierUnique identifier of the subscription tier to assign to this system. Determines available features and usage limits.
remarksAdditional notes or comments about the system. Useful for documenting special configurations or pilot program details.
startPilotDateStart date of the pilot program for this system. Used for tracking trial periods and generating time-based reports.
endPilotDateEnd date of the pilot program for this system. After this date, the system may transition to a permanent subscription.
GetSystemDto
_idUnique identifier of the system
systemNameName of the system
maxMissedHeartbeatsMaximum number of missed heartbeats before a plug is considered offline
realTimeToggleOnReal-time data toggle status for the system
heartBeatIntervalHeartbeat interval in minutes
numberOfAdminsNumber of admins linked to the system
numberOfDevicesNumber of devices in the system
deviceOnCountNumber of devices currently in ON status for this system.
deviceOffCountNumber of devices currently in OFF status for this system.
deviceInactiveCountNumber of devices currently in INACTIVE status for this system.
Location details of the system
createdAtWhen the system was created
updatedAtWhen the system was last updated
createdAdminAdmin ID reference
GetSystemsDto
systemsArray of GetSystemDto IDs
totalTotal number of systems
pageCurrent page number
sizeNumber of items per page
totalPagesTotal number of pages
TenantEnergyUsageDto
tenantIdUnique identifier of the tenant
tenantNameName of the tenant
energyUsageTotal energy usage in kilowatt-hours (kWh) for the specified period
GetTenantEnergyUsageResponseDto
systemIdSystem ID for which tenant energy usage was calculated
daysNumber of days the energy usage was calculated over
startDateStart date of the energy usage period (ISO 8601 format)
endDateEnd date of the energy usage period (ISO 8601 format)
List of tenants with their energy usage data
totalTenantsTotal number of tenants found in this system
totalEnergyUsageTotal energy usage across all tenants in kWh
CreateTariffRateDto
costPerKWhCost in cents per kWh
effectiveFromDate when this tariff rate becomes effective (ISO 8601 format)
notesNotes or reason for this tariff rate change
GetTariffRatePeriodDto
_idTariff rate period ID
systemSystem ID that this tariff rate applies to
costPerKWhCost in cents per kWh
effectiveFromDate when this tariff rate becomes effective
createdAtTimestamp when this record was created
updatedAtTimestamp when this record was last updated
effectiveToDate when this tariff rate expires (null means currently active)
notesNotes or reason for this tariff rate change
createdByAdmin who created this tariff rate
GetTariffRateHistoryDto
Array of tariff rate periods
totalTotal number of tariff rate periods for this system
pageCurrent page number (1-indexed)
sizeNumber of items per page
UpdateTariffRateDto
costPerKWhUpdated tariff rate in cents per kWh
effectiveFromUpdated start date for this tariff rate period
effectiveToUpdated end date for this tariff rate period (null means currently active)
notesNotes or reason for this tariff rate
PublicHolidayResponseDto
datenamecountryCodeISO country code (for holidays from API)
CustomExclusionEntryDto
nameHuman-readable name for this exclusion
modeFULL: skip all schedules for the day. TIMED: skip recurring schedules but run devices within timeStart–timeEnd.
dateSingle date in YYYY-MM-DD format. Cannot be used with startDate/endDate.
startDateRange start in YYYY-MM-DD format. Must be used with endDate.
endDateRange end in YYYY-MM-DD format. Must be used with startDate.
typeExclusion type. Defaults to CUSTOM if omitted.
countryCodeCountry code for HOLIDAY entries (e.g. "SG"). Optional.
timeStartRequired when mode is TIMED. Time (HH:mm, system timezone) when devices turn ON.
timeEndRequired when mode is TIMED. Time (HH:mm, system timezone) when devices turn OFF.
BulkAddCustomExclusionsDto
List of exclusion entries. Each can be a full-day exclusion or a timed override.
replaceExistingOfTypeIf set, all existing exclusions of this type are removed before the new entries are inserted. Use HOLIDAY to sync public holidays without accumulating stale entries.
BulkAddCustomExclusionsResponseDto
exclusionsReplacedNumber of existing exclusions removed (when replaceExistingOfType is set)
exclusionsAddedNumber of new exclusion dates added
duplicatesSkippedNumber of dates skipped because an exclusion already existed
timedOverridesAppliedNumber of TIMED entries processed
oneTimeTasksCreatedTotal one-time ON+OFF tasks created across all TIMED entries and devices
devicesProcessedNumber of devices that received one-time tasks (relevant for TIMED entries)
UpdateSystemDto
systemNameName of the system. Typically represents an organization, building, or facility using the Ecovolt platform.
Geographic location details of the system. Includes address, city, country, and coordinates for mapping purposes.
subscriptionTierUnique identifier of the subscription tier to assign to this system. Determines available features and usage limits.
remarksAdditional notes or comments about the system. Useful for documenting special configurations or pilot program details.
startPilotDateStart date of the pilot program for this system. Used for tracking trial periods and generating time-based reports.
endPilotDateEnd date of the pilot program for this system. After this date, the system may transition to a permanent subscription.
countryCodeISO 3166-1 alpha-2 country code for the system. Determines which public holidays are available for scheduling.
timezoneSystem timezone used for scheduling and public holiday calculations. Should match the country code if both are provided.
Custom display labels for entity types (zone, tenant, room). Each entry has a singular and plural form. When absent, the frontend falls back to default names.
HeartBeatConfigurationDto
toggleOnControls whether plugs in this system should send real-time energy data. When enabled, increases data transmission frequency for live monitoring.
heartBeatIntervalInterval in minutes between heartbeat signals from plugs. Determines how frequently plugs report their online status to the system.
maxMissedHeartbeatsMaximum number of consecutive missed heartbeats before a plug is marked as offline. The timeout duration equals maxMissedHeartbeats × heartBeatInterval minutes.
LinkAdminToSystemDto
adminIdUnique identifier of the admin account to be linked to the system. This establishes a management relationship between the admin and the system.
LinkAdminResponseDto
systemSystem ID reference
adminAdmin ID reference
UnlinkAdminResponseDto
systemSystem ID reference
adminAdmin ID reference
UpdateSystemPermissionDto
subscriptionTierUnique identifier of the subscription tier to assign to this system. Changes the base feature set and limitations.
featuresEnabledArray of feature identifiers to enable for this system. Overrides or extends the default features from the subscription tier.
expiryDateExpiration date for the system permission. After this date, the system may lose access to certain features or services.
ScheduleAdjustmentConfigDto
enabledWhether schedule adjustment suggestions are enabled. If false, no suggestions will be generated.
autoApplyEnabledWhether auto-apply is enabled after reaching threshold. If false, always require manual approval. When enabled, patterns are applied on the NEXT manual toggle after threshold.
occurrenceThresholdNumber of occurrences required before auto-apply. Examples: 3 = quick response, 5 = balanced, 10 = conservative
timeWindowMinutesTime window in minutes for grouping similar override times. Overrides within this window are considered the same pattern. Examples: 15 = strict, 30 = moderate, 45 = lenient
UpdateScheduleAdjustmentConfigDto
enabledWhether schedule adjustment suggestions are enabled
autoApplyEnabledWhether auto-apply is enabled (applies on next manual toggle after threshold)
occurrenceThresholdNumber of occurrences required before auto-apply (1-20)
timeWindowMinutesTime window in minutes for grouping similar override times (5-60)
NotificationChannelSettingsDto
emailEnable or disable email notifications for this group
smsEnable or disable SMS notifications for this group
pushEnable or disable push notifications for this group
telegramEnable or disable Telegram notifications for this group
NotificationGroup
The notification group to configure
NotificationGroupChannelEntryDto
groupThe notification group to configure
Channel settings for this notification group
UpdateNotificationChannelConfigDto
Array of notification group + channel settings pairs to update. Existing groups not listed are preserved.
ToggleInactiveSnapshotDto
enabledSet to true to enable notifications for the daily inactive devices snapshot, false to disable them. Snapshots are always saved to the database regardless of this setting. When disabled, no in-app notifications, emails, or Telegram messages are sent.
ToggleInactiveSnapshotResponseDto
systemIdSystem ID
inactiveDevicesSnapshotEnabledWhether notifications for the daily inactive devices snapshot are now enabled. Snapshots are always saved to the database regardless of this setting.
messageConfirmation message
ToggleSystemLockDto
lockedSet to true to lock the system, false to unlock it. Only accessible to SUPERADMIN users.
ToggleSystemLockResponseDto
systemIdSystem ID
lockedWhether the system is now locked.
messageConfirmation message
NotificationSubscriberDto
_idnameemailroleNotificationSubscribersResponseDto
totalAddNotificationSubscriberDto
adminIdAdmin ID to add as a notification email subscriber
UpdateTelegramGroupDto
chatIdTelegram group chat ID to link to this system. Obtain this by adding the bot to your group and calling getUpdates.
CronJobType
Type of cron job to schedule
ScheduleCronJobRequestDto
jobTypeType of cron job to schedule
ScheduleCronJobResponseDto
jobTypeType of cron job
scheduleNameAWS EventBridge schedule name
messageSuccess message
DeleteCronJobRequestDto
jobTypeType of cron job to delete
CronJobStatusResponseDto
jobTypeType of cron job
isEnabledWhether the cron job is currently scheduled and enabled
messageStatus message
scheduleNameAWS EventBridge schedule name (if exists)
scheduleExpressionSchedule expression (if exists)
stateCurrent state of the schedule (if exists)
DeviceChipModel
Hardware chip model identifier used in the device
PlugType
Hardware type classification of the plug device (PLUG only)
AirconControlBrand
Air conditioner brand (AIRCON_CONTROL only)
GangSwitchState
gangNumberGang number (1-4)
onStatusON/OFF status of this gang switch
labelOptional label/name for this gang switch
SwitchType
Type of appliance the switch controls (SMART_SWITCH only)
ScheduledActionType
Action type to execute at scheduled time
OneTimeScheduleEntry
dateTimeScheduled date and time (ISO 8601 format)
actionAction type to execute at scheduled time
actionValueOptional value for actions that require it (e.g., temperature for SET_TEMPERATURE, brightness for SET_BRIGHTNESS)
ruleNameEventBridge rule name for tracking and management
DailyScheduleEntry
timeScheduled time in HH:mm format
actionAction type to execute at scheduled time
actionValueOptional value for actions that require it (e.g., temperature for SET_TEMPERATURE, brightness for SET_BRIGHTNESS)
ruleNameEventBridge rule name for tracking and management
ScheduleConfirmationState
Confirmation state of the offline device schedule. PENDING until device confirms receipt via MQTT.
DeviceSchedule
One-time scheduled tasks that execute once and auto-delete after execution
Recurring schedule entries for Monday
Recurring schedule entries for Tuesday
Recurring schedule entries for Wednesday
Recurring schedule entries for Thursday
Recurring schedule entries for Friday
Recurring schedule entries for Saturday
Recurring schedule entries for Sunday
confirmationStateConfirmation state of the offline device schedule. PENDING until device confirms receipt via MQTT.
DeviceDetailsDto
_idUnique device identifier
deviceNameDevice name
macIdDevice MAC address
deviceTypeDevice type
onStatusCurrent ON/OFF status
systemSystem ID
createdAtDevice creation timestamp
updatedAtLast update timestamp
lastSeenLast time the device was seen/reported
deviceStatusDevice status
systemNameSystem name (only populated in SUPERADMIN /devices endpoint)
Tenant details (populated)
User details (populated)
Room details (populated)
Zone details (populated)
deviceNumberUnique device number for identification
batchNumberManufacturing batch number for tracking production groups
remarksAdditional remarks or notes about the device
locationPhysical location or address where the device is installed
chipModelHardware chip model identifier used in the device
versionNumberFirmware version number currently running on the device
ssidNetwork SSID (Wi-Fi name) that the device is connected to
isLockedLocked status of the device
inactivityNotificationEnabledWhether inactivity notifications are enabled for this device
deviceModelModel name or identifier of the device connected to this plug (PLUG only)
deviceBrandBrand or manufacturer of the device connected to this plug (PLUG only)
plugCategoryCategory classification for the connected device type (PLUG only). See GET /plug-category for valid values.
plugTypeHardware type classification of the plug device (PLUG only)
ecoguardPlugEcoguard power-saving configuration settings reference ID (PLUG only)
realTimePowerReal-time power consumption in watts (PLUG only)
realTimeCurrentReal-time current in amperes (PLUG only)
realTimeVoltageReal-time voltage (PLUG only)
powerFactorPower factor (PLUG only)
totalEnergyUsageTotal energy usage in watt-hours (PLUG only)
ecoguardWattsEcoguard power threshold in watts (PLUG only)
ecoguardMinutesEcoguard time threshold in minutes (PLUG only)
ratedCurrentRated current in amperes (MCB only)
mcbTypeMCB type (MCB only)
tripStatusTrip status - whether the MCB has tripped (MCB only)
distributionBoxDistribution box ID (MCB only)
positionPosition in distribution box (MCB only)
temperatureSet temperature in Celsius (AIRCON_CONTROL only)
modeOperating mode (AIRCON_CONTROL only)
fanFan speed setting (AIRCON_CONTROL only)
swingSwing setting (AIRCON_CONTROL only)
brandAir conditioner brand (AIRCON_CONTROL only)
isIRRemoteWhether this device uses IR remote control (AIRCON_CONTROL only)
numberOfGangsNumber of gangs/buttons on the switch (SMART_SWITCH only)
Individual gang switch states with ON/OFF status (SMART_SWITCH only)
switchTypeType of appliance the switch controls (SMART_SWITCH only)
Weekly and one-time schedule configuration for this device
sensorDataEnvironmental sensor data (ENV_SENSOR only)
GetDevicesResponseDto
totalTotal count of items matching filters
pageCurrent page number
sizeItems per page
totalPagesTotal number of pages
Array of devices with their full details. Each device includes base fields plus type-specific fields based on deviceType.
DeviceHistoryItem
_idUnique identifier for the history entry
onStatusStatus of the device (ON/OFF)
triggerSourceSource that triggered the status change
createdAtTimestamp when the status change occurred
temperatureTemperature setting (Aircon Control only) - present when device is an aircon control
modeOperation mode (Aircon Control only) - present when device is an aircon control
fanFan speed (Aircon Control only) - present when device is an aircon control
swingSwing setting (Aircon Control only) - present when device is an aircon control
brandBrand of AC (Aircon Control only) - present when device is an aircon control
Gang switch states (Smart Switch only) - present when device is a smart switch, shows the state of each gang at the time of this history entry
GetDeviceHistoryDto
Array of device history entries
totalTotal number of history entries
MultipleDevicesConfigurationDto
deviceTypeType of devices to configure
deviceIdsArray of unique device identifiers from IoT devices to configure in batch
ssidNetwork SSID (Wi-Fi name) to configure for all selected devices
passwordWi-Fi network password to configure for all selected devices
systemNameSystem name to assign to all selected devices for organizational grouping
DeviceConfigurationDto
deviceTypeType of device to configure (PLUG, MCB, ENV_SENSOR). Determines which device will receive the configuration.
ssidNetwork SSID (Wi-Fi name) that the device should connect to for internet access
passwordWi-Fi network password required for the device to authenticate and connect
systemNameName of the system that the device belongs to for organizational grouping
ErrorLog
_idError log document ID
errorTypeType or code of the error
errorTitleType or code of the error
errorMessageDetailed error message
createdAtDate Time of the Creation
macIdDevice MAC Address
deviceTypeType of device
deviceIdDevice ID
systemIdTagged System
GetErrorHistoryDto
Array of error log records for devices matching the query
totalTotal count of error logs available for pagination purposes
CreateWhiteListedDevicesDto
macIdsArray of unique MAC address identifiers from IoT devices to add to the whitelist
deviceTypeType of device
batchNumberManufacturing batch number for tracking device production groups and quality control
chipModelHardware chip model identifier used in the devices (e.g., ESP32C2, ESP8266)
versionNumberFirmware version number installed on the devices in semantic versioning format
WhiteList
_idPrimary ID of the MacId
macIdMac ID of the device (from IoT device)
deviceTypeType of device
batchNumberBatch Number of the device
chipModelChip Model of the device
versionNumberVersion number of the device
deviceNumberAuto-incremented Device Number for whitelisted devices
adminCreatedName of the admin who created the whitelist entry
createdAtDate Time of the Creation
GetWhitelistedDevicesDto
Array of devices that are approved and registered in the whitelist
totalTotal count of whitelisted devices for pagination and tracking
GetIsDeviceWhiteListedDto
isWhiteListedBoolean flag indicating whether the device is approved and present in the whitelist
BulkRemoveWhitelistDto
idsArray of whitelist entry IDs to remove
ManufacturerRegisterDeviceDto
macIdMAC address of the device
deviceTypeType of device being registered
batchNumberManufacturing batch number
chipModelHardware chip model of the device
versionNumberFirmware version number installed on the device
adminCreatedName of the manufacturer or person registering the device. Defaults to "Manufacturer" if not provided.
ManufacturerDeviceResponseDto
macIdMAC address of the device
deviceNumberAuto-assigned device number for this device
alreadyExistedTrue if the MAC was already registered and this was a lookup, false if newly registered
ManufacturerPlugStatusDto
_idDevice ID
macIdMAC address of the device
deviceNumberUnique device number for identification
onStatusCurrent on/off status of the device
ManufacturerSystemPlugsResponseDto
List of plug devices in the system
totalTotal number of plug devices
MultipleDevicesChangeSystemDto
deviceIdsArray of unique device identifiers (plugs or MCBs) to reassign to a different system
newSystemIdUnique identifier of the target system to reassign all selected devices to
UpdateMultipleDevicesRelationshipsDto
deviceIdsArray of unique device identifiers to update relationships for
tenantIdUnique identifier of the tenant to assign the devices to. Pass null to remove the tenant relationship.
zoneIdUnique identifier of the zone to assign ownership of the devices to. Pass null to remove the zone relationship.
roomIdUnique identifier of the room to assign the devices to. Pass null to remove the room relationship.
UpdateDeviceBaseDto
deviceNameName of the device
locationPhysical location of the device
remarksAdditional remarks or notes about the device
tenantIdTenant ID to associate the device with
zoneIdZone ID to associate the device with
roomIdRoom ID to associate the device with
isLockedWhether the device is locked. When locked, the device cannot be toggled ON/OFF.
isSpareWhether the device is a spare/inventory device. Spare devices can be filtered out of user-facing dashboards.
DeviceUpdateItem
deviceIdMongoDB ID of the device to update
Fields to update on the device
BulkUpdateDevicesDto
Array of device update operations to perform in a single batch request
UpdateDevicesLockStatusDto
deviceIdsArray of device IDs to lock or unlock
isLockedLock status to set. True to lock devices, false to unlock.
FailedDeviceLockUpdateDto
deviceIdDevice ID that failed to update
reasonReason for failure
UpdateDevicesLockStatusResponseDto
successCountNumber of devices successfully updated
failedCountNumber of devices that failed to update
successfulDeviceIdsList of device IDs that were successfully updated
List of devices that failed to update with reasons
UpdateDevicesSpareStatusDto
deviceIdsArray of device IDs to mark as spare or non-spare
isSpareSpare status to set. True to mark as spare, false to unmark.
UpdateDevicesRelationshipTenantDto
deviceIdsArray of unique device identifiers to update relationships for
zoneIdUnique identifier of the zone to assign ownership of the devices to within the tenant
roomIdUnique identifier of the room to assign the devices to for location tracking
UpdateDevicesRelationshipZoneDto
deviceIdsArray of unique device identifiers to update room assignment for
roomIdUnique identifier of the room to assign the devices to for location tracking
MultipleDevicesResetSystemVariablesDto
systemNameName of the system containing the devices whose variables should be reset
deviceTypeType of device to reset (PLUG, MCB, ENV_SENSOR). Determines which devices will receive the reset command.
deviceIdsArray of unique device identifiers (MAC IDs) to reset, or empty to reset all devices in the system
MultipleDevicesCalibrationDto
systemNameName of the system containing the devices to calibrate for batch processing
deviceTypeType of device to calibrate (PLUG, MCB, ENV_SENSOR). Determines which devices will receive calibration data.
voltageMultiplierCalibration multiplier to adjust voltage sensor readings for accuracy correction
voltageOffsetCalibration offset value in volts to adjust voltage sensor baseline readings
currentMultiplierCalibration multiplier to adjust current sensor readings for accuracy correction
currentOffsetCalibration offset value in amperes to adjust current sensor baseline readings
powerMultiplierCalibration multiplier to adjust power measurement calculations for accuracy
powerOffsetCalibration offset value in watts to adjust power measurement baseline
deviceIdsArray of unique device identifiers to apply calibration settings to, or empty to calibrate all devices in the system
InactiveDeviceDto
_idDevice document ID
macIdDevice MAC ID (unique identifier)
deviceNumberDevice number identifier
deviceNameDevice display name
deviceTypeType of device
lastSeenLast time the device sent a heartbeat (last seen timestamp)
inactiveDurationDuration the device has been inactive in milliseconds
inactiveDurationFormattedDuration the device has been inactive in human-readable format
tenantIdTenant ID that owns this device
tenantNameTenant name that owns this device
GetInactiveDevicesDto
Array of inactive devices with their details
totalTotal count of inactive devices found
retrievedAtTimestamp when this data was retrieved
SaveInactiveSnapshotResponseDto
snapshotIdSnapshot document ID
systemIdSystem ID this snapshot belongs to
totalInactiveDevicesNumber of inactive devices captured in this snapshot
snapshotDateTimestamp when the snapshot was taken
messageMessage confirming the snapshot was saved
InactiveDeviceSnapshot
_idSnapshot document ID
systemSystem ID reference
Array of inactive devices with their details
totalTotal count of inactive devices
retrievedAtTimestamp when this data was retrieved
createdAtTimestamp when this snapshot was created
updatedAtTimestamp when this snapshot was last updated
referenceDateOptional reference date used for duration calculation
GetInactiveSnapshotsDto
Array of inactive device snapshots
totalTotal count of snapshots found
DeviceCountDto
deviceCountTotal number of devices registered in the system across all statuses
deviceOnCountNumber of devices currently in ON status and actively consuming power
deviceOffCountNumber of devices currently in OFF status and not consuming power
deviceInactiveCountNumber of devices marked as inactive or not communicating with the system
deviceSpareCountNumber of spare devices (excluded from total, on, off, and inactive counts)
DeviceTypeBreakdownDto
PLUGNumber of PLUG devices in the system
MCBNumber of MCB (Miniature Circuit Breaker) devices in the system
ENV_SENSORNumber of ENV_SENSOR (Environmental Sensor) devices in the system
SMART_SWITCHNumber of SMART_SWITCH devices in the system
AIRCON_CONTROLNumber of AIRCON_CONTROL (Air Conditioning Controller) devices in the system
WATER_METERNumber of WATER_METER devices in the system
totalTotal number of devices in the system
ChangeDeviceSystemDto
newSystemIdUnique identifier of the system to reassign the device to for organizational management
ToggleDeviceStatusDto
deviceIdUnique identifier of the device to be toggled
onStatusDesired power state. Use ON to turn the device on (all gangs for SmartSwitch), or OFF to turn it off (all gangs for SmartSwitch).
Device
_idPrimary ID of the Device
deviceTypeType of device (discriminator field)
macIdMAC ID of the Device (from IoT device)
deviceNameName of the Device
deviceNumberUnique device number for identification
onStatusStatus of the Device (ON / OFF / INACTIVE / ERROR)
locationPhysical location or address where the device is installed
remarksRemarks for the Device
batchNumberManufacturing batch number for tracking production groups
chipModelHardware chip model identifier used in the device
versionNumberFirmware version number currently running on the device
ssidNetwork SSID (Wi-Fi name) that the device is connected to
tenantTenant ID reference
Tagged Zone
roomRoom ID reference
systemSystem ID reference
createdAtDate Time of the Creation
updatedAtDate Time of the Update
lastSeenLast time the device was seen/reported
isLockedWhether the device is locked. When locked, the device on/off status cannot be toggled.
totalEnergyUsageTotal cumulative energy usage in kWh
totalEnergySavedTotal energy saved through optimization in kWh
autoUpdateAttemptsNumber of auto-update OTA attempts sent to this device
autoUpdateBlacklistedWhether device is blacklisted from auto-updates (max retries exceeded)
manualUpdateBlacklistWhether device is manually blacklisted from auto-updates by admin
inactivityNotificationEnabledWhether inactivity notifications are enabled for this device
targetStatePending desired on/off state commanded by backend (cloud / scheduled). Set when a toggle is issued; cleared when the device reports a matching state or a physical (MANUAL) press overrides it. Always ON or OFF when present.
targetStateSetAtTimestamp when targetState was last written. Used to expire stale SCHEDULED intents (24hr TTL). CLOUD intents do not expire.
targetSourceOrigin of the pending targetState. Drives TTL behavior on reconcile. Only CLOUD / SCHEDULED are ever written here.
deviceModelModel name or identifier of the device
deviceBrandBrand or manufacturer of the device
isSpareWhether the device is a spare/inventory device. Spare devices can be filtered out of user-facing dashboards.
Schedule configuration for the device. Contains recurring weekly schedules and one-time scheduled tasks.
realTimePowerReal-time power consumption in watts
realTimeCurrentReal-time current in amperes
lastAutoUpdateAttemptTimestamp of last auto-update OTA attempt
inactivityNotificationSentAtTimestamp when the last inactivity notification was sent for this device
BulkToggleDeviceDto
deviceIdsArray of device IDs to toggle
onStatusDesired power state for all devices. Use ON to turn all devices on (all gangs for SmartSwitch), or OFF to turn all devices off (all gangs for SmartSwitch).
BulkDeleteDeviceDto
deviceIdsArray of device IDs to delete
ManualBlacklistDto
blacklistWhether to blacklist (true) or remove blacklist (false)
BulkManualBlacklistDto
deviceIdsArray of device IDs to blacklist/unblacklist
blacklistWhether to blacklist (true) or remove blacklist (false)
EnvironmentType
Environment type to set for the devices. STAGING for staging environment, PRODUCTION for production environment.
ChangeEnvironmentDto
deviceIdsArray of device IDs to change environment for
setEnvironmentEnvironment type to set for the devices. STAGING for staging environment, PRODUCTION for production environment.
BulkUpdateEnergyThresholdsDto
deviceIdsIDs of energy devices (Plugs or MCBs) to update
voltageMaxMax Threshold voltage reading in volts
currentMaxMax Threshold current reading in amps
powerMaxMax Threshold power reading in watts
notificationThresholdHourHourly notification threshold — minimum hours between repeat notifications of the same type
UpdateEnergyDeviceThresholdDto
voltageMaxMax Threshold voltage reading in volts
currentMaxMax Threshold current reading in amps
powerMaxMax Threshold power reading in watts
notificationThresholdHourHourly notification threshold — minimum hours between repeat notifications of the same type
EnergyThresholdBaselineDto
voltageMinMinimum voltage reading (V)
voltageMaxMaximum voltage reading (V)
currentMinMinimum current reading (A)
currentMaxMaximum current reading (A)
powerMinMinimum power reading (W)
powerMaxMaximum power reading (W)
EnvironmentSensorThresholdBaselineDto
temperatureMinMinimum temperature reading (°C)
temperatureMaxMaximum temperature reading (°C)
carbonDioxideMinMinimum CO2 reading (ppm)
carbonDioxideMaxMaximum CO2 reading (ppm)
luxMinMinimum light level reading (lx)
luxMaxMaximum light level reading (lx)
formaldehydeMinMinimum formaldehyde reading (ppm)
formaldehydeMaxMaximum formaldehyde reading (ppm)
humidityMinMinimum humidity (%)
humidityMaxMaximum humidity (%)
fineParticulateMatterMinMinimum PM2.5 reading (µg/m³)
fineParticulateMatterMaxMaximum PM2.5 reading (µg/m³)
coarseParticulateMatterMinMinimum PM10 reading (µg/m³)
coarseParticulateMatterMaxMaximum PM10 reading (µg/m³)
totalVolatileOrganicCompoundsMinMinimum TVOC reading (ppm)
totalVolatileOrganicCompoundsMaxMaximum TVOC reading (ppm)
soundLevelMinMinimum sound level (dB)
soundLevelMaxMaximum sound level (dB)
WaterMeterThresholdBaselineDto
flowRateMinMinimum flow rate (L/min)
flowRateMaxMaximum flow rate (L/min)
pressureMinMinimum pressure (bar)
pressureMaxMaximum pressure (bar)
temperatureMinMinimum temperature (°C)
temperatureMaxMaximum temperature (°C)
ThresholdBaselineResponseDto
deviceIdDevice ID
deviceTypeDevice type
periodStartStart date of the baseline period
periodEndEnd date of the baseline period
dataPointCountNumber of data points used to calculate the baseline
messageWarning message when insufficient data (< 14 days) was available for the baseline calculation
Energy device baseline (Plug/MCB)
Environment sensor baseline
Water meter baseline
BulkThresholdBaselineRequestDto
deviceIdsIDs of devices to calculate threshold baselines for
FailedThresholdBaselineDto
deviceIdDevice ID that failed to generate a baseline
reasonReason for failure
BulkThresholdBaselineResponseDto
successCountNumber of devices for which baselines were successfully generated
failedCountNumber of devices for which baseline generation failed
Successfully generated baselines
Devices that failed baseline generation with reasons
UpdateInactivityNotificationDto
enabledEnable or disable inactivity notifications for this device
ClaimTokenResponseDto
claimTokenEncrypted claim token for device
claimUrlFull URL for claiming the device
PrintQrResponseDto
deviceNumberAuto-assigned device number for this device
claimUrlFull URL for claiming the device — encode this as QR
ClaimDeviceResponseDto
messageSuccess message
deviceIdDevice ID
deviceNameDevice name
deviceNumberDevice number
deviceTypeDevice type
systemIdSystem ID the device belongs to
zoneIdZone ID the device was assigned to
zoneNameZone name the device was assigned to
tenantIdTenant ID the device was assigned to (if any)
tenantNameTenant name the device was assigned to (if any)
CreateNotificationDto
titleTitle of the notification
messageMessage of the notification
systemNotification for a specific System
typeType of the notification
recieveTypeReceive type of the notification
deviceNotification for a specific Device (optional - if not provided, finds system-level admin)
isSystemLevelWhether this is a system-level notification (visible to all admins in the system)
Notification
_idPrimary ID of the Notification
titleTitle of the Notification
messageMessage of the Notification
systemSystem ID reference
deviceNotification for a specific Device
typeType of the Notification (ENUM)
recieveTypeType of the Notification (ENUM)
isResolvedStatus of the Notification
isSystemLevelWhether this is a system-level notification (visible to all admins in the system)
createdAtCreation date of the Notification
updatedAtLast update date of the Notification
adminAdmin ID reference
SearchQueryResultDto
resultsSearch results
totalTotal number of results
ResolveAllNotificationsResponseDto
resolvedCountNumber of notifications marked as resolved
BasicEmailNotificationDto
receiverEmailEmail address of the receiver
subjectSubject of the email notification
contentContent of the email notification
BusinessOrderDevice
Device type identifier
BusinessSelectedDeviceDto
deviceTypeDevice type identifier
qtyNumber of units of this device
PublicWebEmailNotificationDto
firstNamefirst name of the sender
lastNamelast name of the sender
phoneNumberphone number of the sender
companycompany name of the sender
emailEmail address of the sender
messageContent of the email notification
Business devices selected with quantities
NewsletterSubscriberDto
emailSubscriber email address
nameSubscriber name
subscribedFromSourceSubscriber source
NewsletterSubscriberStatus
Status of the newsletter subscriber
NewsletterSubscriberResponseDto
_idUnique identifier of the newsletter subscriber
emailEmail of the newsletter subscriber
statusStatus of the newsletter subscriber
nameName of the newsletter subscriber
subscribedFromIpIP address from which the user subscribed
subscribedFromSourceSource from which the user subscribed
createdAtTimestamp when the subscriber was created
updatedAtTimestamp when the subscriber was last updated
EmailRecipientsType
Type of recipient list for the email campaign
ManualSelectionRecipientDto
recipientTypeType of recipient
recipientIdID of the recipient
CreateEmailCampaignDto
nameName of the email campaign
templateIdID of the newsletter template to use for the email campaign
recipientTypeType of recipient list for the email campaign
subjectSubject of the campaign email
List of manually selected recipients with their types (required if recipientType is MANUAL_SELECTION)
scheduledAtScheduled send time for the email campaign in ISO 8601 format
EmailCampaignStatus
Current status of the email campaign
EmailCampaign
_idUnique identifier of the email campaign
nameName of the email campaign
sourceTemplateReference to the original template used for this email campaign
subjectSubject of the campaign email
designJsonCopied JSON from template for campaign-specific email customization
renderedHtmlRendered HTML content for this email campaign
plainTextPlain text version of the email campaign
previewTextShort text that appears in email preview before opening
recipientTypeType of recipients for the email campaign
List of manually selected recipients with their types (if recipientType is MANUAL_SELECTION)
statusCurrent status of the email campaign
scheduledAtScheduled send time for the email campaign
scheduleNameAWS EventBridge Scheduler name for the scheduled campaign send
sentAtTime when the email campaign was sent
totalRecipientsTotal number of recipients for the email campaign
errorMessageError message if campaign sending failed
createdByAdmin who created the campaign
updatedByAdmin who last updated the campaign
SendEmailCampaignDto
campaignIdID of the email campaign to be sent
statusCurrent status of the email campaign
messageResult message after attempting to send the email campaign
totalRecipientsTotal number of recipients for the email campaign
SendTestEmailRequestDto
testEmailEmail address to send the test email to
testNameName of the test recipient for personalization
GetEmailCampaignsDto
List of email campaigns
totalTotal number of email campaigns
UpdateEmailCampaignDto
nameName of the email campaign
subjectSubject of the campaign email
recipientTypeType of recipient list for the email campaign
List of manually selected recipients with their types (used when recipientType is MANUAL_SELECTION)
designJsonUnlayer design JSON for campaign-specific email customization
renderedHtmlRendered HTML content of the email campaign
plainTextPlain text version of the email campaign
previewTextShort text that appears in email preview before opening
scheduledAtScheduled send time for the email campaign in ISO 8601 format. Set to null to convert SCHEDULED to DRAFT.
EmailTemplateDto
nameName of the email template
subjectSubject of the email template
designJsonJSON structure of the email template
descriptionDescription of the email template
previewTextPreview text for the email template
renderedHtmlRendered HTML content of the email template
plainTextPlain text version of the email template
EmailTemplateStatus
Indicates status of the email template
EmailTemplate
_idUnique identifier of the email template
nameName of the email template
descriptionDescription of the email template
subjectSubject of the email template
designJsonJSON from Unlayer editor
renderedHtmlCompiled HTML content of the email template
plainTextPlain text version of the email template
previewTextShort text that appears in email preview before opening
statusIndicates status of the email template
thumbnailUrlThumbnail image of the template for superadmin dashboard
createdByAdmin who created the template
updatedByAdmin who last updated the template
GetEmailTemplatesDto
List of email templates
totalTotal number of email templates
PreviewEmailTemplateDto
renderedHtmlRendered HTML preview of the email template
plainTextPlain text version of the email template preview
UpdateEmailTemplateDto
nameName of the email template
descriptionDescription of the email template
subjectSubject of the email template
designJsonJSON structure of the email template
previewTextPreview text for the email template
renderedHtmlRendered HTML content of the email template
plainTextPlain text version of the email template
statusStatus of the email template
CreateFirmwareDto
versionNumberSemantic version number for the firmware release. Must follow the format major.minor.patch (e.g., 1.0.0).
chipModelTarget chip model for this firmware build. Determines which plug devices can receive this firmware.
deviceTypeType of device this firmware is intended for (e.g., PLUG, MCB, ENV_SENSOR).
remarksOptional release notes or comments about this firmware version. Used to document changes and fixes.
fileFirmware binary file to upload. Must be a valid firmware binary for the specified chip model. Maximum file size: 10MB.
mcbTypeMCB subtype the firmware targets. Required when deviceType === MCB; ignored otherwise.
ReuploadFirmwareDto
fileUpdated firmware binary file to upload. Must be a valid firmware binary for the existing chip model. Maximum file size: 10MB.
remarksOptional updated release notes or comments about this firmware version. Used to document changes and fixes.
GetFirmwareResponseDto
_idPrimary ID of the Firmware
adminCreatedName of the admin who created the firmware entry
versionNumberFirmware version number
chipModelChip Model of the Device
deviceTypeType of device this firmware is intended for
createdAtTimestamp when the firmware was created
updatedAtTimestamp when the firmware was last updated
adminLastModifiedName of the admin who last modified/re-uploaded the firmware
mcbTypeMCB subtype this firmware targets. Set only when deviceType === MCB.
remarksRemarks or notes about the firmware
MassSendOtaDto
versionNumberFirmware version number to push to all matching plugs. Must exist in the firmware repository.
chipModelTarget chip model to filter which plugs receive the OTA update. Only plugs with matching chip model will be updated.
deviceTypeType of device this firmware is intended for (e.g., PLUG, MCB, ENV_SENSOR).
targetVersionOptional filter to target only plugs currently running this specific firmware version. Used for targeted upgrades.
mcbTypeMCB subtype to match against the firmware record. Required when deviceType === MCB.
SendOtaDto
deviceIdsArray of unique plug identifiers to receive the OTA firmware update. Each plug will be notified via MQTT.
versionNumberFirmware version number to push to the specified devices. Must exist in the firmware repository.
chipModelTarget chip model for firmware compatibility validation. Ensures plugs receive compatible firmware.
deviceTypeType of device this firmware is intended for (e.g., PLUG, MCB, ENV_SENSOR).
targetVersionOptional filter to verify plugs are running this specific firmware version before updating. Used for validation.
mcbTypeMCB subtype to match against the firmware record. Required when deviceType === MCB.
MassSendOtaRollbackDto
chipModelChip Model of the Plug
deviceTypeType of device this firmware is intended for (e.g., PLUG, MCB, ENV_SENSOR).
SendOtaRollbackDto
deviceIdsList of unique Plug IDs
chipModelChip Model of the Plug
deviceTypeType of device this firmware is intended for (e.g., PLUG, MCB, ENV_SENSOR).
GetFirmwareListDto
totalTotal count of items matching filters
pageCurrent page number
sizeItems per page
totalPagesTotal number of pages
Array of firmware objects containing version details, chip models, and metadata. Sorted by creation date. File information is excluded for security.
GenerateDownloadUrlResponseDto
urlClean OTA download URL without embedded token
jwtTokenJWT token for Authorization header (devices should send as Bearer token)
VersionDistributionDto
versionNumberFirmware version number
deviceCountNumber of devices with this firmware version
ChipModelDistributionDto
chipModelChip model
totalDevicesTotal number of devices for this chip model
Distribution of firmware versions for this chip model
DeviceTypeFirmwareDistributionDto
deviceTypeDevice type
totalDevicesTotal number of devices for this device type
Distribution of firmware versions grouped by chip model
GetFirmwareVersionDistributionDto
Firmware version distribution grouped by device type
totalTotal number of device types
DeviceFirmwareInfoDto
_idDevice ID
macIdDevice MAC ID
deviceTypeDevice type
onStatusDevice status
systemNameSystem name
systemIdSystem ID
deviceNameDevice name
deviceNumberDevice number
chipModelChip model
versionNumberFirmware version number
lastSeenLast time the device was seen/reported
autoUpdateAttemptsNumber of auto-update attempts for this device
autoUpdateBlacklistedWhether the device is automatically blacklisted from auto-updates (max retries exceeded)
manualUpdateBlacklistWhether the device is manually blacklisted from auto-updates by admin
GetDeviceFirmwareListDto
totalTotal count of items matching filters
pageCurrent page number
sizeItems per page
totalPagesTotal number of pages
List of devices with firmware information
CreateAutoUpdatePolicyDto
enabledEnable or disable the auto-update policy
deviceTypeTarget device type for auto-updates
chipModelTarget chip model for auto-updates
targetVersionTarget firmware version to auto-update devices to
mcbTypeMCB subtype the policy targets. Required when deviceType === MCB; ignored otherwise.
sourceVersionsList of source firmware versions to update FROM. If empty or not provided, updates all versions. If specified, only devices on these versions will be auto-updated.
maxRetriesMaximum number of OTA attempts per device before blacklisting
AutoUpdatePolicyResponseDto
_idPrimary ID of the policy
enabledEnable or disable the auto-update policy
deviceTypeTarget device type for auto-updates
chipModelTarget chip model for auto-updates
targetVersionTarget firmware version to auto-update devices to
maxRetriesMaximum number of OTA attempts per device before blacklisting
createdByAdmin email/ID who created this policy
lastModifiedByAdmin email/ID who last modified this policy
createdAtTimestamp when the policy was created
updatedAtTimestamp when the policy was last updated
sourceVersionsList of source firmware versions to update FROM. If empty, updates all versions.
AutoUpdateAffectedDeviceDto
_idPrimary ID of the device
deviceNameDevice name
macIdDevice MAC address
deviceTypeDevice type
chipModelChip model
versionNumberCurrent firmware version
autoUpdateAttemptsNumber of auto-update OTA attempts sent to this device
autoUpdateBlacklistedWhether device is blacklisted from further auto-update attempts
System information
lastAutoUpdateAttemptTimestamp of last auto-update OTA attempt
AutoUpdateAffectedDevicesListDto
List of devices affected by the auto-update policy
totalTotal number of devices matching the policy criteria
policyTargetVersionTarget firmware version from the policy
needsUpdateCountNumber of devices that need updates (version mismatch, not blacklisted)
CreateTenantDto
tenantNameName of the tenant. Represents a department, unit, or organization within the system.
adminCreationFlag indicating whether an tenant admin should be created, if so send invite.
tenantEmailPrimary email address for tenant contact. Used for notifications and billing communications.
remarksAdditional notes or comments about the tenant. Useful for documenting special arrangements or contact details.
levelFloor number where the tenant is primarily located. Used for organizing tenants within a building.
energyUsageInitial energy usage budget allocated to the tenant in kilowatt-hours. Used for tracking consumption against quotas.
Geographic location details of the tenant. Includes address, city, country, and coordinates for mapping purposes.
tenantTypeTenant type key. Must be a valid type defined for this system via /entity-type/TENANT.
GetTenantDto
_idUnique identifier of the tenant in the database.
tenantNameName of the tenant. Represents a department, unit, or organization within the system.
tenantEmailPrimary email address for tenant contact. Used for notifications and billing communications.
deviceCountTotal count of devices assigned to this tenant. Used for resource allocation tracking.
deviceOnCountNumber of devices currently in ON status for this tenant.
deviceOffCountNumber of devices currently in OFF status for this tenant.
deviceInactiveCountNumber of devices currently in INACTIVE status for this tenant.
totalEnergyUsageEnergy usage budget allocated to the tenant in kilowatt-hours. Tracks consumption against quotas.
Geographic location details of the tenant. Includes address, city, country, and coordinates.
levelFloor number where the tenant is primarily located. Used for organizing tenants within a building.
totalFlaggedCountTotal number of rolling windows this tenant has been flagged. Represents how many different time periods the tenant exceeded thresholds.
totalViolationCountTotal number of individual violations across all time. Sum of all daily violations ever recorded for this tenant.
isMonitoringDisabledWhether surge monitoring is disabled for this tenant. If true, the tenant will not be checked for energy threshold violations.
suspectedDeviceTypesDevice types suspected of causing surge violations for this tenant.
tenantTypeTenant type key
GetTenantsResponseDto
totalTotal count of items matching filters
pageCurrent page number
sizeItems per page
totalPagesTotal number of pages
dataArray of GetTenantDto IDs
GetRoomDto
_idUnique identifier of the room in MongoDB ObjectId format.
nameDisplay name of the room as registered in the system.
deviceCountTotal count of devices currently assigned to this room.
deviceOnCountNumber of devices currently in ON status for this room.
deviceOffCountNumber of devices currently in OFF status for this room.
deviceInactiveCountNumber of devices currently in INACTIVE status for this room.
totalEnergyUsageCumulative energy consumption from all devices in this room, measured in kilowatt-hours (kWh).
tenantIdUnique identifier of the tenant organization that owns this room.
tenantNameName of the tenant organization that owns this room. Included when tenant data is populated.
zoneIdUnique identifier of the zone that has access to this room.
zoneNameName of the zone that has access to this room. Included when zone data is populated.
remarksOptional administrative notes or comments about the room. Used for describing room purpose or equipment.
totalFlaggedCountTotal number of rolling windows this room has been flagged. Represents how many different time periods the room exceeded thresholds.
totalViolationCountTotal number of individual violations across all time. Sum of all daily violations ever recorded for this room.
isMonitoringDisabledWhether surge monitoring is disabled for this room. If true, the room will not be checked for energy threshold violations.
squareMeterFloor area of the room in square meters.
energyIntensityEnergy intensity over the past 30 days in kWh/m²/month. Null if the room has no squareMeter set.
suspectedDeviceTypesDevice types suspected of causing surge violations for this room.
roomTypeRoom type key
GetZoneDto
_idUnique identifier of the zone in MongoDB ObjectId format.
nameFull name of the zone as registered in the system.
emailEmail address of the zone used for authentication and notifications.
deviceCountTotal count of devices currently assigned to this zone across all their rooms.
deviceOnCountNumber of devices currently in ON status for this zone.
deviceOffCountNumber of devices currently in OFF status for this zone.
deviceInactiveCountNumber of devices currently in INACTIVE status for this zone.
totalEnergyUsageCumulative energy consumption from all devices assigned to the zone, measured in kilowatt-hours (kWh).
remarksOptional administrative notes or comments about the zone. Used for internal tracking and context.
tenantNameName of the tenant organization that the zone belongs to. Included when tenant data is populated.
tenantIdUnique identifier of the tenant organization that the zone is associated with.
roomsArray of GetRoomDto IDs
totalFlaggedCountTotal number of rolling windows this zone has been flagged. Represents how many different time periods the zone exceeded thresholds.
totalViolationCountTotal number of individual violations across all time. Sum of all daily violations ever recorded for this zone.
isMonitoringDisabledWhether surge monitoring is disabled for this zone. If true, the zone will not be checked for energy threshold violations.
suspectedDeviceTypesDevice types suspected of causing surge violations for this zone.
zoneTypeZone type key
TenantRelationshipDto
_idUnique identifier of the tenant in the database.
tenantNameName of the tenant. Represents a department, unit, or organization within the system.
energyUsageEnergy usage budget allocated to the tenant in kilowatt-hours. Tracks consumption against quotas.
Array of IoT devices assigned to this tenant. Includes all device types: smart plugs, MCBs, distribution boxes, etc.
roomsArray of GetRoomDto IDs
Array of zones assigned to this tenant. Includes zone accounts with access to tenant resources.
numberOfZonesTotal count of zones assigned to this tenant. Used for resource planning and statistics.
numberOfRoomsTotal count of rooms belonging to this tenant. Used for resource planning and statistics.
numberOfDevicesTotal count of IoT devices assigned to this tenant. Used for resource planning and statistics. Includes all device types: smart plugs, MCBs, distribution boxes, etc.
GetTenantsRelationshipDto
Array of tenants with their complete relationship hierarchy including zones, rooms, and devices.
numberOfTenantsTotal count of tenants in the system. Useful for pagination and statistics.
numberOfZonesTotal count of zones across all tenants in the system. Useful for system-wide statistics.
numberOfRoomsTotal count of rooms across all tenants in the system. Useful for system-wide statistics.
numberOfDevicesTotal count of IoT devices across all tenants in the system. Useful for system-wide statistics. Includes all device types: smart plugs, MCBs, distribution boxes, etc.
RoomEnergyUsageDto
roomIdUnique identifier of the room
roomNameName of the room
energyUsageTotal energy usage in kilowatt-hours (kWh) for the specified period
GetRoomEnergyUsageResponseDto
tenantIdTenant ID for which energy usage was calculated
daysNumber of days the energy usage was calculated over
startDateStart date of the energy usage period (ISO 8601 format)
endDateEnd date of the energy usage period (ISO 8601 format)
List of rooms with their energy usage data
totalRoomsTotal number of rooms found for this tenant
totalEnergyUsageTotal energy usage across all rooms in kWh
UpdateTenantDto
tenantNameName of the tenant. Represents a department, unit, or organization within the system.
tenantEmailPrimary email address for tenant contact. Used for notifications and billing communications.
Geographic location details of the tenant. Includes address, city, country, and coordinates for mapping purposes.
remarksAdditional notes or comments about the tenant. Useful for documenting special arrangements or contact details.
levelFloor number where the tenant is primarily located. Used for organizing tenants within a building.
tenantTypeTenant type key. Must be a valid type defined for this system via /entity-type/TENANT.
MonitoringEntityType
Type of entity to start usage surge analysis for
StartAnalysisDto
entityTypeType of entity to start usage surge analysis for
startDateStart date for historical analysis (YYYY-MM-DD format). Must be at least 7 days before end date.
endDateEnd date for historical analysis (YYYY-MM-DD format). Must be at least 7 days after start date.
initialFlagThresholdMinimum number of violations required to flag an entity as initially problematic during analysis
McbMeasurementType
MCB measurement type classification
McbMeasurementTypeBreakdown
measurementTypeMCB measurement type classification
energyKwhTotal energy consumption in kWh for this measurement type
costAmountTotal cost amount for this measurement type
EntityEnergyBreakdown
Energy breakdown by MCB measurement type
totalEnergyKwhTotal energy consumption across all measurement types (kWh)
totalCostTotal cost across all measurement types ($)
periodDaysNumber of days in the analysis period
dailyAverageKwhDaily average energy consumption (kWh)
predictedMonthlyKwhPredicted monthly energy consumption (kWh)
predictedMonthlyCostPredicted monthly cost ($)
EntityAnalysisDetailDto
entityIdEntity ID
entityNameEntity name
averageDailyUsageKwhAverage daily usage during analysis period (kWh)
totalUsageKwhTotal usage during analysis period (kWh)
validDaysCountNumber of days with valid data in analysis period
exceededThresholdWhether this entity exceeded the threshold during analysis
exceedanceCountNumber of times threshold was exceeded during analysis period
predictedMonthlyKwhPredicted monthly usage (kWh) based on average daily usage
predictedYearlyKwhPredicted yearly usage (kWh) based on average daily usage
predictedMonthlyCostPredicted monthly cost based on tariff
predictedYearlyCostPredicted yearly cost based on tariff
Energy breakdown by MCB measurement type
AnalysisStartResponseDto
successOperation success status
messageConfirmation message
calculatedThresholdKwhCalculated threshold in kWh
entitiesAnalyzedNumber of entities analyzed
initialFlaggedCountNumber of initially flagged entities
Detailed analysis for each entity
System-wide energy breakdown by MCB measurement type
SentinelPowerRangeRuleDto
idUnique rule identifier (UUID)
labelHuman-readable label for the suspected device type
minWattsMinimum power threshold in Watts (inclusive)
maxWattsMaximum power threshold in Watts (inclusive)
minDurationMinutesMinimum cumulative minutes device must sustain power in range on a violation day to be classified
CreateSurgeConfigDto
calculatedThresholdKwhCalculated threshold (median) in kWh
manualThresholdKwhManual threshold override (kWh) - takes precedence over calculated threshold
defaultViolationCountDefault violation count to trigger flag
defaultViolationWindowDefault rolling window in days
Sentinel power range rules for suspected device classification
SurgeConfigResponseDto
successOperation success status
entityTypeEntity type
messageSuccess or informational message
Updated configuration
UpdateSystemSurgeConfigDto
calculatedThresholdKwhAuto-calculated threshold (median) in kWh - can be manually adjusted
manualThresholdKwhManual threshold override (kWh) - takes precedence over calculated threshold
defaultViolationCountDefault violation count to trigger flag
defaultViolationWindowDefault rolling window in days
Sentinel power range rules for suspected device classification
UpsertSentinelRulesDto
Full replacement set of sentinel power range rules for this entity type
EntityMetadata
tenantIdTenant ID
tenantNameTenant name
zoneIdZone ID
zoneNameZone name
ViolationResponseDto
_idViolation ID
entityTypeEntity type
entityIdEntity ID
entityNameEntity name
dateViolation date
dailyUsageKwhActual daily usage (kWh)
thresholdKwhThreshold that was exceeded (kWh)
exceedanceKwhAmount exceeded (kWh)
exceedancePercentPercentage exceeded (%)
isFlaggedWhether violation triggered alert
Additional contextual metadata
ViolationsListResponseDto
totalTotal count of items matching filters
pageCurrent page number
sizeItems per page
totalPagesTotal number of pages
List of violations
LatestViolationDto
dateDate of latest violation
dailyUsageKwhDaily usage in kWh
thresholdKwhThreshold in kWh
exceedanceKwhExceedance in kWh
exceedancePercentExceedance percentage
ViolationMetadata
entityNameEntity name (room/tenant/zone)
tenantIdTenant ID if applicable
tenantNameTenant name if applicable
userIdZone ID if applicable
zoneNameZone name if applicable
FlaggedEntityDto
entityIdEntity ID
entityNameEntity name
entityTypeEntity type
violationCountTotal violation count
currentPeriodViolationCountCurrent period violation count
totalFlaggedCountTotal times this entity has been flagged
thresholdKwhThreshold in kWh
firstViolationDateDate of first violation
lastViolationDateDate of last violation
Latest violation details
allViolationDatesAll violation dates
Additional violation metadata
FlaggedEntitiesResponseDto
List of flagged entities
totalTotal number of flagged entities
pageCurrent page number
sizePage size
ViolationClearReason
Primary reason for clearing violations
ClearViolationsDto
reasonPrimary reason for clearing violations
notesAdditional details or context about why violations are being cleared
ClearViolationsResponseDto
successOperation success status
entityTypeEntity type
entityIdEntity ID
deletedCountNumber of violations deleted
messageConfirmation message
ToggleMonitoringDto
isEnabledWhether to enable monitoring (true) or disable it (false)
reasonReason for enabling/disabling monitoring for this entity
MonitoringStatusResponseDto
successOperation success status
entityTypeEntity type
entityIdEntity ID
isMonitoringDisabledWhether entity monitoring is currently disabled
messageConfirmation message
ResetViolationsDto
deleteViolationRecordsWhether to delete all violation records from database (default: false). If false, only counters are reset but historical records are preserved.
ResetCounters
totalFlaggedCountTotal flagged count before reset
currentPeriodViolationCountCurrent period violation count before reset
ResetViolationsResponseDto
successSuccess status
entityTypeEntity type
entityIdEntity ID
Counter values before reset
deletedViolationsNumber of violation records deleted
messageSuccess message
EntityEnergyBreakdownResponseDto
entityIdEntity ID
entityNameEntity name
entityTypeEntity type
startDateAnalysis period start date
endDateAnalysis period end date
MCB measurement type breakdown with cost analysis
EntityCheckResultDto
entityIdEntity ID
entityNameEntity name
entityTypeType of entity
dailyUsageKwhDaily usage in kWh
thresholdKwhThreshold in kWh
violatedWhether this entity violated the threshold
currentPeriodViolationCountCurrent period violation count after check
totalFlaggedCountTotal lifetime flagged count after check
DailySurgeCheckResultDto
systemIdSystem ID that was checked
checkDateCheck date
totalEntitiesCheckedTotal entities checked across all types
totalViolationsDetectedTotal violations detected across all types
Detailed results for each entity checked
summaryByTypeSummary by entity type
FlaggedEntityDigestResultDto
entityIdEntity ID
entityNameEntity name
currentPeriodViolationCountCurrent period violation count
totalFlaggedCountTotal lifetime flagged count
thresholdKwhThreshold in kWh
lastViolationDateLast violation date
SurgeDigestResultDto
systemIdSystem ID
entityTypeEntity type for this digest
startDateRolling window period start date
endDateRolling window period end date
rollingWindowDaysRolling window in days
totalFlaggedEntitiesTotal flagged entities in this digest
totalViolationsTotal violations across all flagged entities
List of flagged entities included in digest
notificationIdNotification ID created for this digest
SingleScheduleEntryDto
actionAction type to perform at the scheduled date-time(s). For simple ON/OFF or complex actions like SET_TEMPERATURE.
dateTimeSingle scheduled date and time in ISO 8601 format when the one-time action should execute. Cannot be used with startDateTime/endDateTime. Must be a future timestamp.
startDateTimeStart date and time of the schedule range in ISO 8601 format. Must be used with endDateTime. Cannot be used with dateTime. Creates daily timers between start and end dates (inclusive) at the specified time.
endDateTimeEnd date and time of the schedule range in ISO 8601 format. Must be used with startDateTime. Cannot be used with dateTime. Creates daily timers between start and end dates (inclusive) at the specified time.
actionValueOptional value for actions that require it (e.g., temperature value for SET_TEMPERATURE, brightness for SET_BRIGHTNESS). Required for certain action types.
ruleNameAWS EventBridge rule name associated with this schedule entry. Used for managing and updating the schedule.
DailyScheduleEntryDto
timeTime when the scheduled action should occur in 24-hour format (HH:MM). Applied to recurring weekly schedules.
actionAction type to perform at the scheduled time. For simple ON/OFF or complex actions like SET_TEMPERATURE.
actionValueOptional value for actions that require it (e.g., temperature value for SET_TEMPERATURE, brightness for SET_BRIGHTNESS). Required for certain action types.
DeviceWeeklyScheduleDto
Array of one-time scheduled actions that occur at specific date-times. These schedules execute once and are automatically removed.
Array of scheduled actions for Monday. These execute weekly at specified times.
Array of scheduled actions for Tuesday. These execute weekly at specified times.
Array of scheduled actions for Wednesday. These execute weekly at specified times.
Array of scheduled actions for Thursday. These execute weekly at specified times.
Array of scheduled actions for Friday. These execute weekly at specified times.
Array of scheduled actions for Saturday. These execute weekly at specified times.
Array of scheduled actions for Sunday. These execute weekly at specified times.
DeviceSingleScheduleDto
Array of one-time scheduled actions with specific date-times. These schedules execute once and are automatically removed after execution.
EditDeviceSingleTimerDto
ruleNameAWS EventBridge rule name of the one-time timer to edit. Used to identify which schedule to update.
dateTimeUpdated scheduled date and time for the timer in ISO 8601 format. Must be a future timestamp.
actionUpdated action type to perform at the scheduled time. Replaces the existing action in the timer.
actionValueOptional value for actions that require it (e.g., temperature value for SET_TEMPERATURE, brightness for SET_BRIGHTNESS). Required for certain action types.
DeleteDeviceSingleTimerDto
ruleNameAWS EventBridge rule name of the one-time timer to delete. Used to identify which schedule to remove.
MergeMode
Defines how schedules should be merged. REPLACE: Clear all existing schedules and set new ones (default). MERGE: Add new schedules to existing ones, updating duplicates. APPEND: Add new schedules without modifying existing ones.
MassDevicesScheduleDto
deviceIdsArray of unique device identifiers to apply the schedule configuration to. Each device will receive the same schedule.
Schedule configuration containing weekly recurring and one-time schedules to apply to multiple devices.
mergeModeDefines how schedules should be merged. REPLACE: Clear all existing schedules and set new ones (default). MERGE: Add new schedules to existing ones, updating duplicates. APPEND: Add new schedules without modifying existing ones.
MassDevicesSingleScheduleDto
deviceIdsArray of unique device identifiers to apply the one-time schedules to. Each device will receive the same schedule.
Array of one-time scheduled actions with specific date-times to apply to multiple devices.
DeviceScheduleInfo
ruleNameAWS EventBridge rule name associated with this device schedule. Used for identifying and managing the schedule.
deviceIdUnique identifier of the device in MongoDB ObjectId format.
deviceNameDisplay name of the device for identification purposes in the UI.
MassEditDeviceSingleTimerDto
Array of device details with EventBridge rule names for the one-time timers to batch edit. All specified timers will be updated with the same new schedule.
newDateTimeNew scheduled date and time to apply to all specified timers. Must be a future timestamp in ISO 8601 format.
newActionNew action type to apply to all specified timers at the scheduled time. Replaces existing actions.
newActionValueOptional value for the new action (e.g., temperature for SET_TEMPERATURE, brightness for SET_BRIGHTNESS). Required for certain action types.
MassEditDeviceWeeklyTimerDto
Array of device details with EventBridge rule names for the recurring weekly timers to batch edit. All specified timers will be updated.
newTimeNew time in 24-hour format (HH:MM) to apply to all specified weekly timers. Must be valid time between 00:00 and 23:59.
newActionNew action type to apply to all specified weekly timers at the scheduled time. Replaces existing actions.
newActionValueOptional value for the new action (e.g., temperature for SET_TEMPERATURE, brightness for SET_BRIGHTNESS). Required for certain action types.
daysOfWeekOptional filter to only edit timers on specific days of the week. If provided, only rules matching these days will be updated. If omitted, all provided rules will be updated (backward compatible).
MassDeleteDeviceTimerDto
Array of device details with EventBridge rule names for the timers to batch delete. Supports both one-time and recurring weekly schedules.
GroupedRecurringSchedule
timeScheduled time in 24-hour format (HH:MM) when the recurring action executes. Shared by all devices in this group.
actionAction type to perform at the scheduled time. All devices in this group will execute the same action.
daysOfWeekArray of weekday names when this recurring schedule is active. Schedule repeats weekly on these days.
deviceCountTotal number of devices that share this identical recurring schedule pattern.
Array of device details with their EventBridge rule names. Each device has this same recurring schedule configured.
actionValueOptional value for actions that require it (e.g., temperature, brightness). All devices in this group will use the same value.
GroupedOneTimeSchedule
dateTimeScheduled date and time when this one-time action will execute. Shared by all devices in this group.
actionAction type to perform at the scheduled date-time. All devices in this group will execute the same action.
deviceCountTotal number of devices that share this identical one-time schedule configuration.
Array of device details with their EventBridge rule names. Each device has this same one-time schedule configured.
actionValueOptional value for actions that require it (e.g., temperature, brightness). All devices in this group will use the same value.
GetSystemGroupedSchedulesDto
Array of recurring weekly schedules grouped by time and action. Shows which devices share the same recurring schedule pattern.
Array of one-time schedules grouped by date-time and action. Shows which devices share the same one-time schedule.
totalDevicesTotal count of all schedulable devices in the system (includes devices with and without schedules). Only counts device types that support scheduling.
devicesWithSchedulesCount of devices that have at least one active schedule configured. Used to calculate scheduling adoption rate.
AdjustmentType
Type of adjustment suggested
DayOfWeek
Which day(s) this adjustment applies to
ScheduleMapDto
Monday schedule entries
Tuesday schedule entries
Wednesday schedule entries
Thursday schedule entries
Friday schedule entries
Saturday schedule entries
Sunday schedule entries
ScheduleAdjustmentStatus
Status of this suggestion
ScheduleAdjustmentSuggestionDto
_idSuggestion ID
deviceDevice ID
deviceTypeDevice type
systemSystem ID
adjustmentTypeType of adjustment suggested
affectedDaysWhich day(s) this adjustment applies to
overrideTimeTime when user triggered this override
overrideActionWhat user did
Current schedule before adjustment
Suggested adjusted schedule
statusStatus of this suggestion
occurrenceCountNumber of times this pattern was detected
firstOccurrenceFirst time this pattern was detected
lastOccurrenceMost recent time this pattern was detected
occurrenceTimesAll override times that contributed to this pattern
earliestOverrideTimeEarliest time from all occurrences (used for adjustment)
latestOverrideTimeLatest time from all occurrences
timeRangeMinutesTime range in minutes (latest - earliest)
confidenceScoreConfidence score 0-1 based on occurrences and time range
createdAtWhen this suggestion was created
updatedAtWhen this suggestion was last updated
deviceNameDevice name
roomNameRoom name the device belongs to
reviewedAtWhen user responded to this
reviewedByUserUser who reviewed this
estimatedHoursSavedPerWeekEstimated hours saved per week if suggestion is applied (based on schedule diff across affected days)
estimatedKwhSavedPerWeekEstimated kWh saved per week based on recent 14-day average daily usage
estimatedCostSavedPerWeekEstimated cost saved per week in dollars
GetSystemSuggestionsResponseDto
totalTotal number of suggestions
Suggestions currently being monitored (below threshold)
Suggestions ready for manual review (hit threshold)
Suggestions ready for auto-apply on next toggle
Suggestions that were accepted and applied
Suggestions that were rejected
Suggestions that were automatically applied
Suggestions where auto-apply failed
GetDeviceSuggestionsResponseDto
totalTotal number of suggestions
List of suggestions for the device
AcceptSuggestionResponseDto
messageSuccess message
The accepted suggestion
deviceIdDevice ID
deviceNameDevice name
RejectSuggestionResponseDto
messageSuccess message
The rejected suggestion
InvoiceItemDto
productReference to the product ID
quantityQuantity purchased
CreateInvoiceDto
dueDateDue date for the invoice
Array of invoice line items
systemIdSystem ID associated with the invoice
tenantIdTenant ID associated with the invoice
invoiceDateInvoice date (defaults to current date)
taxRateTax rate as a percentage (e.g., 10 for 10%)
discountAmountDiscount amount applied to the invoice
notesAdditional notes
Product
_idThe unique identifier of the subscription tier
pricePrice of product
nameName of product
descriptionDescription of the product
createdAtThe date when the product was created
updatedAtThe date when the product was last updated
SystemInvoiceItem
Reference to the product
quantityQuantity purchased
SystemInvoice
_idbillingTypesystemSystem ID reference
invoiceNumberUnique invoice number for tracking and reference
invoiceDateInvoice date
dueDateDue date for payment
subtotalSubtotal before tax
taxRateTax rate percentage
taxTax amount (subtotal x taxRate / 100)
totalFinal total amount
statusCurrent payment status
isDeletedSoft delete flag
createdAtupdatedAtArray of invoice line items
discountDiscount amount
notesAdditional notes
tenantTenant ID reference
zoneuserUpdateInvoiceDiscountDto
discountAmountDiscount amount to be applied to the invoice
UpdateInvoiceStatusDto
statusNew status of the invoice
UpdateInvoiceNotesDto
notesNotes for the invoice
InvoiceItemInput
productReference to the product ID
quantityQuantity purchased
UpdateInvoiceItemsDto
Array of invoice items to replace the existing items list. Each item requires a product ID and quantity.
TriggerInvoiceGenerationDto
systemIdSystem ID to generate invoice for
fromStart of billing period
toEnd of billing period
taxRateTax rate percentage (0-100)
GenerateInvoiceResultDto
systemIdSystem ID for which the invoice was generated
systemNameSystem name
successWhether invoice generation was successful
plugCountNumber of plugs billed
apiCallCountNumber of API calls billed
Generated invoice (if successful)
errorError message (if failed)
BulkInvoiceGenerationResultDto
totalSystemsTotal number of systems processed
Results for each system
billingPeriodStartBilling period start date
billingPeriodEndBilling period end date
executedAtTimestamp when the cron job ran
CreateBillingConfigDto
billingTypetariffRatePrice per kWh
billingDayDay of month to auto-generate invoice (1-28)
billingEmailEmail address for invoice PDF delivery
tenantIdTenant ID (required if billingType is TENANT)
zoneIdZone ID (required if billingType is ZONE)
userIdUser ID (required if billingType is USER)
replyToReply-to email for invoice emails. Replies go to this address.
UpdateBillingConfigDto
tariffRatebillingDaybillingEmailreplyToReply-to email for invoice emails. Replies go to this address.
isActiveBillingConfig
_idbillingTypesystemtariffRatePrice per kWh
billingDayDay of month (1-28) to auto-generate invoice
billingEmailEmail address to receive the invoice PDF
isActiveisDeletedcreatedAtupdatedAttenantzoneuserreplyToReply-to email for invoice emails. Replies go to this address.
scheduleNameAWS EventBridge schedule name for automated monthly billing
EnergyInvoice
_idbillingTypesystemSystem ID reference
invoiceNumberUnique invoice number for tracking and reference
invoiceDateInvoice date
dueDateDue date for payment
subtotalSubtotal before tax
taxRateTax rate percentage
taxTax amount (subtotal x taxRate / 100)
totalFinal total amount
statusCurrent payment status
isDeletedSoft delete flag
createdAtupdatedAtbillingPeriodFromBilling period start date
billingPeriodToBilling period end date
totalKwhTotal energy consumption in kWh during billing period
tariffRateTariff rate applied at time of billing (price per kWh)
currencyCurrency code (automatically derived from system country code)
emailSentWhether invoice email with PDF attachment was successfully sent
tenantTenant ID reference
zoneuserTriggerBillingDto
entityIdID of the entity to bill (tenant ID, zone ID, or user ID)
billingPeriodFromStart of billing period (ISO date)
billingPeriodToEnd of billing period (ISO date)
dueDateInvoice due date (ISO date).
taxRateTax rate percentage (0 = no tax)
replyToReply-to email address for the invoice. Replies go to this address.
TriggerBillingResponseDto
entityIdID of the entity (tenant/zone/user) that was billed
entityNameName of the entity that was billed
successWhether the billing operation was successful
totalKwhTotal energy consumption in kWh for the billing period
totalAmountTotal amount billed in the configured currency
emailSentWhether the invoice email was sent successfully
errorError message if the operation failed
ApiTokenAudience
Audience of the token. System (default) reaches every API-token endpoint; Consumer is restricted to consumer-scoped (zone and below) endpoints.
CreateApiTokenDto
audienceAudience of the token. System (default) reaches every API-token endpoint; Consumer is restricted to consumer-scoped (zone and below) endpoints.
ApiTokenResponseDto
tokenApi token string for accessing external APIs
GetSystemDetailsDto
_idUnique identifier of the system in the database.
systemNameName of the system. Typically represents an organization, building, or facility using the Ecovolt platform.
numberOfDevicesTotal number of devices in the system.
deviceOnCountNumber of devices currently reporting ON.
deviceOffCountNumber of devices currently reporting OFF.
deviceInactiveCountNumber of devices that are currently inactive.
GetAdminDto
_idUnique identifier of the admin account in the database.
nameFull name of the admin user. Used for identification and display purposes.
emailEmail address of the admin user. Used for authentication and notifications.
roleAdministrative role determining the level of access and permissions within the system.
Array of systems that are linked to and managed by this admin. Includes full system details for each linked system.
approvedIndicates whether the admin account has been approved by a superadmin.
createdAtTimestamp when the admin account was created in the system.
updatedAtTimestamp when the admin account was last modified.
pendingIndicates whether the admin account is awaiting approval. True if not yet approved.
mainSystemIdMain system ID, typically the first system in the systems array. Used as the default system for the admin.
associatedUserIdReference to the associated User ID if this admin account is linked to a specific user.
associatedTenantIdReference to the associated Tenant ID if this admin account is linked to a specific tenant.
associatedRoomIdReference to the associated Room ID if this admin account is linked to a specific room.
enable2FAIndicates whether two-factor authentication is enabled for this admin account.
ApiTokenUsageDto
_idPrimary ID of the ApiTokenUsage
urlURL accessed using the API token
methodHTTP method used with the API token
createdAtDate when the usage was recorded
updatedAtDate when the usage was last updated
ApiTokenUsageSearchResultDto
Array of API token usage records
totalTotal number of matching records
GetApiTokenDto
_idPrimary ID of the API token
systemIdSystem ID associated with the API token
GetApiTokenWithUsageDto
_idPrimary ID of the API token
adminGetAdminDto ID reference
systemIdSystem ID associated with the API token
systemNameSystem name associated with the API token
usageCountNumber of times this API token has been used
createdAtDate when the API token was created
updatedAtDate when the API token was last updated
GetAdminsDto
adminsArray of GetAdminDto IDs
totalTotal count of admin accounts in the database. Used for pagination calculations.
UpdateAdminRoleDto
roleThe new administrative role to assign to the admin. Determines the level of access and permissions within the system.
associatedZoneOptional zone ID to associate this admin with a specific zone account
associatedTenantOptional tenant ID to associate this admin with a specific tenant
associatedRoomOptional room ID to associate this admin with a specific room
UpdateAdminDto
nameFull name of the admin user. Used for identification and display purposes within the system.
emailEmail address of the admin user. Used for authentication and system notifications.
passwordNew password for the admin account. Must be at least 6 characters long and will be hashed before storage.
roleAdministrative role determining the level of access and permissions within the system.
LinkSystemToAdminDto
systemIdUnique identifier of the system to be linked to the admin account. This establishes a management relationship between the admin and the system.
UnlinkSystemToAdminDto
systemIdUnique identifier of the system to be unlinked from the admin account. This removes the management relationship between the admin and the system.
CreateZoneDto
nameFull name of the zone to be registered in the system. This will be displayed across the application.
adminCreationFlag indicating whether an tenant admin should be created, if so send invite.
emailUnique email address for the zone account. Required when adminCreation is true. Must not already exist in the system and will be used for authentication.
remarksOptional administrative notes or comments about the zone. Used for internal documentation and context.
zoneTypeZone type key. Must be a valid type defined for this system via /entity-type/ZONE.
LinkMultiplePlugsDto
plugIdsArray of plug identifiers to link to the zone. Used when assigning multiple plugs to a zone at once.
GetZonesResponseDto
totalTotal count of items matching filters
pageCurrent page number
sizeItems per page
totalPagesTotal number of pages
Array of zone objects matching the query criteria
UpdateZoneDto
nameUpdated full name for the zone. This will replace the existing name in the system.
emailUpdated email address for the zone. Must be unique and not already in use by another account.
tenantIdUpdated tenant identifier to reassign the zone to a different organization.
remarksUpdated administrative notes or comments about the zone. Replaces existing remarks if provided.
zoneTypeZone type key. Must be a valid type defined for this system via /entity-type/ZONE.
MigratePlugDto
targetPlugIdThe ID of the target plug
sourcePlugIdThe ID of the source plug
hasPreviousSetupIndicates if the source plug has previous setup
EcoguardPlug
_idPrimary ID of the EcoGuard
ecoguardEnabledEcoguard Timer
ecoguardTimerIdle Timeout Duration of the Ecoguard (Minutes)
ecoguardIdleThresholdEcoguard Idle Threshold
Plug
_idPrimary ID of the Device
deviceTypeType of device (discriminator field)
macIdMAC ID of the Device (from IoT device)
deviceNameName of the Device
deviceNumberUnique device number for identification
onStatusStatus of the Device (ON / OFF / INACTIVE / ERROR)
locationPhysical location or address where the device is installed
remarksRemarks for the Device
batchNumberManufacturing batch number for tracking production groups
chipModelHardware chip model identifier used in the device
versionNumberFirmware version number currently running on the device
ssidNetwork SSID (Wi-Fi name) that the device is connected to
tenantTenant ID reference
Tagged Zone
roomRoom ID reference
systemSystem ID reference
createdAtDate Time of the Creation
updatedAtDate Time of the Update
lastSeenLast time the device was seen/reported
isLockedWhether the device is locked. When locked, the device on/off status cannot be toggled.
totalEnergyUsageTotal cumulative energy usage in kWh
totalEnergySavedTotal energy saved through optimization in kWh
autoUpdateAttemptsNumber of auto-update OTA attempts sent to this device
autoUpdateBlacklistedWhether device is blacklisted from auto-updates (max retries exceeded)
manualUpdateBlacklistWhether device is manually blacklisted from auto-updates by admin
inactivityNotificationEnabledWhether inactivity notifications are enabled for this device
plugCategoryPlug category name. See GET /plug-category for all valid values.
plugTypeType of Plug
energyUsageRecommendationReportEnergy Usage Recommendation Report
Ecoguard of the system
migratedToPlug to which this plug has been migrated
targetStatePending desired on/off state commanded by backend (cloud / scheduled). Set when a toggle is issued; cleared when the device reports a matching state or a physical (MANUAL) press overrides it. Always ON or OFF when present.
targetStateSetAtTimestamp when targetState was last written. Used to expire stale SCHEDULED intents (24hr TTL). CLOUD intents do not expire.
targetSourceOrigin of the pending targetState. Drives TTL behavior on reconcile. Only CLOUD / SCHEDULED are ever written here.
deviceModelModel of the device plugged into this smart plug
deviceBrandBrand of the device plugged into this smart plug
isSpareWhether the device is a spare/inventory device. Spare devices can be filtered out of user-facing dashboards.
Schedule configuration for the device. Contains recurring weekly schedules and one-time scheduled tasks.
realTimePowerReal-time power consumption in watts
realTimeCurrentReal-time current in amperes
lastAutoUpdateAttemptTimestamp of last auto-update OTA attempt
inactivityNotificationSentAtTimestamp when the last inactivity notification was sent for this device
voltageMaxMax Threshold voltage reading in volts
currentMaxMax Threshold current reading in amps
powerMaxMax Threshold power reading in watts
notificationThresholdHourHourly notification threshold — minimum hours between repeat notifications of the same type
PlugUpdateItem
plugIdMongoDB ID of the plug to update
plugCategoryCategory of the device connected to this plug. See GET /plug-category for valid values.
deviceBrandBrand of the device connected to this plug
deviceModelModel of the device connected to this plug
remarksAdditional remarks or notes about the plug
BulkUpdatePlugsDto
Array of plug update operations to perform in a single batch
AiCategorizePlugsRequestDto
plugIdsArray of plug IDs to categorize using AI
UpdatePlugDto
deviceNameName of the device
locationPhysical location of the device
remarksAdditional remarks or notes about the device
tenantIdTenant ID to associate the device with
zoneIdZone ID to associate the device with
roomIdRoom ID to associate the device with
isLockedWhether the device is locked. When locked, the device cannot be toggled ON/OFF.
isSpareWhether the device is a spare/inventory device. Spare devices can be filtered out of user-facing dashboards.
plugTypeType of Plug
plugCategoryType of Plug Category
deviceModelModel identifier of the Plug
deviceBrandBrand of the Plug device
batchNumberBatch Number of the Plug
FilteredPlugDto
_idUnique database identifier of the device document in the system
macIdUnique identifier assigned to the device by the IoT hardware (MAC ID)
deviceNameFriendly name for the device for easy identification
onStatusCurrent operational status of the device (ON, OFF, INACTIVE, or ERROR)
totalEnergyUsageCumulative total energy consumption in kilowatt-hours (kWh) since device installation
tenantIdUnique identifier of the tenant organization that owns this device
tenantNameName of the tenant organization that owns this device
zoneIdUnique identifier of the zone that this device is assigned to
zoneNameName of the zone that this device is assigned to
roomIdUnique identifier of the room where this device is physically located
roomNameName of the room where this device is physically located
dbIdUnique identifier of the distribution box that this device is connected to (for MCBs)
dbNameName of the distribution box that this device is connected to (for MCBs)
systemIdUnique identifier of the system that this device belongs to
systemNameName of the system that this device belongs to
realTimePowerReal-time power consumption in watts (W) measured by the device
realTimeCurrentReal-time current draw in amperes (A) measured by the device
ssidNetwork SSID (Wi-Fi name) that the device is currently connected to
plugTypeHardware type classification of the plug device (e.g., ADAPTER, EXTENSION)
plugCategoryCategory classification for the connected device type. See GET /plug-category for valid values.
targetStatePending desired on/off state commanded by backend. Present when a toggle was issued but the device has not yet acknowledged (e.g. issued while INACTIVE). Frontend can derive a "Pending" indicator when this differs from onStatus.
targetStateSetAtTimestamp when the pending targetState was last written.
deviceNumberAuto-incremented sequential number for tracking device registration order
batchNumberManufacturing batch number for tracking production groups and quality control
chipModelHardware chip model identifier used in the device (e.g., ESP32C2, ESP8266)
versionNumberFirmware version number currently running on the device
Weekly and one-time schedule configuration for automated device control
lastSeenTimestamp when the device last communicated with the system
isLockedLock status indicating if the device is locked
inactivityNotificationEnabledWhether inactivity notifications are enabled for this device
Ecoguard power-saving feature configuration and settings for this plug
GetPlugsResponseDto
totalTotal count of items matching filters
pageCurrent page number
sizeItems per page
totalPagesTotal number of pages
Array of plug device objects matching the query criteria
PlugCategoryEnergyBreakdownDto
plugCategoryCategory classification of the plug device. See GET /plug-category for valid values.
totalEnergyUsageTotal energy usage (kWh) for all plugs in this category
PlugCategoriesBreakdownDto
plugCategoryCategory classification of the plug device. See GET /plug-category for valid values.
countTotal count of plugs belonging to this specific category in the system
CreateEcoguardPlugDto
ecoguardEnabledEnable or disable the Ecoguard automatic power-off feature for idle detection. When enabled, the plug monitors power consumption.
ecoguardTimerDuration in minutes before the plug automatically turns off after detecting idle power usage. Applied when power stays below threshold.
ecoguardIdleThresholdPower consumption threshold in watts that defines idle state. When usage falls below this value, the idle timer starts counting.
MCBPoles
Number of poles in the MCB
SandboxDevice
idUnique identifier for the sandbox device
typeType of sandbox device
nameUser-defined name for the device
digitalTwinXX position on the digital twin canvas
rowLineRow line position (1-6)
ratedCurrentRated current in amperes
ratedVoltageRated voltage in volts
mcbTypeMCB type (for DUMB_MCB devices)
mcbPolesMCB poles configuration (for DUMB_MCB devices)
leakageCurrentLeakage current in milliamperes (for RCCB devices)
colorCustom color for visual identification
notesAdditional notes about the device
WireConnection
deviceIdDevice ID (MCB._id or SandboxDevice.id)
deviceTypeType of device being connected
sideSide of the device where the connection is made
SandboxWire
idUnique identifier for the wire connection
Source connection point
Target connection point
colorWire color (hex code)
thicknessWire thickness in pixels
labelOptional label for the wire
DistributionBox
_idPrimary ID of the Distribution Box
nameName/identifier of the Distribution Box
systemSystem to which this distribution box belongs
createdAtDate and time when the distribution box was created
updatedAtDate and time when the distribution box was last updated
boxNumberUnique box number for identification within a system
numberOfRowsNumber of rows in the distribution box
mcbsArray of MCB IDs or partially populated MCB objects (_id, deviceName, macId, onStatus)
hasMainBreakerWhether the distribution box has a main circuit breaker
mainBreakerRatingMain breaker rating in amperes (if hasMainBreaker is true)
locationPhysical location where the distribution box is installed
remarksAdditional remarks or notes about the distribution box
tenantTenant to which this distribution box belongs
zoneZone to which this distribution box belongs
roomRoom where this distribution box is located
Array of sandbox (non-smart) devices in the distribution box
Array of wire connections between devices in the distribution box
digitalTwinWidthWidth of the digital twin canvas in pixels
digitalTwinHeightHeight of the digital twin canvas in pixels
singleLineDiagramKeyS3 key for the single line diagram image
singleLineDiagramUrlCDN URL for the single line diagram image
MCB
_idPrimary ID of the Device
deviceTypeType of device (discriminator field)
macIdMAC ID of the Device (from IoT device)
deviceNameName of the Device
deviceNumberUnique device number for identification
onStatusStatus of the Device (ON / OFF / INACTIVE / ERROR)
locationPhysical location or address where the device is installed
remarksRemarks for the Device
batchNumberManufacturing batch number for tracking production groups
chipModelHardware chip model identifier used in the device
versionNumberFirmware version number currently running on the device
ssidNetwork SSID (Wi-Fi name) that the device is connected to
tenantTenant ID reference
Tagged Zone
roomRoom ID reference
systemSystem ID reference
createdAtDate Time of the Creation
updatedAtDate Time of the Update
lastSeenLast time the device was seen/reported
isLockedWhether the device is locked. When locked, the device on/off status cannot be toggled.
totalEnergyUsageTotal cumulative energy usage in kWh
totalEnergySavedTotal energy saved through optimization in kWh
autoUpdateAttemptsNumber of auto-update OTA attempts sent to this device
autoUpdateBlacklistedWhether device is blacklisted from auto-updates (max retries exceeded)
manualUpdateBlacklistWhether device is manually blacklisted from auto-updates by admin
inactivityNotificationEnabledWhether inactivity notifications are enabled for this device
mcbTypeType of MCB
mcbPolesNumber of poles in the MCB
ratedCurrentRated current capacity in amperes
ratedVoltageRated voltage in volts
realTimeVoltageReal-time voltage in volts
powerFactorPower factor (0-1)
Parent distribution box containing this MCB
isReversePowerWhether power/current readings should be reversed (made absolute). When true, negative values are converted to positive.
targetStatePending desired on/off state commanded by backend (cloud / scheduled). Set when a toggle is issued; cleared when the device reports a matching state or a physical (MANUAL) press overrides it. Always ON or OFF when present.
targetStateSetAtTimestamp when targetState was last written. Used to expire stale SCHEDULED intents (24hr TTL). CLOUD intents do not expire.
targetSourceOrigin of the pending targetState. Drives TTL behavior on reconcile. Only CLOUD / SCHEDULED are ever written here.
deviceModelModel name or identifier of the device
deviceBrandBrand or manufacturer of the device
isSpareWhether the device is a spare/inventory device. Spare devices can be filtered out of user-facing dashboards.
Schedule configuration for the device. Contains recurring weekly schedules and one-time scheduled tasks.
realTimePowerReal-time power consumption in watts
realTimeCurrentReal-time current in amperes
lastAutoUpdateAttemptTimestamp of last auto-update OTA attempt
inactivityNotificationSentAtTimestamp when the last inactivity notification was sent for this device
measurementTypeType of load/circuit being measured by this MCB
digitalTwinXX coordinate for digital twin SVG positioning
rowLineRow line number (1-6) the MCB is connected to
slotNumberSlot/position number on the busbar
voltageMaxMax Threshold voltage reading in volts
currentMaxMax Threshold current reading in amps
powerMaxMax Threshold power reading in watts
notificationThresholdHourHourly notification threshold — minimum hours between repeat notifications of the same type
FilteredMcbDto
_idUnique database identifier of the device document in the system
macIdUnique identifier assigned to the device by the IoT hardware (MAC ID)
deviceNameFriendly name for the device for easy identification
onStatusCurrent operational status of the device (ON, OFF, INACTIVE, or ERROR)
totalEnergyUsageCumulative total energy consumption in kilowatt-hours (kWh) since device installation
tenantIdUnique identifier of the tenant organization that owns this device
tenantNameName of the tenant organization that owns this device
zoneIdUnique identifier of the zone that this device is assigned to
zoneNameName of the zone that this device is assigned to
roomIdUnique identifier of the room where this device is physically located
roomNameName of the room where this device is physically located
dbIdUnique identifier of the distribution box that this device is connected to (for MCBs)
dbNameName of the distribution box that this device is connected to (for MCBs)
systemIdUnique identifier of the system that this device belongs to
systemNameName of the system that this device belongs to
realTimePowerReal-time power consumption in watts (W) measured by the device
realTimeCurrentReal-time current draw in amperes (A) measured by the device
ssidNetwork SSID (Wi-Fi name) that the device is currently connected to
mcbTypeType of MCB (trip curve type)
mcbPolesNumber of poles in the MCB
ratedCurrentRated current capacity in amperes
targetStatePending desired on/off state commanded by backend. Present when a toggle was issued but the device has not yet acknowledged (e.g. issued while INACTIVE). Frontend can derive a "Pending" indicator when this differs from onStatus.
targetStateSetAtTimestamp when the pending targetState was last written.
deviceNumberAuto-incremented sequential number for tracking device registration order
batchNumberManufacturing batch number for tracking production groups and quality control
chipModelHardware chip model identifier used in the device (e.g., ESP32C2, ESP8266)
versionNumberFirmware version number currently running on the device
Weekly and one-time schedule configuration for automated device control
lastSeenTimestamp when the device last communicated with the system
isLockedLock status indicating if the device is locked
inactivityNotificationEnabledWhether inactivity notifications are enabled for this device
measurementTypeType of load/circuit being measured by this MCB
ratedVoltageRated voltage in volts
realTimeVoltageReal-time voltage in volts
powerFactorPower factor (0-1)
digitalTwinXX coordinate for digital twin SVG positioning
rowLineRow line number (1-6) the MCB is connected to
slotNumberSlot/position number on the busbar
isReversePowerWhether power/current readings are reversed (made absolute). When true, negative values are converted to positive.
GetMCBsResponseDto
totalTotal count of items matching filters
pageCurrent page number
sizeItems per page
totalPagesTotal number of pages
List of MCBs with organizational hierarchy details
MCBNameSuggestionDto
mcbIdMCB ID
suggestedNameSuggested device name composed of Distribution Box name, Room name, and Measurement type
distributionBoxNameDistribution Box name
roomNameRoom name
zoneNameZone name
tenantNameTenant name
deviceNumberDevice number
GetBulkMCBNamesResponseDto
Array of MCB IDs with their suggested names
MCBNameUpdateDto
mcbIdMCB ID
deviceNameNew device name to save
SaveBulkMCBNamesDto
Array of MCB ID and name pairs to save
MCBUpdateDto
mcbIdMCB ID
ratedCurrentRated current capacity in amperes (1-100)
ratedVoltageRated voltage in volts
mcbPolesNumber of poles in the MCB
mcbTypeType of MCB
measurementTypeType of load/circuit being measured by this MCB
MassUpdateMCBDto
Array of MCB updates
UpdateMCBDto
deviceNameName of the device
locationPhysical location of the device
remarksAdditional remarks or notes about the device
tenantIdTenant ID to associate the device with
zoneIdZone ID to associate the device with
roomIdRoom ID to associate the device with
isLockedWhether the device is locked. When locked, the device cannot be toggled ON/OFF.
isSpareWhether the device is a spare/inventory device. Spare devices can be filtered out of user-facing dashboards.
deviceNumberUnique device number for identification
mcbTypeType of MCB (trip curve type)
mcbPolesNumber of poles in the MCB
measurementTypeMeasurement type classification for energy usage categorization
onStatusStatus of the MCB
ratedCurrentRated current capacity in amperes
ratedVoltageRated voltage in volts
distributionBoxIdDistribution Box ID containing this MCB
digitalTwinXX coordinate for digital twin SVG positioning
rowLineRow line number (1-6) the MCB is connected to
slotNumberSlot/position number on the busbar
MassMoveMCBsDistributionBoxDto
mcbIdsArray of MCB IDs to move to the new distribution box
newDistributionBoxIdID of the new distribution box to move the MCBs to. If null or undefined, MCBs will be unassigned from their current distribution box.
MCBPositionDto
mcbIdMCB ID
digitalTwinXX coordinate for digital twin SVG positioning
rowLineRow line number (1-6) the MCB is connected to
slotNumberSlot/position number on the busbar
BulkUpdateMCBPositionsDto
Array of MCB positions to update
SetReversePowerDto
isReversePowerWhether to enable reverse power mode. When true, negative power/current values are converted to positive (absolute values).
SetReversePowerResponseDto
mcbIdThe MCB ID that was updated
isReversePowerThe new reverse power status
hourlyRecordsConvertedNumber of hourly usage history records converted to absolute values
dailyRecordsConvertedNumber of daily usage history records converted to absolute values
AirconControlIrType
Type of IR device being controlled (AIRCON or FAN)
AirconControlFanBrand
Brand of the fan unit (only applicable when irType is FAN)
AirconControlSeriesType
Series type — NORMAL (control only) or PRO (control + ambient temp/humidity sensing)
AirconControl
_idPrimary ID of the Device
deviceTypeType of device (discriminator field)
macIdMAC ID of the Device (from IoT device)
deviceNameName of the Device
deviceNumberUnique device number for identification
onStatusStatus of the Device (ON / OFF / INACTIVE / ERROR)
locationPhysical location or address where the device is installed
remarksRemarks for the Device
batchNumberManufacturing batch number for tracking production groups
chipModelHardware chip model identifier used in the device
versionNumberFirmware version number currently running on the device
ssidNetwork SSID (Wi-Fi name) that the device is connected to
tenantTenant ID reference
Tagged Zone
roomRoom ID reference
systemSystem ID reference
createdAtDate Time of the Creation
updatedAtDate Time of the Update
lastSeenLast time the device was seen/reported
isLockedWhether the device is locked. When locked, the device on/off status cannot be toggled.
totalEnergyUsageTotal cumulative energy usage in kWh
totalEnergySavedTotal energy saved through optimization in kWh
autoUpdateAttemptsNumber of auto-update OTA attempts sent to this device
autoUpdateBlacklistedWhether device is blacklisted from auto-updates (max retries exceeded)
manualUpdateBlacklistWhether device is manually blacklisted from auto-updates by admin
inactivityNotificationEnabledWhether inactivity notifications are enabled for this device
isIRRemoteWhether this is an IR remote (true) or wired control (false)
irTypeType of IR device being controlled (AIRCON or FAN)
temperatureTemperature setting in degrees Celsius
targetStatePending desired on/off state commanded by backend (cloud / scheduled). Set when a toggle is issued; cleared when the device reports a matching state or a physical (MANUAL) press overrides it. Always ON or OFF when present.
targetStateSetAtTimestamp when targetState was last written. Used to expire stale SCHEDULED intents (24hr TTL). CLOUD intents do not expire.
targetSourceOrigin of the pending targetState. Drives TTL behavior on reconcile. Only CLOUD / SCHEDULED are ever written here.
deviceModelModel name or identifier of the device
deviceBrandBrand or manufacturer of the device
isSpareWhether the device is a spare/inventory device. Spare devices can be filtered out of user-facing dashboards.
Schedule configuration for the device. Contains recurring weekly schedules and one-time scheduled tasks.
realTimePowerReal-time power consumption in watts
realTimeCurrentReal-time current in amperes
lastAutoUpdateAttemptTimestamp of last auto-update OTA attempt
inactivityNotificationSentAtTimestamp when the last inactivity notification was sent for this device
List of smart devices controlled by this aircon sensor
fanBrandBrand of the fan unit (only applicable when irType is FAN)
fanSpeedFan speed setting (only applicable when irType is FAN)
brandBrand of the AC unit being controlled
modelNumberManufacturer model number (e.g. FTKM50QV1M). Required for consumption estimation via AirconModelSpec lookup. Stored uppercased and trimmed.
modeAC operation mode (COOL, HEAT, DRY, FAN, AUTO)
fanFan speed setting (LOW, MEDIUM, HIGH, AUTO)
swingSwing/oscillation setting (ON, OFF, AUTO)
temperatureMinMin ambient temperature threshold in Celsius for alerts
temperatureMaxMax ambient temperature threshold in Celsius for alerts
humidityMinMin ambient humidity threshold percentage for alerts
humidityMaxMax ambient humidity threshold percentage for alerts
notificationThresholdHourMinimum hours between repeated notifications for the same alert type
seriesTypeSeries type — NORMAL (control only) or PRO (control + ambient temp/humidity sensing)
targetTemperatureTarget temperature setting in degrees Celsius for smart mode (automatically adjusts based on ambient conditions)
smartModeWhether the device is in smart mode (automatically adjusts settings based on ambient conditions) or manual mode
lastSmartModeUpdateTimestamp of the last update to smart mode settings (used for tracking when thresholds were last updated)
aggressivenessSmart mode proportional gain. Controls how aggressively the AC setpoint compensates for ambient-vs-target deviation. 0 = no compensation (setpoint equals target), 1 = full compensation, >1 = over-compensation. Default: 0.5.
deadbandTemperatureSmart mode deadband in °C. If the ambient temperature is within this range of the target, no setpoint adjustment is sent. Prevents oscillation and unnecessary compressor cycling. Default: 0.5.
smartModeIntervalMinutesMinimum interval in minutes between smart mode recalculations. Prevents excessive updates. Typical values: 15, 30, 60. Default: 60.
SmartDeviceRefDto
_idDevice ID
macIdMAC address of the device
deviceTypeDevice type
deviceNameDisplay name of the device
FilteredAirconControlDto
_idUnique database identifier of the device document in the system
macIdUnique identifier assigned to the device by the IoT hardware (MAC ID)
deviceNameFriendly name for the device for easy identification
onStatusCurrent operational status of the device (ON, OFF, INACTIVE, or ERROR)
totalEnergyUsageCumulative total energy consumption in kilowatt-hours (kWh) since device installation
tenantIdUnique identifier of the tenant organization that owns this device
tenantNameName of the tenant organization that owns this device
zoneIdUnique identifier of the zone that this device is assigned to
zoneNameName of the zone that this device is assigned to
roomIdUnique identifier of the room where this device is physically located
roomNameName of the room where this device is physically located
dbIdUnique identifier of the distribution box that this device is connected to (for MCBs)
dbNameName of the distribution box that this device is connected to (for MCBs)
systemIdUnique identifier of the system that this device belongs to
systemNameName of the system that this device belongs to
realTimePowerReal-time power consumption in watts (W) measured by the device
realTimeCurrentReal-time current draw in amperes (A) measured by the device
ssidNetwork SSID (Wi-Fi name) that the device is currently connected to
isIRRemoteWhether this is an IR remote (true) or wired control (false)
irTypeType of IR device being controlled (AIRCON or FAN)
temperatureTarget temperature setting in degrees Celsius
targetStatePending desired on/off state commanded by backend. Present when a toggle was issued but the device has not yet acknowledged (e.g. issued while INACTIVE). Frontend can derive a "Pending" indicator when this differs from onStatus.
targetStateSetAtTimestamp when the pending targetState was last written.
deviceNumberAuto-incremented sequential number for tracking device registration order
batchNumberManufacturing batch number for tracking production groups and quality control
chipModelHardware chip model identifier used in the device (e.g., ESP32C2, ESP8266)
versionNumberFirmware version number currently running on the device
Weekly and one-time schedule configuration for automated device control
lastSeenTimestamp when the device last communicated with the system
isLockedLock status indicating if the device is locked
inactivityNotificationEnabledWhether inactivity notifications are enabled for this device
fanBrandBrand of the fan unit (only applicable when irType is FAN)
fanSpeedFan speed setting (only applicable when irType is FAN)
brandBrand of the AC unit being controlled
modelNumberManufacturer model number (e.g. FTKM50QV1M). Used with brand for consumption estimation via AirconModelSpec lookup.
modeAC operation mode (COOL, HEAT, DRY, FAN, AUTO)
fanFan speed setting (LOW, MEDIUM, HIGH, AUTO)
swingSwing/oscillation setting (ON, OFF, AUTO)
seriesTypeSeries type — NORMAL (control only) or PRO (control + ambient temp/humidity sensing)
Devices this unit can directly control via MQTT (MAXWELL_PRO only)
smartModeWhether the device is in smart mode (automatically adjusts settings based on ambient conditions) or manual mode
targetTemperatureTarget temperature setting in degrees Celsius for smart mode (automatically adjusts based on ambient conditions)
lastSmartModeUpdateTimestamp of the last update to smart mode settings (used for tracking when thresholds were last updated)
aggressivenessSmart mode proportional gain (0–1). Controls how aggressively the AC setpoint compensates for ambient deviation from target. Default: 0.5.
deadbandTemperatureSmart mode deadband in °C (0–3). Ambient readings within this range of the target temperature are ignored. Default: 0.5.
smartModeIntervalMinutesMinimum minutes between smart mode recalculations (1–1440 [24 hours]). Prevents excessive setpoint updates. Default: 60.
GetAirconControlsDto
List of aircon control devices with organizational hierarchy details
totalTotal number of aircon control devices
pageCurrent page number
sizeNumber of items per page
UpdateAirconControlDto
deviceNameName of the device
locationPhysical location of the device
remarksAdditional remarks or notes about the device
tenantIdTenant ID to associate the device with
zoneIdZone ID to associate the device with
roomIdRoom ID to associate the device with
isLockedWhether the device is locked. When locked, the device cannot be toggled ON/OFF.
isSpareWhether the device is a spare/inventory device. Spare devices can be filtered out of user-facing dashboards.
isIRRemoteWhether this is an IR remote (true) or wired control (false)
brandTypeBrand of the AC unit being controlled
modelNumberManufacturer model number used to look up rated power for consumption estimation (e.g. FTKM50QV1M).
irTypeType of IR device being controlled (AIRCON or FAN)
fanBrandBrand of the fan unit (only applicable when irType is FAN)
fanSpeedFan speed setting (only applicable when irType is FAN)
smartDeviceIdsIDs of devices this unit can directly control via MQTT. Only applicable for MAXWELL_PRO series.
smartModeWhether the device is in smart mode (automatically adjusts settings based on ambient conditions) or manual mode
targetTemperatureTarget temperature setting in degrees Celsius for smart mode (automatically adjusts based on ambient conditions)
aggressivenessSmart mode proportional gain (0–1). Controls how aggressively the AC setpoint compensates for ambient deviation from target. Default: 0.5.
deadbandTemperatureSmart mode deadband in °C (0–3). Ambient readings within this range of the target temperature are ignored. Default: 0.5.
smartModeIntervalMinutesMinimum minutes between smart mode recalculations (1–1440 [24 hours]). Prevents excessive setpoint updates. Default: 60.
ControlAirconDto
onStatusPower state of the AC (ON/OFF/INACTIVE)
temperatureTarget temperature setting in degrees Celsius
modeAC operation mode (COOL, HEAT, DRY, FAN, AUTO)
fanFan speed setting (LOW, MEDIUM, HIGH, AUTO)
swingSwing/oscillation setting (ON, OFF, AUTO)
fanSpeedFan speed setting (only applicable when irType is FAN)
smartModeWhether the device is in smart mode (automatically adjusts settings based on ambient conditions) or manual mode
targetTemperatureTarget temperature setting in degrees Celsius for smart mode (automatically adjusts based on ambient conditions)
brandTypeBrand of the AC unit (only applicable when irType is AIRCON)
UpdateAirconControlThresholdDto
temperatureMinMin ambient temperature threshold in Celsius
temperatureMaxMax ambient temperature threshold in Celsius
humidityMinMin ambient humidity threshold percentage
humidityMaxMax ambient humidity threshold percentage
notificationThresholdHourMinimum hours between repeated notifications for the same alert type
MassUpdateBrandAirconDto
idsArray of Aircon Control IDs to update
brandTypeBrand to assign to all specified devices
BulkControlAirconDto
idsArray of Aircon Control IDs to control
onStatusPower state of the AC (ON/OFF/INACTIVE)
temperatureTarget temperature setting in degrees Celsius
modeAC operation mode (COOL, HEAT, DRY, FAN, AUTO)
fanFan speed setting (LOW, MEDIUM, HIGH, AUTO)
swingSwing/oscillation setting (ON, OFF, AUTO)
fanSpeedFan speed setting (only applicable when irType is FAN)
smartModeWhether the device is in smart mode (automatically adjusts settings based on ambient conditions) or manual mode
targetTemperatureTarget temperature setting in degrees Celsius for smart mode (automatically adjusts based on ambient conditions)
brandTypeBrand of the AC unit (only applicable when irType is AIRCON)
EstimateAirconConsumptionDto
startDateStart of the date range (ISO 8601). Inclusive.
endDateEnd of the date range (ISO 8601). Inclusive.
AirconConsumptionByModeDto
kwhTotal kWh accumulated while in this mode
hoursTotal runtime hours while in this mode
AirconConsumptionIntervalDto
startendmodeOperating mode (AIRCON_CONTROL only)
temperatureCfanFan speed setting (AIRCON_CONTROL only)
hoursDuration in hours
powerKwEstimated instantaneous power draw in kW
kwhEstimated energy consumed during this interval in kWh
AirconConsumptionEstimateDto
airconIdbrandAir conditioner brand (AIRCON_CONTROL only)
modelNumberratedInputPowerKwRated input power (kW) used as the load reference
startDateendDateambientTempCAmbient temperature used in the load-factor calc
ambientSourceWhere the ambient temperature came from
totalKwhtotalRuntimeHourskWh and runtime hours broken down by AirconControlMode. Keys are mode names (COOL, DRY, FAN, AUTO, HEAT). Values are AirconConsumptionByModeDto.
Per-interval breakdown used to build the totals
accuracyNoteDisclaimer on accuracy
tariffCentsPerKwhCurrent system tariff in cents/kWh used to compute cost. Omitted if no active tariff rate is set on the system.
costSgdTotal cost in SGD = totalKwh × (tariffCentsPerKwh / 100). Omitted when no active tariff rate is set on the system.
CreateRoomDto
nameDisplay name for the room. This will be used to identify the room throughout the system.
squareMeterFloor area of the room in square meters.
remarksOptional administrative notes or comments about the room. Used for describing the room purpose or equipment.
systemIdUnique identifier of the system that this room belongs to. Automatically populated from URL parameter.
tenantIdOptional identifier of the tenant organization that owns this room. Can be omitted for single-tenant systems.
zoneIdOptional identifier of the zone to assign this room to. If provided, the room will be accessible by this zone.
roomTypeRoom type key. Must be a valid type defined for this system via /entity-type/ROOM.
GetRoomsResponseDto
totalTotal count of items matching filters
pageCurrent page number
sizeItems per page
totalPagesTotal number of pages
dataArray of GetRoomDto IDs
UpdateRoomDto
nameUpdated display name for the room. This will replace the existing room name.
zoneIdUpdated zone identifier to reassign room access to a different zone.
tenantIdUpdated tenant identifier to reassign the room to a different organization.
squareMeterUpdated floor area of the room in square meters. Pass null to clear the existing value.
remarksUpdated administrative notes or comments about the room. Replaces existing remarks if provided.
roomTypeRoom type key. Must be a valid type defined for this system via /entity-type/ROOM.
AirconModelSpecDto
_idbrandAir conditioner brand (AIRCON_CONTROL only)
modelNumberratedCoolingKwratedInputPowerKwverifiedAtcreatedAtupdatedAtcspfannualKwhSgnotesAirconModelSpecsResponseDto
totalTotal count of items matching filters
pageCurrent page number
sizeItems per page
totalPagesTotal number of pages
Aircon model spec rows matching the query
CreateAirconModelSpecDto
brandAir conditioner brand (AIRCON_CONTROL only)
modelNumberManufacturer model number. Server uppercases + trims.
ratedCoolingKwratedInputPowerKwcspfannualKwhSgverifiedAtWhen this row was verified. Defaults to now if omitted.
notesUpdateAirconModelSpecDto
brandAir conditioner brand (AIRCON_CONTROL only)
modelNumberManufacturer model number. Server uppercases + trims.
ratedCoolingKwratedInputPowerKwcspfannualKwhSgverifiedAtWhen this row was verified. Defaults to now if omitted.
notesEnvironmentSensorType
Type of the environment sensor device (e.g., IAQ4, IAQ9)
EnvironmentSensor
_idPrimary ID of the Device
deviceTypeType of device (discriminator field)
macIdMAC ID of the Device (from IoT device)
deviceNameName of the Device
deviceNumberUnique device number for identification
onStatusStatus of the Device (ON / OFF / INACTIVE / ERROR)
locationPhysical location or address where the device is installed
remarksRemarks for the Device
batchNumberManufacturing batch number for tracking production groups
chipModelHardware chip model identifier used in the device
versionNumberFirmware version number currently running on the device
ssidNetwork SSID (Wi-Fi name) that the device is connected to
tenantTenant ID reference
Tagged Zone
roomRoom ID reference
systemSystem ID reference
createdAtDate Time of the Creation
updatedAtDate Time of the Update
lastSeenLast time the device was seen/reported
isLockedWhether the device is locked. When locked, the device on/off status cannot be toggled.
totalEnergyUsageTotal cumulative energy usage in kWh
totalEnergySavedTotal energy saved through optimization in kWh
autoUpdateAttemptsNumber of auto-update OTA attempts sent to this device
autoUpdateBlacklistedWhether device is blacklisted from auto-updates (max retries exceeded)
manualUpdateBlacklistWhether device is manually blacklisted from auto-updates by admin
inactivityNotificationEnabledWhether inactivity notifications are enabled for this device
List of smart devices controlled by this environment sensor
environmentSensorTypeType of the environment sensor device (e.g., IAQ4, IAQ9)
notificationThresholdHourHourly notification threshold for the Environment Sensor
carbonDioxideThreshold CO2 reading in ppm
luxThreshold light level in lux (lx)
formaldehydeThreshold formaldehyde (HCHO) reading in ppm
temperatureMinMin Threshold temperature reading in degrees Celsius
temperatureMaxMaxThreshold temperature reading in degrees Celsius
humidityThreshold humidity percentage
fineParticulateMatterThreshold Fine Particulate Matter in µg/m3
coarseParticulateMatterThreshold Coarse Particulate Matter in µg/m3
totalVolatileOrganicCompoundsThreshold Total Volatile Organic Compounds in ppm
soundLevelThreshold Sound Level in dB
motionDetectedMotion detection status
thresholdGroupNameName of the threshold group this sensor belongs to
smartModeIntervalMinutesMinimum interval in minutes between smart mode recalculations triggered by this sensor. Typical values: 15, 30, 60. Default: 60.
lastSmartModeUpdateTimestamp of the last smart mode update dispatched by this sensor. Used to enforce the smartModeIntervalMinutes cooldown.
targetStatePending desired on/off state commanded by backend (cloud / scheduled). Set when a toggle is issued; cleared when the device reports a matching state or a physical (MANUAL) press overrides it. Always ON or OFF when present.
targetStateSetAtTimestamp when targetState was last written. Used to expire stale SCHEDULED intents (24hr TTL). CLOUD intents do not expire.
targetSourceOrigin of the pending targetState. Drives TTL behavior on reconcile. Only CLOUD / SCHEDULED are ever written here.
deviceModelModel name or identifier of the device
deviceBrandBrand or manufacturer of the device
isSpareWhether the device is a spare/inventory device. Spare devices can be filtered out of user-facing dashboards.
Schedule configuration for the device. Contains recurring weekly schedules and one-time scheduled tasks.
realTimePowerReal-time power consumption in watts
realTimeCurrentReal-time current in amperes
lastAutoUpdateAttemptTimestamp of last auto-update OTA attempt
inactivityNotificationSentAtTimestamp when the last inactivity notification was sent for this device
FilteredEnvironmentSensorDto
_idUnique database identifier of the device document in the system
macIdUnique identifier assigned to the device by the IoT hardware (MAC ID)
deviceNameFriendly name for the device for easy identification
onStatusCurrent operational status of the device (ON, OFF, INACTIVE, or ERROR)
totalEnergyUsageCumulative total energy consumption in kilowatt-hours (kWh) since device installation
tenantIdUnique identifier of the tenant organization that owns this device
tenantNameName of the tenant organization that owns this device
zoneIdUnique identifier of the zone that this device is assigned to
zoneNameName of the zone that this device is assigned to
roomIdUnique identifier of the room where this device is physically located
roomNameName of the room where this device is physically located
dbIdUnique identifier of the distribution box that this device is connected to (for MCBs)
dbNameName of the distribution box that this device is connected to (for MCBs)
systemIdUnique identifier of the system that this device belongs to
systemNameName of the system that this device belongs to
realTimePowerReal-time power consumption in watts (W) measured by the device
realTimeCurrentReal-time current draw in amperes (A) measured by the device
ssidNetwork SSID (Wi-Fi name) that the device is currently connected to
temperatureMinMinimum threshold temperature reading in degrees Celsius
temperatureMaxMaximum threshold temperature reading in degrees Celsius
targetStatePending desired on/off state commanded by backend. Present when a toggle was issued but the device has not yet acknowledged (e.g. issued while INACTIVE). Frontend can derive a "Pending" indicator when this differs from onStatus.
targetStateSetAtTimestamp when the pending targetState was last written.
deviceNumberAuto-incremented sequential number for tracking device registration order
batchNumberManufacturing batch number for tracking production groups and quality control
chipModelHardware chip model identifier used in the device (e.g., ESP32C2, ESP8266)
versionNumberFirmware version number currently running on the device
Weekly and one-time schedule configuration for automated device control
lastSeenTimestamp when the device last communicated with the system
isLockedLock status indicating if the device is locked
inactivityNotificationEnabledWhether inactivity notifications are enabled for this device
environmentSensorTypeType of environment sensor (IAQ4, IAQ9, or temperature sensor)
temperatureCurrent temperature reading in degrees Celsius
carbonDioxideThreshold CO2 reading in ppm
luxThreshold light level in lux (lx)
formaldehydeThreshold formaldehyde (HCHO) reading in ppm
humidityThreshold humidity percentage
fineParticulateMatterThreshold Fine Particulate Matter (PM2.5) in µg/m³
coarseParticulateMatterThreshold Coarse Particulate Matter (PM10) in µg/m³
totalVolatileOrganicCompoundsThreshold Total Volatile Organic Compounds in ppm
soundLevelThreshold Sound Level in dB
motionDetectedMotion detection status
thresholdGroupNameName of the threshold group this sensor belongs to
Devices this sensor can directly control via MQTT
smartModeIntervalMinutesMinimum minutes between smart mode recalculations triggered by this sensor (1–1440). Default: 60.
lastSmartModeUpdateTimestamp of the last smart mode update dispatched by this sensor.
GetEnvironmentSensorsDto
totalTotal count of items matching filters
pageCurrent page number
sizeItems per page
totalPagesTotal number of pages
List of environment sensor devices
UpdateEnvironmentSensorDeviceDto
onStatusOperational status of the environment sensor device
deviceNameName of the device
locationPhysical location of the device
remarksAdditional remarks or notes about the device
tenantIdTenant ID to associate the device with
zoneIdZone ID to associate the device with
roomIdRoom ID to associate the device with
isLockedWhether the device is locked. When locked, the device cannot be toggled ON/OFF.
isSpareWhether the device is a spare/inventory device. Spare devices can be filtered out of user-facing dashboards.
smartDeviceIdsIDs of devices this sensor can directly control via MQTT.
smartModeIntervalMinutesMinimum minutes between smart mode recalculations triggered by this sensor (1–1440). Default: 60.
UpdateEnvironmentSensorThresholdDto
temperatureMinMin Threshold temperature reading in degrees Celsius
temperatureMaxMax Threshold temperature reading in degrees Celsius
carbonDioxideThreshold CO2 reading in ppm
luxThreshold light level in lux (lx)
formaldehydeThreshold formaldehyde (HCHO) reading in ppm
humidityThreshold humidity percentage
fineParticulateMatterThreshold Fine Particulate Matter in µg/m3
coarseParticulateMatterThreshold Coarse Particulate Matter in µg/m3
totalVolatileOrganicCompoundsThreshold Total Volatile Organic Compounds in ppm
soundLevelThreshold Sound Level in dB
motionDetectedMotion detection status
notificationThresholdHourHourly notification threshold for the Environment Sensor
BulkUpdateEnvironmentSensorThresholdsDto
environmentSensorIdsIDs of environment sensors to update
carbonDioxideThreshold CO2 reading in ppm
luxThreshold light level in lux (lx)
formaldehydeThreshold formaldehyde (HCHO) in ppm
temperatureMinMin Threshold temperature in °C
temperatureMaxMax Threshold temperature in °C
humidityThreshold humidity percentage
fineParticulateMatterThreshold Fine Particulate Matter in µg/m3
coarseParticulateMatterThreshold Coarse Particulate Matter in µg/m3
totalVolatileOrganicCompoundsThreshold Total Volatile Organic Compounds in ppm
soundLevelThreshold Sound Level in dB
motionDetectedMotion detection enabled
notificationThresholdHourHourly notification threshold — minimum hours between repeat notifications
EnvironmentSensorThresholdGroup
_idPrimary ID of the Threshold Group
nameUser-defined group name
systemIdSystem this group belongs to
environmentSensorTypeType of environment sensors in this group
sensorIdsSensors assigned to this group
temperatureMinMin temperature threshold in degrees Celsius
temperatureMaxMax temperature threshold in degrees Celsius
humidityMax humidity threshold percentage
carbonDioxideMax CO2 threshold in ppm
luxMax light level threshold in lux (lx)
formaldehydeMax formaldehyde (HCHO) threshold in ppm
fineParticulateMatterMax PM2.5 threshold in ug/m3
coarseParticulateMatterMax PM10 threshold in ug/m3
totalVolatileOrganicCompoundsMax TVOC threshold in ppm
soundLevelMax sound level threshold in dB
CreateEnvironmentSensorThresholdGroupDto
nameUser-defined group name
environmentSensorTypeType of environment sensors in this group
sensorIdsSensor IDs to assign to this group. Each sensor must match the group's environmentSensorType. Sensors are automatically removed from their previous group.
temperatureMinMin temperature threshold in degrees Celsius
temperatureMaxMax temperature threshold in degrees Celsius
humidityMax humidity threshold percentage
carbonDioxideMax CO2 threshold in ppm
luxMax light level threshold in lux (lx)
formaldehydeMax formaldehyde (HCHO) threshold in ppm
fineParticulateMatterMax PM2.5 threshold in ug/m3
coarseParticulateMatterMax PM10 threshold in ug/m3
totalVolatileOrganicCompoundsMax TVOC threshold in ppm
soundLevelMax sound level threshold in dB
UpdateEnvironmentSensorThresholdGroupDto
nameUpdated group name
sensorIdsFull list of sensor IDs to assign to this group (replaces existing assignments). Each sensor must match the group's environmentSensorType. Sensors are automatically removed from their previous group.
temperatureMinMin temperature threshold in degrees Celsius
temperatureMaxMax temperature threshold in degrees Celsius
humidityMax humidity threshold percentage
carbonDioxideMax CO2 threshold in ppm
luxMax light level threshold in lux (lx)
formaldehydeMax formaldehyde (HCHO) threshold in ppm
fineParticulateMatterMax PM2.5 threshold in ug/m3
coarseParticulateMatterMax PM10 threshold in ug/m3
totalVolatileOrganicCompoundsMax TVOC threshold in ppm
soundLevelMax sound level threshold in dB
FilteredSmartSwitchDto
_idUnique database identifier of the device document in the system
macIdUnique identifier assigned to the device by the IoT hardware (MAC ID)
deviceNameFriendly name for the device for easy identification
onStatusCurrent operational status of the device (ON, OFF, INACTIVE, or ERROR)
totalEnergyUsageCumulative total energy consumption in kilowatt-hours (kWh) since device installation
tenantIdUnique identifier of the tenant organization that owns this device
tenantNameName of the tenant organization that owns this device
zoneIdUnique identifier of the zone that this device is assigned to
zoneNameName of the zone that this device is assigned to
roomIdUnique identifier of the room where this device is physically located
roomNameName of the room where this device is physically located
dbIdUnique identifier of the distribution box that this device is connected to (for MCBs)
dbNameName of the distribution box that this device is connected to (for MCBs)
systemIdUnique identifier of the system that this device belongs to
systemNameName of the system that this device belongs to
realTimePowerReal-time power consumption in watts (W) measured by the device
realTimeCurrentReal-time current draw in amperes (A) measured by the device
ssidNetwork SSID (Wi-Fi name) that the device is currently connected to
switchTypeType of appliance the switch controls (LIGHT, FAN, AIRCON, or UNREGISTERED)
numberOfGangsNumber of gangs/buttons on the switch (1-4)
Array of gang switch states - each gang has its own independent on/off state
targetStatePending desired on/off state commanded by backend. Present when a toggle was issued but the device has not yet acknowledged (e.g. issued while INACTIVE). Frontend can derive a "Pending" indicator when this differs from onStatus.
targetStateSetAtTimestamp when the pending targetState was last written.
deviceNumberAuto-incremented sequential number for tracking device registration order
batchNumberManufacturing batch number for tracking production groups and quality control
chipModelHardware chip model identifier used in the device (e.g., ESP32C2, ESP8266)
versionNumberFirmware version number currently running on the device
Weekly and one-time schedule configuration for automated device control
lastSeenTimestamp when the device last communicated with the system
isLockedLock status indicating if the device is locked
inactivityNotificationEnabledWhether inactivity notifications are enabled for this device
GetSmartSwitchesDto
List of Smart Switches with organizational hierarchy details
totalTotal number of Smart Switches
pageCurrent page number
sizeNumber of items per page
UpdateSmartSwitchDto
deviceNameName of the device
locationPhysical location of the device
remarksAdditional remarks or notes about the device
tenantIdTenant ID to associate the device with
zoneIdZone ID to associate the device with
roomIdRoom ID to associate the device with
isLockedWhether the device is locked. When locked, the device cannot be toggled ON/OFF.
isSpareWhether the device is a spare/inventory device. Spare devices can be filtered out of user-facing dashboards.
onStatusStatus of the Smart Switch
switchTypeType of appliance the switch controls
numberOfGangsNumber of gangs/buttons on the switch (1-4)
SmartSwitch
_idPrimary ID of the Device
deviceTypeType of device (discriminator field)
macIdMAC ID of the Device (from IoT device)
deviceNameName of the Device
deviceNumberUnique device number for identification
onStatusStatus of the Device (ON / OFF / INACTIVE / ERROR)
locationPhysical location or address where the device is installed
remarksRemarks for the Device
batchNumberManufacturing batch number for tracking production groups
chipModelHardware chip model identifier used in the device
versionNumberFirmware version number currently running on the device
ssidNetwork SSID (Wi-Fi name) that the device is connected to
tenantTenant ID reference
Tagged Zone
roomRoom ID reference
systemSystem ID reference
createdAtDate Time of the Creation
updatedAtDate Time of the Update
lastSeenLast time the device was seen/reported
isLockedWhether the device is locked. When locked, the device on/off status cannot be toggled.
totalEnergyUsageTotal cumulative energy usage in kWh
totalEnergySavedTotal energy saved through optimization in kWh
autoUpdateAttemptsNumber of auto-update OTA attempts sent to this device
autoUpdateBlacklistedWhether device is blacklisted from auto-updates (max retries exceeded)
manualUpdateBlacklistWhether device is manually blacklisted from auto-updates by admin
inactivityNotificationEnabledWhether inactivity notifications are enabled for this device
switchTypeType of appliance the switch controls (LIGHT, FAN, AIRCON, or UNREGISTERED)
numberOfGangsNumber of gangs/buttons on the switch (1-4)
Array of gang switch states - each gang has its own independent on/off state
targetStatePending desired on/off state commanded by backend (cloud / scheduled). Set when a toggle is issued; cleared when the device reports a matching state or a physical (MANUAL) press overrides it. Always ON or OFF when present.
targetStateSetAtTimestamp when targetState was last written. Used to expire stale SCHEDULED intents (24hr TTL). CLOUD intents do not expire.
targetSourceOrigin of the pending targetState. Drives TTL behavior on reconcile. Only CLOUD / SCHEDULED are ever written here.
deviceModelModel name or identifier of the device
deviceBrandBrand or manufacturer of the device
isSpareWhether the device is a spare/inventory device. Spare devices can be filtered out of user-facing dashboards.
Schedule configuration for the device. Contains recurring weekly schedules and one-time scheduled tasks.
realTimePowerReal-time power consumption in watts
realTimeCurrentReal-time current in amperes
lastAutoUpdateAttemptTimestamp of last auto-update OTA attempt
inactivityNotificationSentAtTimestamp when the last inactivity notification was sent for this device
ControlSmartSwitchDto
gangStatesArray of binary gang switch states where 1 = ON and 0 = OFF. Array index corresponds to gang number (e.g., [1, 0, 0, 1] means gang 1 ON, gang 2 OFF, gang 3 OFF, gang 4 ON)
triggerSourceSource that triggered the control command
BulkControlSmartSwitchDto
idsArray of Smart Switch IDs to control
onStatusDesired power state for all gangs on all Smart Switches. Use ON to turn all gangs on, or OFF to turn all gangs off.
CreateDistributionBoxDto
nameName/identifier of the Distribution Box
systemIdSystem ID to which this Distribution Box belongs
numberOfRowsNumber of rows in the distribution box
hasMainBreakerWhether the distribution box has main circuit breaker
mainBreakerRatingMain breaker rating in amperes (if hasMainBreaker is true)
tenantIdTenant ID to which this Distribution Box belongs
zoneIdZone ID to which this Distribution Box belongs
roomIdRoom ID to which this Distribution Box belongs
mcbIdsArray of MCB IDs to be assigned to this distribution box
locationLocation of the Distribution Box
remarksRemarks for the Distribution Box
digitalTwinWidthWidth of the digital twin canvas in pixels
digitalTwinHeightHeight of the digital twin canvas in pixels
GetDistributionBoxesDto
Array of Distribution Boxes
totalTotal number of Distribution Boxes
pageCurrent page number
sizeNumber of items per page
SandboxDeviceInputDto
idUnique identifier for the sandbox device
typeType of sandbox device
nameUser-defined name for the device
digitalTwinXX position on the digital twin canvas
rowLineRow line position (1-6)
ratedCurrentRated current in amperes
ratedVoltageRated voltage in volts
mcbTypeMCB type (for DUMB_MCB devices)
mcbPolesMCB poles configuration (for DUMB_MCB devices)
leakageCurrentLeakage current in milliamperes (for RCCB devices)
colorCustom color for visual identification (hex code)
notesAdditional notes about the device
WireConnectionDto
deviceIdDevice ID (MCB._id or SandboxDevice.id)
deviceTypeType of device being connected
sideSide of the device where the connection is made
SandboxWireInputDto
idUnique identifier for the wire connection
Source connection point
Target connection point
colorWire color (hex code)
thicknessWire thickness in pixels
labelOptional label for the wire
UpdateDistributionBoxDto
nameName/identifier of the Distribution Box
numberOfRowsNumber of rows in the distribution box
hasMainBreakerWhether the distribution box has main circuit breaker
mainBreakerRatingMain breaker rating in amperes (if hasMainBreaker is true)
tenantIdTenant ID to which this Distribution Box belongs
zoneIdZone ID to which this Distribution Box belongs
roomIdRoom ID to which this Distribution Box belongs
mcbIdsArray of MCB IDs to be assigned to this distribution box
locationLocation of the Distribution Box
remarksRemarks for the Distribution Box
Array of sandbox (non-smart) devices in the distribution box
Array of wire connections between devices in the distribution box
digitalTwinWidthWidth of the digital twin canvas in pixels
digitalTwinHeightHeight of the digital twin canvas in pixels
AddMCBToDistributionBoxDto
mcbIdMCB ID to add to the distribution box
RemoveMCBFromDistributionBoxDto
mcbIdMCB ID to remove from the distribution box
GetMCBEnergyUsageDto
mcbIdMCB ID
deviceNameMCB name
totalEnergyUsageTotal energy usage in kWh
realTimePowerReal-time power consumption in watts
realTimeCurrentReal-time current in amperes
GetDistributionBoxEnergyUsageDto
distributionBoxIdDistribution Box ID
nameDistribution Box name
totalEnergyUsageTotal energy usage in kWh (sum of all MCBs)
mcbCountNumber of MCBs in this distribution box
Individual MCB energy usage details
GetAggregatedDistributionBoxEnergyUsageDto
totalEnergyUsageTotal aggregated energy usage in kWh
distributionBoxCountNumber of distribution boxes included
Individual distribution box energy usage details
CreateSandboxDeviceDto
typeType of sandbox device
nameUser-defined name for the device
digitalTwinXX position on the digital twin canvas
rowLineRow line position (1-6)
ratedCurrentRated current in amperes
ratedVoltageRated voltage in volts
mcbTypeMCB type (for DUMB_MCB devices)
mcbPolesMCB poles configuration (for DUMB_MCB devices)
leakageCurrentLeakage current in milliamperes (for RCCB devices)
colorCustom color for visual identification (hex code)
notesAdditional notes about the device
UpdateSandboxDeviceDto
typeType of sandbox device
nameUser-defined name for the device
digitalTwinXX position on the digital twin canvas
rowLineRow line position (1-6)
ratedCurrentRated current in amperes
ratedVoltageRated voltage in volts
mcbTypeMCB type (for DUMB_MCB devices)
mcbPolesMCB poles configuration (for DUMB_MCB devices)
leakageCurrentLeakage current in milliamperes (for RCCB devices)
colorCustom color for visual identification (hex code)
notesAdditional notes about the device
CreateSandboxWireDto
Source connection point
Target connection point
colorWire color (hex code)
thicknessWire thickness in pixels
labelOptional label for the wire
UpdateSandboxWireDto
Source connection point
Target connection point
colorWire color (hex code)
thicknessWire thickness in pixels
labelOptional label for the wire
UpdateSandboxElementsDto
Array of all sandbox devices (replaces existing)
Array of all sandbox wires (replaces existing)
CreateSurgeOverrideDto
nameDisplay name
applicableEntityTypesEntity types this override can be applied to
thresholdKwhAbsolute daily threshold (kWh) granted while the override is active
pricePrice
descriptionCustomer-facing description
isActiveWhether the override is sellable
SurgeOverrideResponseDto
_idnameapplicableEntityTypesthresholdKwhpriceisActivecreatedAtupdatedAtdescriptionUpdateSurgeOverrideDto
nameDisplay name
descriptionCustomer-facing description
applicableEntityTypesEntity types this override can be applied to
thresholdKwhAbsolute daily threshold (kWh) granted while the override is active
pricePrice
isActiveWhether the override is sellable
PurchaseSurgeOverrideDto
surgeOverrideIdSurgeOverride catalog id
entityTypeEntity type the override should apply to
entityIdEntity id (room/tenant/zone)
paymentIdOptional Payment record id to link to this purchase (refunds handled via payment module)
SurgeOverridePurchaseResponseDto
_idsurgeOverridesystementityTypeType of entity to start usage surge analysis for
entityIdthresholdKwhactiveFromstatuspurchasedBycreatedAtupdatedAtpaymentpurchasedByNameDisplay name of the admin who purchased
entityNameDisplay name of the entity (room/tenant/zone)
cancelledAtcancelledBycancelReasonCancelSurgeOverrideDto
reasonReason supplied at cancellation time
SurgeOverridePurchaseListResponseDto
totalpagesizeSurgeOverridePurchaseActiveMapResponseDto
Map of entityId → active SurgeOverridePurchase. Only entities with an active override are included.
totalOnboardingPhase
statusstartDategcalEventIdactivationScheduledTaskNameAWS Scheduler task name for auto-activating this phase on startDate
endDateScheduleGroup
plugIdsPlug IDs assigned to this schedule group
StaticSchedulePhase
statusincludePublicHolidaysstartDategcalEventIdactivationScheduledTaskNameAWS Scheduler task name for auto-activating this phase on startDate
endDateFallback schedule applied to unlocked plugs not in any scheduleGroup
Per-group device schedules. Devices in a group get the group schedule; remaining unlocked devices get defaultStaticSchedule.
ascentAIScheduledTaskNameAscentAIPhase
statusautoSuggestionsEnabledstartDategcalEventIdactivationScheduledTaskNameAWS Scheduler task name for auto-activating this phase on startDate
endDatesuggestionsGeneratedAtsuggestionsActivatedAtOnboardingIterationDto
iterationNumberstatusnamestartedAtcompletedAtascentAiRecommendationsSystemOnboardingResponseDto
_idsystemcustomerEmailsactiveIterationIndexcreatedAtupdatedAtDefaultStaticScheduleDto
Monday schedule entries
Tuesday schedule entries
Wednesday schedule entries
Thursday schedule entries
Friday schedule entries
Saturday schedule entries
Sunday schedule entries
ScheduleGroupDto
plugIdsUpdateOnboardingPhaseDto
startDateISO 8601 date string
endDateISO 8601 date string
includePublicHolidaysDefault schedule auto-applied to unlocked plugs on Phase 2 activation
Per-group device schedules for Phase 2. Devices in a group get the group schedule; remaining unlocked devices get defaultStaticSchedule.
gcalEventTitlegcalEventTimeISO 8601 date string for the GCal event time (independent of phase startDate/endDate)
skipGcalSet to true to skip GCal invite creation even if this phase normally requires one
EcoguardRecommendationDto
suitableWhether this device category benefits from EcoGuard
reasonHuman-readable explanation shown to users
suggestedIdleThresholdSuggested idle power threshold in watts (with 1.1x buffer). Only present if suitable is true.
suggestedTimerSuggested auto-shutoff timer in minutes. Only present if suitable is true.
RecommendationTier
Recommendation tier used: "rule-based" (fast, ~5ms), "clustering" (medium, ~10ms), or "llm" (slow, ~60s). Indicates the analysis method used.
PlugRecommendationDto
deviceIdThe unique identifier of the device (Plug or MCB)
macIdThe MAC address of the device
deviceNameThe name of the device for easy identification
plugCategoryThe category of the plug device (only for Plugs, empty for MCBs)
Array of AI-recommended schedule entries for Monday based on usage patterns
Array of AI-recommended schedule entries for Tuesday based on usage patterns
Array of AI-recommended schedule entries for Wednesday based on usage patterns
Array of AI-recommended schedule entries for Thursday based on usage patterns
Array of AI-recommended schedule entries for Friday based on usage patterns
Array of AI-recommended schedule entries for Saturday based on usage patterns
Array of AI-recommended schedule entries for Sunday based on usage patterns
summaryAI-generated summary explaining the recommended schedule and detected behavioral patterns
predictedIdleEnergyUsagePredicted average power consumption during idle periods in watts based on historical data
totalNumberOfIdleHoursTotal count of hours identified as idle or low-usage periods across the analysis timeframe
averageUsagePerDayAverage daily power consumption in watts calculated over the analyzed time period
flagsArray of flags highlighting anomalies, data gaps, or notable behavioral patterns detected by AI
EcoGuard suitability and suggested configuration for this device
deviceNumberThe device number assigned to the device
tierRecommendation tier used: "rule-based" (fast, ~5ms), "clustering" (medium, ~10ms), or "llm" (slow, ~60s). Indicates the analysis method used.
confidenceScoreConfidence score (0-1) indicating pattern clarity. Higher score = simpler, more predictable pattern.
BulkPlugRecommendationsResponseDto
Map of plug IDs to their AI-generated ON/OFF schedule recommendations. Each key is a plug ID, and the value contains the complete recommendation data including weekday schedules, summary, and metrics.
bulkSummaryAI-generated overall summary analyzing all plugs together. Identifies common patterns (e.g., "Working hours appear to be 9 AM - 6 PM across all devices"), optimization opportunities (e.g., "Coffee machine only used on Tuesdays and Thursdays"), cross-device insights, and collective energy-saving recommendations.
IterationSummaryDto
iterationNumberindexZero-based index in the iterations array
statusisActivenamestartedAtcompletedAtReportType
Scope level for the requested AI-generated energy report (ROOM, SYSTEM, TENANT, or USER)
EnergyReportTypeDto
reportTypeScope level for the requested AI-generated energy report (ROOM, SYSTEM, TENANT, or USER)
EnergyUsageRecommendationReportDto
Array of AI-recommended schedule entries for Monday based on usage patterns
Array of AI-recommended schedule entries for Tuesday based on usage patterns
Array of AI-recommended schedule entries for Wednesday based on usage patterns
Array of AI-recommended schedule entries for Thursday based on usage patterns
Array of AI-recommended schedule entries for Friday based on usage patterns
Array of AI-recommended schedule entries for Saturday based on usage patterns
Array of AI-recommended schedule entries for Sunday based on usage patterns
summaryAI-generated summary explaining the recommended schedule and detected behavioral patterns
predictedIdleEnergyUsagePredicted average power consumption during idle periods in watts based on historical data
totalNumberOfIdleHoursTotal count of hours identified as idle or low-usage periods across the analysis timeframe
averageUsagePerDayAverage daily power consumption in watts calculated over the analyzed time period
flagsArray of flags highlighting anomalies, data gaps, or notable behavioral patterns detected by AI
EcoGuard suitability and suggested configuration for this device
BulkPlugRecommendationsRequestDto
plugIdsArray of plug IDs to generate AI recommendations for. Minimum 1, maximum 200 plugs per request. For larger batches, split into multiple requests.
EnergyReportDto
reportTypeScope level of this AI-generated energy report (ROOM, SYSTEM, TENANT, or USER)
executiveSummaryHigh-level executive summary highlighting the most important insights and findings
consumptionAnalysisDetailed analysis of overall energy consumption patterns including totals and peak periods
scheduleRecommendationsArray of schedule-based recommendations comparing current plug schedules with actual usage patterns to optimize energy consumption. Each recommendation includes the plug name, current schedule, recommended changes, and estimated savings.
createdAtTimestamp when this AI report was generated by the system
energyUsageBreakdownCategorical breakdown of energy usage by device type or plug groupings showing percentage contributions
highLoadDevicesArray of plug devices or equipment with the highest power consumption for targeted optimization
usageTrendsTemporal trends and recurring patterns identified across different days and hours from historical data
scheduleComplianceAnalysis of how well actual plug on/off behavior aligns with configured schedules
anomalyInsightsArray of detected anomalies, unusual behaviors, or operational assumptions that may require attention
estimatedCarbonEmissionsCalculated Scope 2 carbon emissions estimate based on energy consumption and regional emission factors
improvementsComparative analysis showing improvement or decline in energy efficiency over time
DeviceStatusBreakdownDto
totalTotal number of devices
activeNumber of active devices
inactiveNumber of inactive devices
offlineNumber of offline devices
spareNumber of spare devices (excluded from active/inactive/offline counts)
CostMetricDto
valueCurrent cost value (SGD)
trendTrend indicator (positive = increase, negative = decrease)
trendDirectionTrend direction
CarbonMetricDto
valueCarbon emissions saved (kg CO₂)
indicatorIndicator status
PlatformOverviewDto
totalSystemsTotal number of systems registered
totalTenantsTotal number of active tenants
Total number of plugs with status breakdown
totalZonesTotal number of active zones
totalRoomsTotal number of active rooms
totalEnergyMonitoredTotal energy monitored across all systems (kWh)
Estimated total energy cost (SGD)
Total carbon emissions avoided (kg CO₂)
EnergyDataPointDto
labelDate/time label for the data point
valueEnergy value (kWh)
timestampTimestamp of the data point
EnergyUsageDto
periodTime period used for aggregation
totalEnergyTotal energy consumed in the period (kWh)
Energy usage data points
averageEnergyAverage energy per time unit (kWh)
SystemEnergyDto
systemIdSystem ID
systemNameSystem name
energyConsumedTotal energy consumed (kWh)
plugCountNumber of plugs in the system
percentageOfTotalPercentage of total energy
rankRank position
TopSystemsDto
List of top systems by energy consumption
totalEnergyTotal energy consumed by all systems (kWh)
HourlyUsageDto
hourHour of day (0-23)
energyEnergy consumed during this hour (kWh)
percentageOfDayPercentage of daily total
isPeakIs this a peak hour?
PeakHoursDto
Peak usage hours data
overallPeakHourOverall peak hour
peakHourEnergyPeak hour energy value (kWh)
offPeakAverageEnergyOff-peak average energy (kWh)
GrowthDataPointDto
monthMonth label
countNumber of new active plugs (>1kWh)
cumulativeCumulative total
dateDate of the data point
GrowthTrendDto
Monthly growth data points
totalGrowthTotal growth count
averageMonthlyGrowthAverage monthly growth
growthRateGrowth rate percentage
ProjectionDataPointDto
monthMonth label
projectedCountProjected device count
lowerBoundLower bound estimate
upperBoundUpper bound estimate
dateDate of projection
RegressionParametersDto
slopeSlope coefficient
interceptY-intercept
rSquaredR-squared value (goodness of fit)
GrowthProjectionDto
Projected growth for next 3 months
Linear regression parameters
expectedTotalExpected total devices after 3 months
confidenceConfidence level (0-1)
RoleCountDto
roleRole name
countNumber of admins with this role
percentagePercentage of total
RoleDistributionDto
Role distribution data
totalAdminsTotal number of admins
CategoryCountDto
categoryPlug category
countNumber of plugs in this category
percentagePercentage of total plugs
PlugCategoryDistributionDto
Category distribution data
totalPlugsTotal number of plugs
CategoryEnergyDto
categoryPlug category
energyTotal energy consumed by this category (kWh)
percentagePercentage of total energy
plugCountNumber of plugs in category
averageEnergyPerPlugAverage energy per plug (kWh)
PlugCategoryEnergyDistributionDto
Category energy distribution data
totalEnergyTotal energy consumed (kWh)
SystemPlugCountDto
systemIdSystem ID
systemNameSystem name
plugCountNumber of plugs in this system
percentagePercentage of total plugs
PlugSystemDistributionDto
System distribution data
totalPlugsTotal number of plugs
totalSystemsTotal number of systems
CategoryAnalyticsResponseDto
categoryThe plug category being analyzed
numberOfDevicesNumber of devices in this category
Daily energy usage breakdown
totalKwhTotal kWh consumed in the period
averageKwhPerDayAverage kWh per day across all devices in category
averageKwhPerDayPerDeviceAverage kWh per day per device
predictedKwhPerYearPredicted kWh consumption per year (based on average)
totalCostSgdTotal cost in SGD for the period (at $0.3065/kWh)
predictedAnnualCostSgdPredicted annual cost in SGD (at $0.3065/kWh)
predictedAnnualCostPerDeviceSgdPredicted annual cost in SGD per device (at $0.3065/kWh)
EnergyBreakdownRequestDto
systemIdSystem ID
startDateStart date for energy data (ISO 8601 format)
endDateEnd date for energy data (ISO 8601 format)
granularityTime granularity for data aggregation
compareStartDateStart date for comparison period (optional)
compareEndDateEnd date for comparison period (optional)
EnergyBreakdownPointDto
timestampTimestamp of this data point
energyEnergy consumption in kWh
costCost in SGD (calculated using tariff rate active at this timestamp)
tariffRateTariff rate used for this calculation (cents per kWh)
EnergyPeriodDto
totalEnergyTotal energy consumption for period (kWh)
totalCostTotal cost for period (SGD)
Breakdown by time bucket
EnergyComparisonDto
totalEnergyTotal energy consumption for period (kWh)
totalCostTotal cost for period (SGD)
Breakdown by time bucket
energyDeltaEnergy delta compared to main period (kWh)
costDeltaCost delta compared to main period (SGD)
EnergyBreakdownResponseDto
Main period energy and cost data
calculatedAtTimestamp when these costs were calculated
Comparison period data (if comparison dates provided)
ToolDefinitionDto
nameTool name (unique identifier)
descriptionTool description for LLM
JSON Schema for tool input parameters
AgentChatRequestDto
Conversation history including user and assistant messages
systemIdSystem ID the chat operates on. Required — used to enforce the AI_FEATURE entitlement and to scope context-aware tool calls.
Available tools for the LLM to call
sessionIdSession ID for chat history persistence
RangerChatHistorySummaryDto
sessionIdUUID identifying the chat session
messageCountTotal number of messages in the session
previewFirst user message truncated to 120 chars
createdAtTimestamp when the session was first created
updatedAtTimestamp of the last message saved to this session
adminEmailEmail of the account that initiated the session
RangerChatHistoryPaginatedDto
totalTotal count of items matching filters
pageCurrent page number
sizeItems per page
totalPagesTotal number of pages
Chat session summaries for the current page
RangerChatHistoryDetailDto
sessionIdUUID identifying the chat session
messageCountTotal number of messages in the session
previewFirst user message truncated to 120 chars
createdAtTimestamp when the session was first created
updatedAtTimestamp of the last message saved to this session
adminEmailEmail of the account that initiated the session
CalendarPreviewRoomDto
roomIdRoom ID
roomNameRoom name as stored in the system
deviceCountNumber of devices in this room that would receive schedules
RecurrenceType
Recurrence pattern type. Only present when isRecurring is true.
CalendarPreviewEventDto
uidExternal event ID — Google event ID, iCal UID, or Microsoft event ID
eventTitleOriginal event title from the calendar
startTimeEvent start time
endTimeEvent end time
matchedTrue if at least one room matched the event title
includeWhether to include this event in the confirm step. Defaults to true when matched, false when unmatched.
Rooms matched from the event title. Empty when matched=false.
isRecurringTrue if the event is a recurring event (daily or weekly pattern)
recurrenceTypeRecurrence pattern type. Only present when isRecurring is true.
recurrenceDaysDays of week the event recurs on (0=Sun … 6=Sat). Only present for weekly recurrence.
CalendarPreviewResponseDto
List of calendar events parsed from the calendar source, each with room-match results.
totalMatchedNumber of events that matched at least one room
totalUnmatchedNumber of events that matched no room
ScheduleType
Schedule type: single one-time schedule or recurring weekly schedule
ConfirmCalendarEventDto
uidExternal event ID (from preview response)
eventTitleEvent title (used for mapping storage)
startTimeEvent start time (may be user-adjusted)
endTimeEvent end time (may be user-adjusted)
includeSet to false to skip this event — no schedules will be created for it
roomIdsRoom IDs to schedule (may be user-adjusted from preview)
scheduleTypeSchedule type: single one-time schedule or recurring weekly schedule
daysOfWeekDays of week for recurring schedule (0=Sun … 6=Sat). Required when scheduleType is RECURRING.
onTimeON time for recurring schedule in HH:MM format. Required when scheduleType is RECURRING.
offTimeOFF time for recurring schedule in HH:MM format. Required when scheduleType is RECURRING.
ConfirmCalendarUploadDto
List of calendar events to confirm. Must contain at least one entry.
gracePeriodMinutesGrace period in minutes. Devices turn ON this many minutes before the event starts and turn OFF this many minutes after it ends. Only applies to one-time (SINGLE) schedules. Defaults to 0.
CalendarImportResultDto
importedNumber of events for which schedules were successfully created
skippedNumber of events skipped (include=false, past, or no devices in room)
PreviewIcsUrlDto
icsUrlPublicly accessible ICS calendar feed URL. Must be a valid HTTPS URL pointing to a .ics file. Private/internal network addresses are not permitted.
ConfirmIcsUrlDto
icsUrlPublicly accessible ICS calendar feed URL. Saved for ongoing background polling. Must be HTTPS; private/internal addresses are not permitted.
List of calendar events to confirm. Must contain at least one entry.
gracePeriodMinutesGrace period in minutes. Devices turn ON this many minutes before the event starts and turn OFF this many minutes after it ends. Saved for ongoing syncs. Defaults to 0.
SubscribeIcsUrlDto
icsUrlPublicly accessible ICS calendar feed URL. Must be a valid HTTPS URL pointing to a .ics file. Private/internal network addresses are not permitted.
gracePeriodMinutesGrace period in minutes. Devices turn ON this many minutes before the event starts and turn OFF this many minutes after it ends. Defaults to 0.
CalendarType
The calendar provider type for this connection (e.g., GOOGLE, MICROSOFT, ICS)
ConnectionScope
Scope of this connection — whether it applies system-wide or per-user
CalendarConnectionResponseDto
idUnique identifier of the calendar connection
systemIdSystem this calendar connection belongs to
calendarTypeThe calendar provider type for this connection (e.g., GOOGLE, MICROSOFT, ICS)
scopeScope of this connection — whether it applies system-wide or per-user
isActiveWhether this calendar connection is currently active
createdAtTimestamp when this calendar connection was created
userIdAdmin user ID that owns this connection; null indicates a system-wide connection
googleCalendarIdGoogle Calendar ID used for this connection (e.g., "primary")
icsUrlICS feed URL for ICS-type calendar connections
lastSyncedAtTimestamp of the last successful sync for this connection
EntityTypeResponseDto
_idEntity type ID
nameUnique type key
displayNameHuman-readable display name
systemSystem ID this type belongs to
createdAtCreation timestamp
createdByAdmin who created this type
EntityTypeListResponseDto
totalCreateEntityTypeDto
nameUnique type key — must be UPPER_SNAKE_CASE, unique within the system
displayNameHuman-readable display name
Generate2dFloorPlanResponseDto
floorPlanIdFloor plan document ID (upserted)
plan2d2D geometry preview — not yet saved
Room2DDto
idnametypepolygonCCW polygon vertices [[x,z],...]
Wall2DDto
start[x, z] coordinate
end[x, z] coordinate
kindStair2DDto
idbottom[x, z] coordinate
top[x, z] coordinate
widthFloorPlanStyle
Visual style/theme for the 3D floor plan
Save2dFloorPlanDto
widthheightstyleVisual style/theme for the 3D floor plan
FloorPlan
_idzoneZone this floor plan belongs to
systemSystem this floor plan belongs to
nameDisplay name for this floor plan
schemaVersionFloor plan JSON schema version
plan2dStatusstyleVisual style/theme for the 3D floor plan
plan2d2D geometry before 3D conversion
roomMappingsMappings from AI room IDs to real Room documents
CreateIssueDto
titleIssue title
bodyIssue body
labelsLabels to add
assigneesAssignees to add
imageUrlPublic URL of an image to embed
imageImage file to upload and embed
IssueDto
idnumbertitlebodystateurlcreatedAtauthorLoginauthorAvatarUrlauthorUrllabelsassigneesReleaseNoteDto
tagNameGit tag version of the release
titleTitle of the release (usually same as tag or human readable)
bodyFull markdown content of the release note
publishedAtDate when the release was published
urlURL linking to the release on GitHub
developerNameName of the developer who created the release
developerUrlURL of the developer's GitHub profile
developerAvatarUrlAvatar URL of the developer who created the release
PaymentMethod
Method used for payment processing. Determines the payment gateway and processing flow.
PaymentStatus
Current status of the payment transaction. Tracks the payment lifecycle from pending to completion or failure.
PaymentValidityPeriod
Duration of the subscription period covered by this payment. Determines how long the system will have access to paid features.
CreatePaymentDto
amountPayment amount in the base currency. Represents the total cost for the subscription period.
paymentMethodMethod used for payment processing. Determines the payment gateway and processing flow.
statusCurrent status of the payment transaction. Tracks the payment lifecycle from pending to completion or failure.
externalPaymentIdExternal reference ID from the payment gateway. Used for tracking and reconciliation with third-party payment providers.
adminIdUnique identifier of the admin who initiated the payment. Links the payment to the admin account.
systemIdUnique identifier of the system for which the payment is made. Links the payment to the system subscription.
paymentDateDate and time when the payment was processed. Used for billing records and subscription start date calculation.
validityPeriodDuration of the subscription period covered by this payment. Determines how long the system will have access to paid features.
subscriptionTierIdUnique identifier of the subscription tier being purchased. Determines the feature set and limitations for the payment period.
messageAdditional notes or transaction details. Useful for documenting special circumstances or payment gateway responses.
Payment
_idThe unique identifier of the subscription tier
amountPayment amount
paymentMethodPayment method
paymentDatePayment Date
validityPeriodPayment validity period
statusPayment status
externalPaymentIdExternal payment ID
adminAdmin ID reference
systemSystem ID reference
The subscription tier associated with the payment
createdAtThe date when the payment was created
updatedAtThe date when the payment was last updated
isDeletedIndicates whether the payment is deleted
messageOptional message or reason for the payment status update
GetPaymentsDto
Array of payment records
totalTotal number of payments matching the filter
pageCurrent page number
sizeNumber of items per page
UpdatePaymentStatusDto
statusNew payment status to update. Used to transition the payment through its lifecycle (pending, completed, failed, refunded).
messageAdditional notes explaining the status update. Useful for documenting reasons for failures, refunds, or special circumstances.
CreateFeatureDto
nameDisplay name of the feature. Used for identification in the user interface.
featureTypeFeature type identifier from the predefined feature enum. Determines the functional category of the feature.
descriptionDetailed description of what the feature does and its purpose within the system.
UpdateFeatureDto
nameDisplay name of the feature. Used for identification in the user interface.
featureTypeFeature type identifier from the predefined feature enum. Determines the functional category of the feature.
descriptionDetailed description of what the feature does and its purpose within the system.
CreateSubscriptionTierDto
nameName of the subscription tier. Used for identification and display to customers.
descriptionDetailed description of what the subscription tier includes. Helps customers understand the value proposition.
monthlyPriceMonthly subscription price in the base currency. Billed on a monthly basis.
quarterlyPriceQuarterly subscription price in the base currency. Typically offered at a discount compared to monthly pricing.
yearlyPriceAnnual subscription price in the base currency. Usually offers the best value with maximum discount.
featuresArray of feature identifiers included in this subscription tier. Determines which features are accessible to subscribers.
UpdateSubscriptionTierDto
nameName of the subscription tier. Used for identification and display to customers.
descriptionDetailed description of what the subscription tier includes. Helps customers understand the value proposition.
monthlyPriceMonthly subscription price in the base currency. Billed on a monthly basis.
quarterlyPriceQuarterly subscription price in the base currency. Typically offered at a discount compared to monthly pricing.
yearlyPriceAnnual subscription price in the base currency. Usually offers the best value with maximum discount.
featuresArray of feature identifiers included in this subscription tier. Determines which features are accessible to subscribers.
TelegramStatusResponseDto
connectedWhether this system has a Telegram group linked
groupNameName of the linked Telegram group
TelegramPairingCodeResponseDto
codeShort pairing code the admin sends in their Telegram group
expiresInSeconds until the code expires
RegisterWebhookResponseDto
okWhether the request was successful
resultTelegram API result
descriptionDescription from Telegram
ForecastPointDto
hourISO 8601 UTC timestamp
kWhPredicted energy usage (kWh)
lowerLower confidence bound (kWh)
upperUpper confidence bound (kWh)
ForecastReason
Set only when predictions is empty. insufficient_data: device has < 30 days of usage history (expected for new devices). no_forecast_available: device qualifies but no fresh forecast doc exists (precompute failed or has not yet run for this device).
DeviceForecastResponseDto
deviceIdUnique identifier for the device
Forecast data points for the device
modelVersionModel version
granularityGranularity of returned data
hasSufficientDataWhether this device has sufficient data for forecasting
reasonSet only when predictions is empty. insufficient_data: device has < 30 days of usage history (expected for new devices). no_forecast_available: device qualifies but no fresh forecast doc exists (precompute failed or has not yet run for this device).
daysUntilEligibleOnly present when reason = insufficient_data. Number of additional days of usage history needed before the device becomes eligible.
AggregatedForecastResponseDto
entityIdEntity ID (zone, tenant, or system)
entityTypeEntity type (zone, tenant, or system)
Aggregated forecast (sum of all device forecasts under this entity)
totalDevicesTotal devices included in aggregation
devicesWithSufficientDataDevices that contributed predictions to the aggregated forecast
devicesWithInsufficientDataDevices with < 30 days of usage history
devicesWithoutForecastDevices that qualify (>= 30 days) but have no fresh forecast doc — precompute has not yet reached them, or failed for those devices
granularityGranularity of returned data
TrainingStatusDto
statusOutcome of the training run
completedAtISO 8601 timestamp of when training completed
errorError message if training failed
PrecomputeStatusDto
completedAtISO 8601 timestamp of when precompute completed
okForecast documents successfully written
failedDevices that failed during precompute
eligibleDevicesTotal eligible devices processed
skippedDevicesDevices skipped due to insufficient data
CreateProductDto
nameName of the product
pricePrice of the product
descriptionDescription of the product
UpdateProductDto
nameName of the product
descriptionDescription of the product
pricePrice of the product
ReportingApp
Frontend app the error was reported from (FRONTEND errors)
HttpRequestMethod
HTTP method of the failed request
CreateErrorLogDto
sourceOrigin of the error
httpMethodHTTP method of the failed request
requestUrlURL of the HTTP request that failed
errorMessageDescription of the error
statusCodeHTTP status code received
reportedAppFrontend app the error was reported from (FRONTEND errors)
pageUrlFrontend page URL where the error occurred (FRONTEND errors)
systemSystem the account was operating in when the error occurred
stackTraceStack trace string (BACKEND errors)
GetErrorLogDto
_idPrimary ID of the error log
sourceOrigin of the error
httpMethodHTTP method of the failed request
requestUrlURL of the HTTP request that failed
errorMessageDescription of the error
statusCodeHTTP status code received
solvedWhether this error has been resolved
createdAtTimestamp when the log was created
updatedAtTimestamp when the log was last updated
reportedAppFrontend app the error was reported from (FRONTEND only)
pageUrlFrontend page URL where the error occurred (FRONTEND only)
System the account was operating in when the error occurred
Admin (Account) that encountered the error — present for FRONTEND errors, absent for BACKEND errors
stackTraceStack trace string (BACKEND errors only)
resolvedAtTimestamp when the error was marked as resolved
Admin (SUPERADMIN) who resolved the error
GetErrorLogsResponseDto
totalTotal count of items matching filters
pageCurrent page number
sizeItems per page
totalPagesTotal number of pages
Array of error log entries
GenerateNfcTokenResponseDto
tokenEncrypted NFC token
publicUrlPublic URL for NFC page
nfcIdNFC document ID
targetTypeTarget type
targetIdTarget ID (room or device)
targetNameTarget name
createdAtCreated at timestamp
NfcTokenInfoDto
nfcIdNFC document ID
targetTypeTarget type
targetIdTarget ID
targetNameTarget name
usageCountToken usage count
isActiveWhether token is active
tokenEncrypted token string
createdAtCreated at timestamp
expiresAtOptional expiration date
ListNfcTokensResponseDto
List of NFC tokens
totalTotal number of tokens
NfcToggleDto
onStatusTarget device status
deviceIdOptional device ID to toggle specific device in room (room tokens only)
NfcToggleResponseDto
successfulSuccessfully toggled device IDs
failedFailed device IDs
totalTotal devices attempted
actionAction performed
targetNameTarget name
NfcAnalyticsQueryDto
startDateStart date for analytics query
endDateEnd date for analytics query
NfcTargetInfoDto
idTarget ID
nameTarget name
typeType of NFC target (DEVICE, ROOM, USER)
onStatusDevice ON/OFF status (only for DEVICE targets)
NfcControllableFeaturesDto
temperatureWhether temperature control is supported
modeWhether operating mode control is supported
fanWhether fan speed control is supported
swingWhether swing control is supported
NfcGangSwitchStateDto
gangNumberGang number (1-4)
onStatusON/OFF status of this gang
labelOptional label for the gang
NfcDeviceInfoDto
idDevice ID
nameDevice name
deviceTypeType of device (PLUG, MCB, etc.)
onStatusDevice ON/OFF status
temperatureTemperature setting in Celsius (AIRCON_CONTROL only)
modeAircon operating mode (AIRCON_CONTROL only)
fanFan speed setting (AIRCON_CONTROL only)
swingSwing setting (AIRCON_CONTROL only)
brandAircon brand (AIRCON_CONTROL only)
Indicates which control features are physically supported by this aircon (AIRCON_CONTROL only)
numberOfGangsNumber of gangs/buttons on the switch (SMART_SWITCH only)
Individual gang switch states (SMART_SWITCH only)
switchTypeType of appliance the switch controls (SMART_SWITCH only)
totalEnergyUsageTotal energy usage in watt-hours (PLUG/MCB only)
DateRangeDto
startDateStart date of the queried range
endDateEnd date of the queried range
NfcAnalyticsResponseDto
Target information
Usage history data by day with cost breakdown
Date range queried
deviceTypeDevice type (for device-level tokens only)
Device details with current state (for device-level tokens)
Room details (for room-level tokens)
Device list (only for ROOM tokens, includes all toggleable devices in the room)
NfcAirconControlDto
deviceIdSpecific device ID to control (for room-level tokens)
powerPower ON/OFF control
temperatureTemperature setting in Celsius (16-30)
modeAircon operating mode
fanFan speed setting
swingSwing setting for aircon vents
NfcControlResponseDto
successWhether the control operation was successful
messageHuman-readable message describing the result
Updated device information after control operation
NfcSmartSwitchControlDto
deviceIdSpecific device ID to control (for room-level tokens)
powerPower ON/OFF control
gangNumberGang number to control (1-4). Omit to control all gangs.
onStatusON/OFF status for the targeted gang(s)
NfcControlDto
deviceIdSpecific device ID to control (for room-level tokens)
powerPower ON/OFF control
WaterMeterSize
Pipe diameter size (DN15, DN20, DN25, etc.)
WaterMeter
_idPrimary ID of the Device
deviceTypeType of device (discriminator field)
macIdMAC ID of the Device (from IoT device)
deviceNameName of the Device
deviceNumberUnique device number for identification
onStatusStatus of the Device (ON / OFF / INACTIVE / ERROR)
locationPhysical location or address where the device is installed
remarksRemarks for the Device
batchNumberManufacturing batch number for tracking production groups
chipModelHardware chip model identifier used in the device
versionNumberFirmware version number currently running on the device
ssidNetwork SSID (Wi-Fi name) that the device is connected to
tenantTenant ID reference
Tagged Zone
roomRoom ID reference
systemSystem ID reference
createdAtDate Time of the Creation
updatedAtDate Time of the Update
lastSeenLast time the device was seen/reported
isLockedWhether the device is locked. When locked, the device on/off status cannot be toggled.
totalEnergyUsageTotal cumulative energy usage in kWh
totalEnergySavedTotal energy saved through optimization in kWh
autoUpdateAttemptsNumber of auto-update OTA attempts sent to this device
autoUpdateBlacklistedWhether device is blacklisted from auto-updates (max retries exceeded)
manualUpdateBlacklistWhether device is manually blacklisted from auto-updates by admin
inactivityNotificationEnabledWhether inactivity notifications are enabled for this device
meterSizePipe diameter size (DN15, DN20, DN25, etc.)
realTimeFlowRateCurrent flow rate in liters per minute
realTimePressureWater pressure in bar
waterConsumptionTotal water consumption in liters (incremented hourly)
isLeakDetectedWhether a leak is currently detected
leakThresholdFlowRateCurrent leak detection threshold in liters per minute
targetStatePending desired on/off state commanded by backend (cloud / scheduled). Set when a toggle is issued; cleared when the device reports a matching state or a physical (MANUAL) press overrides it. Always ON or OFF when present.
targetStateSetAtTimestamp when targetState was last written. Used to expire stale SCHEDULED intents (24hr TTL). CLOUD intents do not expire.
targetSourceOrigin of the pending targetState. Drives TTL behavior on reconcile. Only CLOUD / SCHEDULED are ever written here.
deviceModelModel name or identifier of the device
deviceBrandBrand or manufacturer of the device
isSpareWhether the device is a spare/inventory device. Spare devices can be filtered out of user-facing dashboards.
Schedule configuration for the device. Contains recurring weekly schedules and one-time scheduled tasks.
realTimePowerReal-time power consumption in watts
realTimeCurrentReal-time current in amperes
lastAutoUpdateAttemptTimestamp of last auto-update OTA attempt
inactivityNotificationSentAtTimestamp when the last inactivity notification was sent for this device
meterModelMeter model/manufacturer
realTimeTemperatureWater temperature in Celsius (optional)
flowRateMaxMax Threshold flow rate reading in L/min
flowRateMinMin Threshold flow rate reading in L/min
pressureMaxMax Threshold pressure reading in bar
pressureMinMin Threshold pressure reading in bar
temperatureMinMin Threshold temperature reading in degrees Celsius
temperatureMaxMax Threshold temperature reading in degrees Celsius
lastLeakNotificationAtTimestamp of last leak notification received
notificationThresholdHourHourly notification threshold — minimum hours between repeat notifications of the same type
FilteredWaterMeterDto
_idUnique database identifier of the device document in the system
macIdUnique identifier assigned to the device by the IoT hardware (MAC ID)
deviceNameFriendly name for the device for easy identification
onStatusCurrent operational status of the device (ON, OFF, INACTIVE, or ERROR)
totalEnergyUsageCumulative total energy consumption in kilowatt-hours (kWh) since device installation
tenantIdUnique identifier of the tenant organization that owns this device
tenantNameName of the tenant organization that owns this device
zoneIdUnique identifier of the zone that this device is assigned to
zoneNameName of the zone that this device is assigned to
roomIdUnique identifier of the room where this device is physically located
roomNameName of the room where this device is physically located
dbIdUnique identifier of the distribution box that this device is connected to (for MCBs)
dbNameName of the distribution box that this device is connected to (for MCBs)
systemIdUnique identifier of the system that this device belongs to
systemNameName of the system that this device belongs to
realTimePowerReal-time power consumption in watts (W) measured by the device
realTimeCurrentReal-time current draw in amperes (A) measured by the device
ssidNetwork SSID (Wi-Fi name) that the device is currently connected to
meterSizePipe diameter size (DN15, DN20, DN25, etc.)
realTimeFlowRateCurrent flow rate in liters per minute
realTimePressureWater pressure in bar
waterConsumptionTotal water consumption in liters (incremented hourly)
isLeakDetectedWhether a leak is currently detected
leakThresholdFlowRateCurrent leak detection threshold in liters per minute
targetStatePending desired on/off state commanded by backend. Present when a toggle was issued but the device has not yet acknowledged (e.g. issued while INACTIVE). Frontend can derive a "Pending" indicator when this differs from onStatus.
targetStateSetAtTimestamp when the pending targetState was last written.
deviceNumberAuto-incremented sequential number for tracking device registration order
batchNumberManufacturing batch number for tracking production groups and quality control
chipModelHardware chip model identifier used in the device (e.g., ESP32C2, ESP8266)
versionNumberFirmware version number currently running on the device
Weekly and one-time schedule configuration for automated device control
lastSeenTimestamp when the device last communicated with the system
isLockedLock status indicating if the device is locked
inactivityNotificationEnabledWhether inactivity notifications are enabled for this device
meterModelMeter model/manufacturer
realTimeTemperatureWater temperature in Celsius (optional)
lastLeakNotificationAtTimestamp of last leak notification received
flowRateMaxMax Threshold flow rate reading in L/min
flowRateMinMin Threshold flow rate reading in L/min
pressureMaxMax Threshold pressure reading in bar
pressureMinMin Threshold pressure reading in bar
temperatureMinMin Threshold temperature reading in degrees Celsius
temperatureMaxMax Threshold temperature reading in degrees Celsius
GetWaterMetersResponseDto
totalTotal count of items matching filters
pageCurrent page number
sizeItems per page
totalPagesTotal number of pages
List of water meters with organizational hierarchy details
UpdateWaterMeterDto
deviceNameName of the device
locationPhysical location of the device
remarksAdditional remarks or notes about the device
tenantIdTenant ID to associate the device with
zoneIdZone ID to associate the device with
roomIdRoom ID to associate the device with
isLockedWhether the device is locked. When locked, the device cannot be toggled ON/OFF.
isSpareWhether the device is a spare/inventory device. Spare devices can be filtered out of user-facing dashboards.
meterSizeSize/diameter of the water meter
meterModelModel name/number of the water meter
UpdateWaterMeterThresholdDto
flowRateMaxMax Threshold flow rate reading in L/min
flowRateMinMin Threshold flow rate reading in L/min
pressureMaxMax Threshold pressure reading in bar
pressureMinMin Threshold pressure reading in bar
temperatureMaxMax Threshold temperature reading in degrees Celsius
temperatureMinMin Threshold temperature reading in degrees Celsius
notificationThresholdHourHourly notification threshold — minimum hours between repeat notifications of the same type
SetLeakThresholdDto
thresholdFlowRateThreshold flow rate in liters per minute
LeakHistoryResponseDto
totalTotal count of items matching filters
pageCurrent page number
sizeItems per page
totalPagesTotal number of pages
Array of leak detection notifications
AlertThresholdHistory
waterMeterWater meter ID
thresholdFlowRateThreshold flow rate in liters per minute
createdAtTimestamp when this record was created
updatedAtTimestamp when this record was last updated
ThresholdHistoryResponseDto
totalTotal count of items matching filters
pageCurrent page number
sizeItems per page
totalPagesTotal number of pages
Array of threshold configuration history records
WaterMeterLatestReadingDto
realTimeFlowRateCurrent flow rate in liters per minute
realTimePressureWater pressure in bar
lastSeenLast time the device sent data
realTimeTemperatureWater temperature in Celsius (optional)
BulkSetLeakThresholdDto
waterMeterIdsArray of water meter IDs to update
thresholdFlowRateLeak detection threshold in liters per minute
FailedWaterMeterDto
waterMeterIdWater meter ID that failed
errorError message explaining why it failed
BulkWaterMeterResponseDto
Array of successfully processed water meters
Array of failed water meters with error details
summarySummary of the bulk operation
BulkUpdateWaterMeterThresholdsDto
waterMeterIdsIDs of water meters to update
flowRateMaxMax Threshold flow rate in L/min
flowRateMinMin Threshold flow rate in L/min
pressureMaxMax Threshold pressure in bar
pressureMinMin Threshold pressure in bar
temperatureMaxMax Threshold temperature in °C
temperatureMinMin Threshold temperature in °C
notificationThresholdHourHourly notification threshold — minimum hours between repeat notifications
DashboardLayoutItemDto
iPanel ID reference
xX position in grid
yY position in grid
wWidth in grid units
hHeight in grid units
minWMinimum width
minHMinimum height
maxWMaximum width
maxHMaximum height
staticWhether the item is static/immovable
CreateDashboardDto
nameName of the dashboard
refreshIntervalAuto-refresh interval in seconds. Set to 0 to disable auto-refresh.
Layout configuration
panelIdsPanel IDs to include
globalTransformIdsGlobal Transform IDs
DashboardResponseDto
_idDashboard ID
systemSystem ID
nameName of the dashboard
Layout configuration
panelsPanel IDs or populated panels
createdAtupdatedAtrefreshIntervalAuto-refresh interval in seconds. 0 means disabled.
globalTransformsGlobal transform IDs or populated transforms
UpdateDashboardDto
nameName of the dashboard
refreshIntervalAuto-refresh interval in seconds. Set to 0 to disable auto-refresh.
Layout configuration
panelIdsPanel IDs to include
globalTransformIdsGlobal Transform IDs
AuthType
How the API key is sent. BEARER = Authorization: Bearer
CreateDataSourceDto
nameName of the data source
typeType of data source
urlBase URL
authTypeHow the API key is sent. BEARER = Authorization: Bearer
apiKeyHeaderNameCustom header name when authType is API_KEY_HEADER (defaults to x-api-key)
apiKeyAPI Key (will be encrypted before storage)
DataSourceResponseDto
_idData source ID
systemSystem ID
nameName of the data source
typeType of data source
urlBase URL
createdAtupdatedAtauthTypeHow the API key is sent
apiKeyHeaderNameCustom header name when authType is API_KEY_HEADER
connectionParamsConnection parameters
UpdateDataSourceDto
nameName of the data source
typeType of data source
urlBase URL
authTypeHow the API key is sent. BEARER = Authorization: Bearer
apiKeyHeaderNameCustom header name when authType is API_KEY_HEADER (defaults to x-api-key)
apiKeyAPI Key (will be encrypted before storage)
DebugSnapshotDto
transformTypeTransform type applied at this step
orderExecution order of this step
dataData state after this transform step
ProxyDebugResponseDto
dataThe final transformed data
Debug snapshots from the compute service for each transform step (only present when debug=true)
TransformType
Type of transformation. Raw JSON types: EXTRACT, SELECT, RENAME, FIELDS, FILTER, SORT, LIMIT, REDUCE. DataFrame types: DF_RENAME_FIELDS, DF_ORGANIZE_FIELDS, DF_SELECT_FIELDS, DF_FILTER_FIELDS_BY_NAME, DF_FILTER_BY_VALUE, DF_FILTER_BY_QUERY, DF_CALCULATE, DF_CUMULATIVE, DF_REDUCE, DF_GROUP_BY, DF_JOIN, DF_MERGE, DF_CONCATENATE, DF_TIME_SERIES_LONG_TO_WIDE, DF_TIME_SERIES_WIDE_TO_LONG, DF_TIME_SERIES_TO_ROWS, DF_TIME_SERIES_TO_TABLE, DF_PIVOT, DF_ROWS_TO_FIELDS, DF_LABELS_TO_FIELDS, DF_LOOKUP, DF_CONFIG_FROM_QUERY, DF_REGRESSION, DF_EXTRACT_LABELS.
TransformerResponseDto
_idUnique transformer identifier
panelPanel ID this transformer belongs to
nameHuman-readable name of the transformer
typeType of transformation. Raw JSON types: EXTRACT, SELECT, RENAME, FIELDS, FILTER, SORT, LIMIT, REDUCE. DataFrame types: DF_RENAME_FIELDS, DF_ORGANIZE_FIELDS, DF_SELECT_FIELDS, DF_FILTER_FIELDS_BY_NAME, DF_FILTER_BY_VALUE, DF_FILTER_BY_QUERY, DF_CALCULATE, DF_CUMULATIVE, DF_REDUCE, DF_GROUP_BY, DF_JOIN, DF_MERGE, DF_CONCATENATE, DF_TIME_SERIES_LONG_TO_WIDE, DF_TIME_SERIES_WIDE_TO_LONG, DF_TIME_SERIES_TO_ROWS, DF_TIME_SERIES_TO_TABLE, DF_PIVOT, DF_ROWS_TO_FIELDS, DF_LABELS_TO_FIELDS, DF_LOOKUP, DF_CONFIG_FROM_QUERY, DF_REGRESSION, DF_EXTRACT_LABELS.
enabledWhether this transformer is enabled in the pipeline. Disabled transformers are skipped.
orderExecution order within the pipeline. Lower numbers execute first.
createdAtTimestamp when the transformer was created
updatedAtTimestamp when the transformer was last updated
configConfiguration object whose shape depends on the transform type. See CreateTransformerDto config documentation for schemas per type.
ProxyCallUsageResponseDto
_idUsage document ID
systemSystem ID
methodHTTP method used
urlFinal URL used for the proxy call
statusCodeHTTP status code from external source
authorizationWhether Authorization header was present
createdAtupdatedAtresponseTimeMsResponse time in milliseconds
dataSourceRelated DataSource ID
dashboardRelated Dashboard ID
panelRelated Panel ID
bodyCustom body for the proxy request (for POST/PUT)
PanelResponseDto
_idPanel ID
systemSystem ID
titleTitle of the panel
chartTypeType of chart
dataSourceData source ID or populated object
createdAtupdatedAtdescriptionDescription of the panel
colorPaletteColor palette for chart series
endpointAPI endpoint path
httpMethodHTTP method for the proxy request
headersCustom headers for the proxy request
xAxisFieldX-Axis field
yAxisFieldY-Axis field
Populated transformers linked to this panel
optionsVisualization options
Recent proxy call usages for this panel
bodyCustom body for the panel request (for POST/PUT)
PanelThresholdDto
valueThreshold value
colorThreshold color
labelThreshold label
PanelVisualizationOptionsDto
colorsColor mappings
yMinY-axis minimum value
yMaxY-axis maximum value
showLegendWhether to show legend
showGridWhether to show grid lines
Thresholds for gauge/alert visualizations
unitUnit label
decimalsNumber of decimal places
CreatePanelDto
titleTitle of the panel
chartTypeType of chart
dataSourceID of the Data Source
descriptionDescription of the panel
colorPaletteColor palette for chart series. The frontend cycles through these colors.
endpointAPI endpoint path appended to the data source base URL
httpMethodHTTP method for the proxy request
headersCustom headers to include in the proxy request
xAxisFieldX-Axis field name
yAxisFieldY-Axis field name
Visualization options
bodyCustom body for the panel request (for POST/PUT)
UpdatePanelDto
titleTitle of the panel
descriptionDescription of the panel
colorPaletteColor palette for chart series. The frontend cycles through these colors.
chartTypeType of chart
dataSourceID of the Data Source
endpointAPI endpoint path appended to the data source base URL
httpMethodHTTP method for the proxy request
headersCustom headers to include in the proxy request
xAxisFieldX-Axis field name
yAxisFieldY-Axis field name
Visualization options
bodyCustom body for the panel request (for POST/PUT)
CreateTransformerDto
nameName of the transformer
typeType of transformation to apply. Raw JSON types: EXTRACT, SELECT, RENAME, FIELDS, FILTER, SORT, LIMIT, REDUCE. DataFrame types (DF_ prefix): DF_RENAME_FIELDS, DF_ORGANIZE_FIELDS, DF_SELECT_FIELDS, DF_FILTER_FIELDS_BY_NAME, DF_FILTER_BY_VALUE, DF_FILTER_BY_QUERY, DF_CALCULATE, DF_CUMULATIVE, DF_REDUCE, DF_GROUP_BY, DF_JOIN, DF_MERGE, DF_CONCATENATE, DF_TIME_SERIES_LONG_TO_WIDE, DF_TIME_SERIES_WIDE_TO_LONG, DF_TIME_SERIES_TO_ROWS, DF_TIME_SERIES_TO_TABLE, DF_PIVOT, DF_ROWS_TO_FIELDS, DF_LABELS_TO_FIELDS, DF_LOOKUP, DF_CONFIG_FROM_QUERY, DF_REGRESSION, DF_EXTRACT_LABELS.
configConfiguration object for the transform. Shape depends on the transform type. See TRANSFORMATIONS.md for the full config reference per type.
enabledWhether this transformer is enabled in the pipeline. Disabled transformers are skipped during execution.
orderExecution order within the pipeline. Lower numbers execute first.
UpdateTransformerDto
nameName of the transformer
typeType of transformation to apply.
configConfiguration object for the transform. Shape depends on the transform type. See TRANSFORMATIONS.md for the full config reference per type.
enabledWhether this transformer is enabled in the pipeline. Disabled transformers are skipped during execution.
orderExecution order within the pipeline. Lower numbers execute first.
DeviceHealthItemDto
deviceIdDevice ID
deviceNameDevice name or macId
healthScoreHealth score 0-100
healthStatusHealth status
openAnomalyCountNumber of open anomalies
monitoringEnabledWhether predictive maintenance monitoring is active for this device
mlRiskScoreML model anomaly risk score 0.0–1.0
mlIsAnomalyWhether ML model flagged this device as anomalous
DeviceHealthSummaryDto
totalTotal device count (after filtering)
pageCurrent page number
sizeItems per page
DeviceAnomalyResponseDto
_idAnomaly ID
deviceDevice ID
systemSystem ID
anomalyTypeseveritydetectedAtbaselineValueactualValuedeviationPercentageexplanationstatusdeviceNameDevice name (populated for convenience)
notesStaff notes about this anomaly
PaginatedAnomaliesDto
totalpagesizeDeviceBaselineDataDto
dayTypecalculatedAtWhen baseline was last calculated
windowDaysRolling window in days
healthScoreHealth score 0-100
hourlyAvgUsageAverage hourly energy usage (kWh) while ON
hourlyStdDevStd dev of hourly usage
dailyAvgUsageAverage daily energy usage (kWh)
dailyStdDevStd dev of daily usage
peakHourAvgPeak hour average usage (kWh)
offPeakHourAvgOff-peak hour average usage (kWh)
avgPowerFactorAverage power factor
avgCurrentAverage current (A)
avgVoltageAverage voltage (V)
avgPowerAverage power (W)
avgCyclesPerDayAverage on/off cycles per day
avgActiveHoursPerDayAverage active hours per day
monitoringEnabledWhether monitoring is enabled
baselineResetAtWhen baseline was last reset
mlRiskScoreML anomaly risk score 0.0–1.0
mlIsAnomalyWhether ML flagged as anomalous
mlScoredAtWhen ML score was last updated
DeviceDetailResponseDto
deviceIdDevice ID
All anomalies for this device
Weekday baseline
Weekend baseline
UpdateAnomalyStatusDto
statusNew status for the anomaly
notesNotes about what happened or actions taken
BulkMonitoringRequestDto
deviceIdsDevice IDs to enable or disable monitoring for
BulkResetBaselineResponseDto
affectedNumber of devices reset
deviceIdsDevice IDs that were successfully reset
baselineResetAtTimestamp the reset was triggered
weekdayRecalibratingUntilWeekday anomaly detection resumes after this date (28 days from reset)
weekendRecalibratingUntilWeekend anomaly detection resumes after this date (70 days from reset)
messageHuman-readable confirmation message
BulkMonitoringResponseDto
affectedNumber of devices affected
deviceIdsDevice IDs that were successfully updated
messageHuman-readable confirmation message
MlTrainingResponseDto
samplesUsedNumber of baseline samples used to train the model
ConsumerOrderLocation
Location of the customer
ConsumerOrderHousingType
Type of housing
ConsumerOrderDevice
Device type identifier
ConsumerSelectedDeviceDto
deviceTypeDevice type identifier
qtyNumber of units of this device
CreateConsumerOrderDto
firstNameFirst name of the customer
lastNameLast name of the customer
mobileMobile number of the customer
emailEmail address of the customer
locationLocation of the customer
housingTypeType of housing
High-energy appliances the customer wants to monitor, with quantities
CreateConsumerOrderResponseDto
messageConfirmation message
SceneStateResponseDto
sceneIdlabelclipUrlAbsolute URL of the backdrop video to loop for this scene.
updatedAtISO timestamp of when this scene became active.