---
title: "Create a Rule"
method: POST
path: "/rules"
tags: ["Rules"]
---

# Create a Rule

`POST /rules`

## Request

- Base URL: `https://api.smartthings.com/v1`
- URL: `https://api.smartthings.com/v1/rules`
- Auth: OAuth 2
  - Implicit: `https://auth-global.api.smartthings.com`
  - Scopes: `w:rules:*`
- TypeScript: <https://skmtc.dev/smartthings/apis/smartthings-api/docs/rules/post.ts> (a function with typed inputs; its response is checked against the schema)

Create a Rule for a specified location and user.

## Query parameters

- `locationId` string, ^(?:([0-9a-fA-F]{32})|([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}))$, required

## Request body

- RuleRequest
  - `name` string, required: The name for the Rule. Limit 100 characters.
  - `actions` Action[], required
    - `if` IfAction
      - `and` Condition[]
        - `and` Condition[]
        - `or` Condition[]
        - `not` Condition (recursive)
        - `equals` EqualsCondition
          - `left` Operand, required
            - `boolean` boolean
            - `decimal` number, double
            - `integer` integer
            - `string` string
            - `array` ArrayOperand
              - …
            - `map` MapOperand
            - `device` DeviceOperand
              - …
            - `location` LocationOperand
              - …
            - `date` DateOperand
              - …
            - `time` TimeOperand: TimeOperand is restricted to returning a value between 0 and 86399 seconds. This means that adding an offset that potentially drives the integer value outside the range of [0..86399] will cause an adjustment to bring the value back in that range
              - …
            - `datetime` DateTimeOperand
              - …
          - `right` Operand, required
            - `boolean` boolean
            - `decimal` number, double
            - `integer` integer
            - `string` string
            - `array` ArrayOperand
              - …
            - `map` MapOperand
            - `device` DeviceOperand
              - …
            - `location` LocationOperand
              - …
            - `date` DateOperand
              - …
            - `time` TimeOperand: TimeOperand is restricted to returning a value between 0 and 86399 seconds. This means that adding an offset that potentially drives the integer value outside the range of [0..86399] will cause an adjustment to bring the value back in that range
              - …
            - `datetime` DateTimeOperand
              - …
          - `aggregation` 'Any' | 'All'
          - `changesOnly` boolean: Determines whether or not to track the evaluation state of the operation it contains, trigger the condition when the state of the inner operation transitions from false to true. Default is false.
        - `greaterThan` GreaterThanCondition
          - `left` Operand, required
            - `boolean` boolean
            - `decimal` number, double
            - `integer` integer
            - `string` string
            - `array` ArrayOperand
              - …
            - `map` MapOperand
            - `device` DeviceOperand
              - …
            - `location` LocationOperand
              - …
            - `date` DateOperand
              - …
            - `time` TimeOperand: TimeOperand is restricted to returning a value between 0 and 86399 seconds. This means that adding an offset that potentially drives the integer value outside the range of [0..86399] will cause an adjustment to bring the value back in that range
              - …
            - `datetime` DateTimeOperand
              - …
          - `right` Operand, required
            - `boolean` boolean
            - `decimal` number, double
            - `integer` integer
            - `string` string
            - `array` ArrayOperand
              - …
            - `map` MapOperand
            - `device` DeviceOperand
              - …
            - `location` LocationOperand
              - …
            - `date` DateOperand
              - …
            - `time` TimeOperand: TimeOperand is restricted to returning a value between 0 and 86399 seconds. This means that adding an offset that potentially drives the integer value outside the range of [0..86399] will cause an adjustment to bring the value back in that range
              - …
            - `datetime` DateTimeOperand
              - …
          - `aggregation` 'Any' | 'All'
          - `changesOnly` boolean: Determines whether or not to track the evaluation state of the operation it contains, trigger the condition when the state of the inner operation transitions from false to true. Default is false.
        - `greaterThanOrEquals` GreaterThanOrEqualsCondition
          - `left` Operand, required
            - `boolean` boolean
            - `decimal` number, double
            - `integer` integer
            - `string` string
            - `array` ArrayOperand
              - …
            - `map` MapOperand
            - `device` DeviceOperand
              - …
            - `location` LocationOperand
              - …
            - `date` DateOperand
              - …
            - `time` TimeOperand: TimeOperand is restricted to returning a value between 0 and 86399 seconds. This means that adding an offset that potentially drives the integer value outside the range of [0..86399] will cause an adjustment to bring the value back in that range
              - …
            - `datetime` DateTimeOperand
              - …
          - `right` Operand, required
            - `boolean` boolean
            - `decimal` number, double
            - `integer` integer
            - `string` string
            - `array` ArrayOperand
              - …
            - `map` MapOperand
            - `device` DeviceOperand
              - …
            - `location` LocationOperand
              - …
            - `date` DateOperand
              - …
            - `time` TimeOperand: TimeOperand is restricted to returning a value between 0 and 86399 seconds. This means that adding an offset that potentially drives the integer value outside the range of [0..86399] will cause an adjustment to bring the value back in that range
              - …
            - `datetime` DateTimeOperand
              - …
          - `aggregation` 'Any' | 'All'
          - `changesOnly` boolean: Determines whether or not to track the evaluation state of the operation it contains, trigger the condition when the state of the inner operation transitions from false to true. Default is false.
        - `lessThan` LessThanCondition
          - `left` Operand, required
            - `boolean` boolean
            - `decimal` number, double
            - `integer` integer
            - `string` string
            - `array` ArrayOperand
              - …
            - `map` MapOperand
            - `device` DeviceOperand
              - …
            - `location` LocationOperand
              - …
            - `date` DateOperand
              - …
            - `time` TimeOperand: TimeOperand is restricted to returning a value between 0 and 86399 seconds. This means that adding an offset that potentially drives the integer value outside the range of [0..86399] will cause an adjustment to bring the value back in that range
              - …
            - `datetime` DateTimeOperand
              - …
          - `right` Operand, required
            - `boolean` boolean
            - `decimal` number, double
            - `integer` integer
            - `string` string
            - `array` ArrayOperand
              - …
            - `map` MapOperand
            - `device` DeviceOperand
              - …
            - `location` LocationOperand
              - …
            - `date` DateOperand
              - …
            - `time` TimeOperand: TimeOperand is restricted to returning a value between 0 and 86399 seconds. This means that adding an offset that potentially drives the integer value outside the range of [0..86399] will cause an adjustment to bring the value back in that range
              - …
            - `datetime` DateTimeOperand
              - …
          - `aggregation` 'Any' | 'All'
          - `changesOnly` boolean: Determines whether or not to track the evaluation state of the operation it contains, trigger the condition when the state of the inner operation transitions from false to true. Default is false.
        - `lessThanOrEquals` LessThanOrEqualsCondition
          - `left` Operand, required
            - `boolean` boolean
            - `decimal` number, double
            - `integer` integer
            - `string` string
            - `array` ArrayOperand
              - …
            - `map` MapOperand
            - `device` DeviceOperand
              - …
            - `location` LocationOperand
              - …
            - `date` DateOperand
              - …
            - `time` TimeOperand: TimeOperand is restricted to returning a value between 0 and 86399 seconds. This means that adding an offset that potentially drives the integer value outside the range of [0..86399] will cause an adjustment to bring the value back in that range
              - …
            - `datetime` DateTimeOperand
              - …
          - `right` Operand, required
            - `boolean` boolean
            - `decimal` number, double
            - `integer` integer
            - `string` string
            - `array` ArrayOperand
              - …
            - `map` MapOperand
            - `device` DeviceOperand
              - …
            - `location` LocationOperand
              - …
            - `date` DateOperand
              - …
            - `time` TimeOperand: TimeOperand is restricted to returning a value between 0 and 86399 seconds. This means that adding an offset that potentially drives the integer value outside the range of [0..86399] will cause an adjustment to bring the value back in that range
              - …
            - `datetime` DateTimeOperand
              - …
          - `aggregation` 'Any' | 'All'
          - `changesOnly` boolean: Determines whether or not to track the evaluation state of the operation it contains, trigger the condition when the state of the inner operation transitions from false to true. Default is false.
        - `between` BetweenCondition
          - `value` Operand, required
            - `boolean` boolean
            - `decimal` number, double
            - `integer` integer
            - `string` string
            - `array` ArrayOperand
              - …
            - `map` MapOperand
            - `device` DeviceOperand
              - …
            - `location` LocationOperand
              - …
            - `date` DateOperand
              - …
            - `time` TimeOperand: TimeOperand is restricted to returning a value between 0 and 86399 seconds. This means that adding an offset that potentially drives the integer value outside the range of [0..86399] will cause an adjustment to bring the value back in that range
              - …
            - `datetime` DateTimeOperand
              - …
          - `start` Operand, required
            - `boolean` boolean
            - `decimal` number, double
            - `integer` integer
            - `string` string
            - `array` ArrayOperand
              - …
            - `map` MapOperand
            - `device` DeviceOperand
              - …
            - `location` LocationOperand
              - …
            - `date` DateOperand
              - …
            - `time` TimeOperand: TimeOperand is restricted to returning a value between 0 and 86399 seconds. This means that adding an offset that potentially drives the integer value outside the range of [0..86399] will cause an adjustment to bring the value back in that range
              - …
            - `datetime` DateTimeOperand
              - …
          - `end` Operand, required
            - `boolean` boolean
            - `decimal` number, double
            - `integer` integer
            - `string` string
            - `array` ArrayOperand
              - …
            - `map` MapOperand
            - `device` DeviceOperand
              - …
            - `location` LocationOperand
              - …
            - `date` DateOperand
              - …
            - `time` TimeOperand: TimeOperand is restricted to returning a value between 0 and 86399 seconds. This means that adding an offset that potentially drives the integer value outside the range of [0..86399] will cause an adjustment to bring the value back in that range
              - …
            - `datetime` DateTimeOperand
              - …
          - `aggregation` 'Any' | 'All'
          - `changesOnly` boolean: Determines whether or not to track the evaluation state of the operation it contains, trigger the condition when the state of the inner operation transitions from false to true. Default is false.
        - `changes` ChangesCondition: A condition that returns true when its evaluation resolves to true and the previous evaluation resolved to false.
          - `and` Condition[]
          - `or` Condition[]
          - `not` Condition (recursive)
          - `equals` EqualsCondition
            - `left` Operand, required
              - …
            - `right` Operand, required
              - …
            - `aggregation` 'Any' | 'All'
            - `changesOnly` boolean: Determines whether or not to track the evaluation state of the operation it contains, trigger the condition when the state of the inner operation transitions from false to true. Default is false.
          - `greaterThan` GreaterThanCondition
            - `left` Operand, required
              - …
            - `right` Operand, required
              - …
            - `aggregation` 'Any' | 'All'
            - `changesOnly` boolean: Determines whether or not to track the evaluation state of the operation it contains, trigger the condition when the state of the inner operation transitions from false to true. Default is false.
          - `greaterThanOrEquals` GreaterThanOrEqualsCondition
            - `left` Operand, required
              - …
            - `right` Operand, required
              - …
            - `aggregation` 'Any' | 'All'
            - `changesOnly` boolean: Determines whether or not to track the evaluation state of the operation it contains, trigger the condition when the state of the inner operation transitions from false to true. Default is false.
          - `lessThan` LessThanCondition
            - `left` Operand, required
              - …
            - `right` Operand, required
              - …
            - `aggregation` 'Any' | 'All'
            - `changesOnly` boolean: Determines whether or not to track the evaluation state of the operation it contains, trigger the condition when the state of the inner operation transitions from false to true. Default is false.
          - `lessThanOrEquals` LessThanOrEqualsCondition
            - `left` Operand, required
              - …
            - `right` Operand, required
              - …
            - `aggregation` 'Any' | 'All'
            - `changesOnly` boolean: Determines whether or not to track the evaluation state of the operation it contains, trigger the condition when the state of the inner operation transitions from false to true. Default is false.
          - `between` BetweenCondition
            - `value` Operand, required
              - …
            - `start` Operand, required
              - …
            - `end` Operand, required
              - …
            - `aggregation` 'Any' | 'All'
            - `changesOnly` boolean: Determines whether or not to track the evaluation state of the operation it contains, trigger the condition when the state of the inner operation transitions from false to true. Default is false.
          - `id` string, ^(?:([0-9a-fA-F]{32})|([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}))$, required: Unique id for the condition
          - `operand` Operand
            - `boolean` boolean
            - `decimal` number, double
            - `integer` integer
            - `string` string
            - `array` ArrayOperand
              - …
            - `map` MapOperand
            - `device` DeviceOperand
              - …
            - `location` LocationOperand
              - …
            - `date` DateOperand
              - …
            - `time` TimeOperand: TimeOperand is restricted to returning a value between 0 and 86399 seconds. This means that adding an offset that potentially drives the integer value outside the range of [0..86399] will cause an adjustment to bring the value back in that range
              - …
            - `datetime` DateTimeOperand
              - …
        - `remains` RemainsCondition: A condition that returns true if its evaluation is true after the specified duration.
          - `and` Condition[]
          - `or` Condition[]
          - `not` Condition (recursive)
          - `equals` EqualsCondition
            - `left` Operand, required
              - …
            - `right` Operand, required
              - …
            - `aggregation` 'Any' | 'All'
            - `changesOnly` boolean: Determines whether or not to track the evaluation state of the operation it contains, trigger the condition when the state of the inner operation transitions from false to true. Default is false.
          - `greaterThan` GreaterThanCondition
            - `left` Operand, required
              - …
            - `right` Operand, required
              - …
            - `aggregation` 'Any' | 'All'
            - `changesOnly` boolean: Determines whether or not to track the evaluation state of the operation it contains, trigger the condition when the state of the inner operation transitions from false to true. Default is false.
          - `greaterThanOrEquals` GreaterThanOrEqualsCondition
            - `left` Operand, required
              - …
            - `right` Operand, required
              - …
            - `aggregation` 'Any' | 'All'
            - `changesOnly` boolean: Determines whether or not to track the evaluation state of the operation it contains, trigger the condition when the state of the inner operation transitions from false to true. Default is false.
          - `lessThan` LessThanCondition
            - `left` Operand, required
              - …
            - `right` Operand, required
              - …
            - `aggregation` 'Any' | 'All'
            - `changesOnly` boolean: Determines whether or not to track the evaluation state of the operation it contains, trigger the condition when the state of the inner operation transitions from false to true. Default is false.
          - `lessThanOrEquals` LessThanOrEqualsCondition
            - `left` Operand, required
              - …
            - `right` Operand, required
              - …
            - `aggregation` 'Any' | 'All'
            - `changesOnly` boolean: Determines whether or not to track the evaluation state of the operation it contains, trigger the condition when the state of the inner operation transitions from false to true. Default is false.
          - `between` BetweenCondition
            - `value` Operand, required
              - …
            - `start` Operand, required
              - …
            - `end` Operand, required
              - …
            - `aggregation` 'Any' | 'All'
            - `changesOnly` boolean: Determines whether or not to track the evaluation state of the operation it contains, trigger the condition when the state of the inner operation transitions from false to true. Default is false.
          - `id` string, ^(?:([0-9a-fA-F]{32})|([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}))$, required: Unique id for the condition
          - `operand` Operand
            - `boolean` boolean
            - `decimal` number, double
            - `integer` integer
            - `string` string
            - `array` ArrayOperand
              - …
            - `map` MapOperand
            - `device` DeviceOperand
              - …
            - `location` LocationOperand
              - …
            - `date` DateOperand
              - …
            - `time` TimeOperand: TimeOperand is restricted to returning a value between 0 and 86399 seconds. This means that adding an offset that potentially drives the integer value outside the range of [0..86399] will cause an adjustment to bring the value back in that range
              - …
            - `datetime` DateTimeOperand
              - …
          - `duration` Interval, required
            - `value` Operand, required
              - …
            - `unit` 'Second' | 'Minute' | 'Hour' | 'Day' | 'Week' | 'Month' | 'Year', required
          - `latching` boolean: Determines whether the condition should return true in subsequent executions after initially satisfied. Default is false.
        - `was` WasCondition: A condition that returns true if its evaluation would return true within the specified duration.
          - `and` Condition[]
          - `or` Condition[]
          - `not` Condition (recursive)
          - `equals` EqualsCondition
            - `left` Operand, required
              - …
            - `right` Operand, required
              - …
            - `aggregation` 'Any' | 'All'
            - `changesOnly` boolean: Determines whether or not to track the evaluation state of the operation it contains, trigger the condition when the state of the inner operation transitions from false to true. Default is false.
          - `greaterThan` GreaterThanCondition
            - `left` Operand, required
              - …
            - `right` Operand, required
              - …
            - `aggregation` 'Any' | 'All'
            - `changesOnly` boolean: Determines whether or not to track the evaluation state of the operation it contains, trigger the condition when the state of the inner operation transitions from false to true. Default is false.
          - `greaterThanOrEquals` GreaterThanOrEqualsCondition
            - `left` Operand, required
              - …
            - `right` Operand, required
              - …
            - `aggregation` 'Any' | 'All'
            - `changesOnly` boolean: Determines whether or not to track the evaluation state of the operation it contains, trigger the condition when the state of the inner operation transitions from false to true. Default is false.
          - `lessThan` LessThanCondition
            - `left` Operand, required
              - …
            - `right` Operand, required
              - …
            - `aggregation` 'Any' | 'All'
            - `changesOnly` boolean: Determines whether or not to track the evaluation state of the operation it contains, trigger the condition when the state of the inner operation transitions from false to true. Default is false.
          - `lessThanOrEquals` LessThanOrEqualsCondition
            - `left` Operand, required
              - …
            - `right` Operand, required
              - …
            - `aggregation` 'Any' | 'All'
            - `changesOnly` boolean: Determines whether or not to track the evaluation state of the operation it contains, trigger the condition when the state of the inner operation transitions from false to true. Default is false.
          - `between` BetweenCondition
            - `value` Operand, required
              - …
            - `start` Operand, required
              - …
            - `end` Operand, required
              - …
            - `aggregation` 'Any' | 'All'
            - `changesOnly` boolean: Determines whether or not to track the evaluation state of the operation it contains, trigger the condition when the state of the inner operation transitions from false to true. Default is false.
          - `id` string, ^(?:([0-9a-fA-F]{32})|([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}))$, required: Unique id for the condition
          - `duration` Interval, required
            - `value` Operand, required
              - …
            - `unit` 'Second' | 'Minute' | 'Hour' | 'Day' | 'Week' | 'Month' | 'Year', required
          - `operand` Operand
            - `boolean` boolean
            - `decimal` number, double
            - `integer` integer
            - `string` string
            - `array` ArrayOperand
              - …
            - `map` MapOperand
            - `device` DeviceOperand
              - …
            - `location` LocationOperand
              - …
            - `date` DateOperand
              - …
            - `time` TimeOperand: TimeOperand is restricted to returning a value between 0 and 86399 seconds. This means that adding an offset that potentially drives the integer value outside the range of [0..86399] will cause an adjustment to bring the value back in that range
              - …
            - `datetime` DateTimeOperand
              - …
      - `or` Condition[]
        - `and` Condition[]
        - `or` Condition[]
        - `not` Condition (recursive)
        - `equals` EqualsCondition
          - `left` Operand, required
            - `boolean` boolean
            - `decimal` number, double
            - `integer` integer
            - `string` string
            - `array` ArrayOperand
              - …
            - `map` MapOperand
            - `device` DeviceOperand
              - …
            - `location` LocationOperand
              - …
            - `date` DateOperand
              - …
            - `time` TimeOperand: TimeOperand is restricted to returning a value between 0 and 86399 seconds. This means that adding an offset that potentially drives the integer value outside the range of [0..86399] will cause an adjustment to bring the value back in that range
              - …
            - `datetime` DateTimeOperand
              - …
          - `right` Operand, required
            - `boolean` boolean
            - `decimal` number, double
            - `integer` integer
            - `string` string
            - `array` ArrayOperand
              - …
            - `map` MapOperand
            - `device` DeviceOperand
              - …
            - `location` LocationOperand
              - …
            - `date` DateOperand
              - …
            - `time` TimeOperand: TimeOperand is restricted to returning a value between 0 and 86399 seconds. This means that adding an offset that potentially drives the integer value outside the range of [0..86399] will cause an adjustment to bring the value back in that range
              - …
            - `datetime` DateTimeOperand
              - …
          - `aggregation` 'Any' | 'All'
          - `changesOnly` boolean: Determines whether or not to track the evaluation state of the operation it contains, trigger the condition when the state of the inner operation transitions from false to true. Default is false.
        - `greaterThan` GreaterThanCondition
          - `left` Operand, required
            - `boolean` boolean
            - `decimal` number, double
            - `integer` integer
            - `string` string
            - `array` ArrayOperand
              - …
            - `map` MapOperand
            - `device` DeviceOperand
              - …
            - `location` LocationOperand
              - …
            - `date` DateOperand
              - …
            - `time` TimeOperand: TimeOperand is restricted to returning a value between 0 and 86399 seconds. This means that adding an offset that potentially drives the integer value outside the range of [0..86399] will cause an adjustment to bring the value back in that range
              - …
            - `datetime` DateTimeOperand
              - …
          - `right` Operand, required
            - `boolean` boolean
            - `decimal` number, double
            - `integer` integer
            - `string` string
            - `array` ArrayOperand
              - …
            - `map` MapOperand
            - `device` DeviceOperand
              - …
            - `location` LocationOperand
              - …
            - `date` DateOperand
              - …
            - `time` TimeOperand: TimeOperand is restricted to returning a value between 0 and 86399 seconds. This means that adding an offset that potentially drives the integer value outside the range of [0..86399] will cause an adjustment to bring the value back in that range
              - …
            - `datetime` DateTimeOperand
              - …
          - `aggregation` 'Any' | 'All'
          - `changesOnly` boolean: Determines whether or not to track the evaluation state of the operation it contains, trigger the condition when the state of the inner operation transitions from false to true. Default is false.
        - `greaterThanOrEquals` GreaterThanOrEqualsCondition
          - `left` Operand, required
            - `boolean` boolean
            - `decimal` number, double
            - `integer` integer
            - `string` string
            - `array` ArrayOperand
              - …
            - `map` MapOperand
            - `device` DeviceOperand
              - …
            - `location` LocationOperand
              - …
            - `date` DateOperand
              - …
            - `time` TimeOperand: TimeOperand is restricted to returning a value between 0 and 86399 seconds. This means that adding an offset that potentially drives the integer value outside the range of [0..86399] will cause an adjustment to bring the value back in that range
              - …
            - `datetime` DateTimeOperand
              - …
          - `right` Operand, required
            - `boolean` boolean
            - `decimal` number, double
            - `integer` integer
            - `string` string
            - `array` ArrayOperand
              - …
            - `map` MapOperand
            - `device` DeviceOperand
              - …
            - `location` LocationOperand
              - …
            - `date` DateOperand
              - …
            - `time` TimeOperand: TimeOperand is restricted to returning a value between 0 and 86399 seconds. This means that adding an offset that potentially drives the integer value outside the range of [0..86399] will cause an adjustment to bring the value back in that range
              - …
            - `datetime` DateTimeOperand
              - …
          - `aggregation` 'Any' | 'All'
          - `changesOnly` boolean: Determines whether or not to track the evaluation state of the operation it contains, trigger the condition when the state of the inner operation transitions from false to true. Default is false.
        - `lessThan` LessThanCondition
          - `left` Operand, required
            - `boolean` boolean
            - `decimal` number, double
            - `integer` integer
            - `string` string
            - `array` ArrayOperand
              - …
            - `map` MapOperand
            - `device` DeviceOperand
              - …
            - `location` LocationOperand
              - …
            - `date` DateOperand
              - …
            - `time` TimeOperand: TimeOperand is restricted to returning a value between 0 and 86399 seconds. This means that adding an offset that potentially drives the integer value outside the range of [0..86399] will cause an adjustment to bring the value back in that range
              - …
            - `datetime` DateTimeOperand
              - …
          - `right` Operand, required
            - `boolean` boolean
            - `decimal` number, double
            - `integer` integer
            - `string` string
            - `array` ArrayOperand
              - …
            - `map` MapOperand
            - `device` DeviceOperand
              - …
            - `location` LocationOperand
              - …
            - `date` DateOperand
              - …
            - `time` TimeOperand: TimeOperand is restricted to returning a value between 0 and 86399 seconds. This means that adding an offset that potentially drives the integer value outside the range of [0..86399] will cause an adjustment to bring the value back in that range
              - …
            - `datetime` DateTimeOperand
              - …
          - `aggregation` 'Any' | 'All'
          - `changesOnly` boolean: Determines whether or not to track the evaluation state of the operation it contains, trigger the condition when the state of the inner operation transitions from false to true. Default is false.
        - `lessThanOrEquals` LessThanOrEqualsCondition
          - `left` Operand, required
            - `boolean` boolean
            - `decimal` number, double
            - `integer` integer
            - `string` string
            - `array` ArrayOperand
              - …
            - `map` MapOperand
            - `device` DeviceOperand
              - …
            - `location` LocationOperand
              - …
            - `date` DateOperand
              - …
            - `time` TimeOperand: TimeOperand is restricted to returning a value between 0 and 86399 seconds. This means that adding an offset that potentially drives the integer value outside the range of [0..86399] will cause an adjustment to bring the value back in that range
              - …
            - `datetime` DateTimeOperand
              - …
          - `right` Operand, required
            - `boolean` boolean
            - `decimal` number, double
            - `integer` integer
            - `string` string
            - `array` ArrayOperand
              - …
            - `map` MapOperand
            - `device` DeviceOperand
              - …
            - `location` LocationOperand
              - …
            - `date` DateOperand
              - …
            - `time` TimeOperand: TimeOperand is restricted to returning a value between 0 and 86399 seconds. This means that adding an offset that potentially drives the integer value outside the range of [0..86399] will cause an adjustment to bring the value back in that range
              - …
            - `datetime` DateTimeOperand
              - …
          - `aggregation` 'Any' | 'All'
          - `changesOnly` boolean: Determines whether or not to track the evaluation state of the operation it contains, trigger the condition when the state of the inner operation transitions from false to true. Default is false.
        - `between` BetweenCondition
          - `value` Operand, required
            - `boolean` boolean
            - `decimal` number, double
            - `integer` integer
            - `string` string
            - `array` ArrayOperand
              - …
            - `map` MapOperand
            - `device` DeviceOperand
              - …
            - `location` LocationOperand
              - …
            - `date` DateOperand
              - …
            - `time` TimeOperand: TimeOperand is restricted to returning a value between 0 and 86399 seconds. This means that adding an offset that potentially drives the integer value outside the range of [0..86399] will cause an adjustment to bring the value back in that range
              - …
            - `datetime` DateTimeOperand
              - …
          - `start` Operand, required
            - `boolean` boolean
            - `decimal` number, double
            - `integer` integer
            - `string` string
            - `array` ArrayOperand
              - …
            - `map` MapOperand
            - `device` DeviceOperand
              - …
            - `location` LocationOperand
              - …
            - `date` DateOperand
              - …
            - `time` TimeOperand: TimeOperand is restricted to returning a value between 0 and 86399 seconds. This means that adding an offset that potentially drives the integer value outside the range of [0..86399] will cause an adjustment to bring the value back in that range
              - …
            - `datetime` DateTimeOperand
              - …
          - `end` Operand, required
            - `boolean` boolean
            - `decimal` number, double
            - `integer` integer
            - `string` string
            - `array` ArrayOperand
              - …
            - `map` MapOperand
            - `device` DeviceOperand
              - …
            - `location` LocationOperand
              - …
            - `date` DateOperand
              - …
            - `time` TimeOperand: TimeOperand is restricted to returning a value between 0 and 86399 seconds. This means that adding an offset that potentially drives the integer value outside the range of [0..86399] will cause an adjustment to bring the value back in that range
              - …
            - `datetime` DateTimeOperand
              - …
          - `aggregation` 'Any' | 'All'
          - `changesOnly` boolean: Determines whether or not to track the evaluation state of the operation it contains, trigger the condition when the state of the inner operation transitions from false to true. Default is false.
        - `changes` ChangesCondition: A condition that returns true when its evaluation resolves to true and the previous evaluation resolved to false.
          - `and` Condition[]
          - `or` Condition[]
          - `not` Condition (recursive)
          - `equals` EqualsCondition
            - `left` Operand, required
              - …
            - `right` Operand, required
              - …
            - `aggregation` 'Any' | 'All'
            - `changesOnly` boolean: Determines whether or not to track the evaluation state of the operation it contains, trigger the condition when the state of the inner operation transitions from false to true. Default is false.
          - `greaterThan` GreaterThanCondition
            - `left` Operand, required
              - …
            - `right` Operand, required
              - …
            - `aggregation` 'Any' | 'All'
            - `changesOnly` boolean: Determines whether or not to track the evaluation state of the operation it contains, trigger the condition when the state of the inner operation transitions from false to true. Default is false.
          - `greaterThanOrEquals` GreaterThanOrEqualsCondition
            - `left` Operand, required
              - …
            - `right` Operand, required
              - …
            - `aggregation` 'Any' | 'All'
            - `changesOnly` boolean: Determines whether or not to track the evaluation state of the operation it contains, trigger the condition when the state of the inner operation transitions from false to true. Default is false.
          - `lessThan` LessThanCondition
            - `left` Operand, required
              - …
            - `right` Operand, required
              - …
            - `aggregation` 'Any' | 'All'
            - `changesOnly` boolean: Determines whether or not to track the evaluation state of the operation it contains, trigger the condition when the state of the inner operation transitions from false to true. Default is false.
          - `lessThanOrEquals` LessThanOrEqualsCondition
            - `left` Operand, required
              - …
            - `right` Operand, required
              - …
            - `aggregation` 'Any' | 'All'
            - `changesOnly` boolean: Determines whether or not to track the evaluation state of the operation it contains, trigger the condition when the state of the inner operation transitions from false to true. Default is false.
          - `between` BetweenCondition
            - `value` Operand, required
              - …
            - `start` Operand, required
              - …
            - `end` Operand, required
              - …
            - `aggregation` 'Any' | 'All'
            - `changesOnly` boolean: Determines whether or not to track the evaluation state of the operation it contains, trigger the condition when the state of the inner operation transitions from false to true. Default is false.
          - `id` string, ^(?:([0-9a-fA-F]{32})|([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}))$, required: Unique id for the condition
          - `operand` Operand
            - `boolean` boolean
            - `decimal` number, double
            - `integer` integer
            - `string` string
            - `array` ArrayOperand
              - …
            - `map` MapOperand
            - `device` DeviceOperand
              - …
            - `location` LocationOperand
              - …
            - `date` DateOperand
              - …
            - `time` TimeOperand: TimeOperand is restricted to returning a value between 0 and 86399 seconds. This means that adding an offset that potentially drives the integer value outside the range of [0..86399] will cause an adjustment to bring the value back in that range
              - …
            - `datetime` DateTimeOperand
              - …
        - `remains` RemainsCondition: A condition that returns true if its evaluation is true after the specified duration.
          - `and` Condition[]
          - `or` Condition[]
          - `not` Condition (recursive)
          - `equals` EqualsCondition
            - `left` Operand, required
              - …
            - `right` Operand, required
              - …
            - `aggregation` 'Any' | 'All'
            - `changesOnly` boolean: Determines whether or not to track the evaluation state of the operation it contains, trigger the condition when the state of the inner operation transitions from false to true. Default is false.
          - `greaterThan` GreaterThanCondition
            - `left` Operand, required
              - …
            - `right` Operand, required
              - …
            - `aggregation` 'Any' | 'All'
            - `changesOnly` boolean: Determines whether or not to track the evaluation state of the operation it contains, trigger the condition when the state of the inner operation transitions from false to true. Default is false.
          - `greaterThanOrEquals` GreaterThanOrEqualsCondition
            - `left` Operand, required
              - …
            - `right` Operand, required
              - …
            - `aggregation` 'Any' | 'All'
            - `changesOnly` boolean: Determines whether or not to track the evaluation state of the operation it contains, trigger the condition when the state of the inner operation transitions from false to true. Default is false.
          - `lessThan` LessThanCondition
            - `left` Operand, required
              - …
            - `right` Operand, required
              - …
            - `aggregation` 'Any' | 'All'
            - `changesOnly` boolean: Determines whether or not to track the evaluation state of the operation it contains, trigger the condition when the state of the inner operation transitions from false to true. Default is false.
          - `lessThanOrEquals` LessThanOrEqualsCondition
            - `left` Operand, required
              - …
            - `right` Operand, required
              - …
            - `aggregation` 'Any' | 'All'
            - `changesOnly` boolean: Determines whether or not to track the evaluation state of the operation it contains, trigger the condition when the state of the inner operation transitions from false to true. Default is false.
          - `between` BetweenCondition
            - `value` Operand, required
              - …
            - `start` Operand, required
              - …
            - `end` Operand, required
              - …
            - `aggregation` 'Any' | 'All'
            - `changesOnly` boolean: Determines whether or not to track the evaluation state of the operation it contains, trigger the condition when the state of the inner operation transitions from false to true. Default is false.
          - `id` string, ^(?:([0-9a-fA-F]{32})|([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}))$, required: Unique id for the condition
          - `operand` Operand
            - `boolean` boolean
            - `decimal` number, double
            - `integer` integer
            - `string` string
            - `array` ArrayOperand
              - …
            - `map` MapOperand
            - `device` DeviceOperand
              - …
            - `location` LocationOperand
              - …
            - `date` DateOperand
              - …
            - `time` TimeOperand: TimeOperand is restricted to returning a value between 0 and 86399 seconds. This means that adding an offset that potentially drives the integer value outside the range of [0..86399] will cause an adjustment to bring the value back in that range
              - …
            - `datetime` DateTimeOperand
              - …
          - `duration` Interval, required
            - `value` Operand, required
              - …
            - `unit` 'Second' | 'Minute' | 'Hour' | 'Day' | 'Week' | 'Month' | 'Year', required
          - `latching` boolean: Determines whether the condition should return true in subsequent executions after initially satisfied. Default is false.
        - `was` WasCondition: A condition that returns true if its evaluation would return true within the specified duration.
          - `and` Condition[]
          - `or` Condition[]
          - `not` Condition (recursive)
          - `equals` EqualsCondition
            - `left` Operand, required
              - …
            - `right` Operand, required
              - …
            - `aggregation` 'Any' | 'All'
            - `changesOnly` boolean: Determines whether or not to track the evaluation state of the operation it contains, trigger the condition when the state of the inner operation transitions from false to true. Default is false.
          - `greaterThan` GreaterThanCondition
            - `left` Operand, required
              - …
            - `right` Operand, required
              - …
            - `aggregation` 'Any' | 'All'
            - `changesOnly` boolean: Determines whether or not to track the evaluation state of the operation it contains, trigger the condition when the state of the inner operation transitions from false to true. Default is false.
          - `greaterThanOrEquals` GreaterThanOrEqualsCondition
            - `left` Operand, required
              - …
            - `right` Operand, required
              - …
            - `aggregation` 'Any' | 'All'
            - `changesOnly` boolean: Determines whether or not to track the evaluation state of the operation it contains, trigger the condition when the state of the inner operation transitions from false to true. Default is false.
          - `lessThan` LessThanCondition
            - `left` Operand, required
              - …
            - `right` Operand, required
              - …
            - `aggregation` 'Any' | 'All'
            - `changesOnly` boolean: Determines whether or not to track the evaluation state of the operation it contains, trigger the condition when the state of the inner operation transitions from false to true. Default is false.
          - `lessThanOrEquals` LessThanOrEqualsCondition
            - `left` Operand, required
              - …
            - `right` Operand, required
              - …
            - `aggregation` 'Any' | 'All'
            - `changesOnly` boolean: Determines whether or not to track the evaluation state of the operation it contains, trigger the condition when the state of the inner operation transitions from false to true. Default is false.
          - `between` BetweenCondition
            - `value` Operand, required
              - …
            - `start` Operand, required
              - …
            - `end` Operand, required
              - …
            - `aggregation` 'Any' | 'All'
            - `changesOnly` boolean: Determines whether or not to track the evaluation state of the operation it contains, trigger the condition when the state of the inner operation transitions from false to true. Default is false.
          - `id` string, ^(?:([0-9a-fA-F]{32})|([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}))$, required: Unique id for the condition
          - `duration` Interval, required
            - `value` Operand, required
              - …
            - `unit` 'Second' | 'Minute' | 'Hour' | 'Day' | 'Week' | 'Month' | 'Year', required
          - `operand` Operand
            - `boolean` boolean
            - `decimal` number, double
            - `integer` integer
            - `string` string
            - `array` ArrayOperand
              - …
            - `map` MapOperand
            - `device` DeviceOperand
              - …
            - `location` LocationOperand
              - …
            - `date` DateOperand
              - …
            - `time` TimeOperand: TimeOperand is restricted to returning a value between 0 and 86399 seconds. This means that adding an offset that potentially drives the integer value outside the range of [0..86399] will cause an adjustment to bring the value back in that range
              - …
            - `datetime` DateTimeOperand
              - …
      - `not` Condition
        - `and` Condition[]
        - `or` Condition[]
        - `not` Condition (recursive)
        - `equals` EqualsCondition
          - `left` Operand, required
            - `boolean` boolean
            - `decimal` number, double
            - `integer` integer
            - `string` string
            - `array` ArrayOperand
              - …
            - `map` MapOperand
            - `device` DeviceOperand
              - …
            - `location` LocationOperand
              - …
            - `date` DateOperand
              - …
            - `time` TimeOperand: TimeOperand is restricted to returning a value between 0 and 86399 seconds. This means that adding an offset that potentially drives the integer value outside the range of [0..86399] will cause an adjustment to bring the value back in that range
              - …
            - `datetime` DateTimeOperand
              - …
          - `right` Operand, required
            - `boolean` boolean
            - `decimal` number, double
            - `integer` integer
            - `string` string
            - `array` ArrayOperand
              - …
            - `map` MapOperand
            - `device` DeviceOperand
              - …
            - `location` LocationOperand
              - …
            - `date` DateOperand
              - …
            - `time` TimeOperand: TimeOperand is restricted to returning a value between 0 and 86399 seconds. This means that adding an offset that potentially drives the integer value outside the range of [0..86399] will cause an adjustment to bring the value back in that range
              - …
            - `datetime` DateTimeOperand
              - …
          - `aggregation` 'Any' | 'All'
          - `changesOnly` boolean: Determines whether or not to track the evaluation state of the operation it contains, trigger the condition when the state of the inner operation transitions from false to true. Default is false.
        - `greaterThan` GreaterThanCondition
          - `left` Operand, required
            - `boolean` boolean
            - `decimal` number, double
            - `integer` integer
            - `string` string
            - `array` ArrayOperand
              - …
            - `map` MapOperand
            - `device` DeviceOperand
              - …
            - `location` LocationOperand
              - …
            - `date` DateOperand
              - …
            - `time` TimeOperand: TimeOperand is restricted to returning a value between 0 and 86399 seconds. This means that adding an offset that potentially drives the integer value outside the range of [0..86399] will cause an adjustment to bring the value back in that range
              - …
            - `datetime` DateTimeOperand
              - …
          - `right` Operand, required
            - `boolean` boolean
            - `decimal` number, double
            - `integer` integer
            - `string` string
            - `array` ArrayOperand
              - …
            - `map` MapOperand
            - `device` DeviceOperand
              - …
            - `location` LocationOperand
              - …
            - `date` DateOperand
              - …
            - `time` TimeOperand: TimeOperand is restricted to returning a value between 0 and 86399 seconds. This means that adding an offset that potentially drives the integer value outside the range of [0..86399] will cause an adjustment to bring the value back in that range
              - …
            - `datetime` DateTimeOperand
              - …
          - `aggregation` 'Any' | 'All'
          - `changesOnly` boolean: Determines whether or not to track the evaluation state of the operation it contains, trigger the condition when the state of the inner operation transitions from false to true. Default is false.
        - `greaterThanOrEquals` GreaterThanOrEqualsCondition
          - `left` Operand, required
            - `boolean` boolean
            - `decimal` number, double
            - `integer` integer
            - `string` string
            - `array` ArrayOperand
              - …
            - `map` MapOperand
            - `device` DeviceOperand
              - …
            - `location` LocationOperand
              - …
            - `date` DateOperand
              - …
            - `time` TimeOperand: TimeOperand is restricted to returning a value between 0 and 86399 seconds. This means that adding an offset that potentially drives the integer value outside the range of [0..86399] will cause an adjustment to bring the value back in that range
              - …
            - `datetime` DateTimeOperand
              - …
          - `right` Operand, required
            - `boolean` boolean
            - `decimal` number, double
            - `integer` integer
            - `string` string
            - `array` ArrayOperand
              - …
            - `map` MapOperand
            - `device` DeviceOperand
              - …
            - `location` LocationOperand
              - …
            - `date` DateOperand
              - …
            - `time` TimeOperand: TimeOperand is restricted to returning a value between 0 and 86399 seconds. This means that adding an offset that potentially drives the integer value outside the range of [0..86399] will cause an adjustment to bring the value back in that range
              - …
            - `datetime` DateTimeOperand
              - …
          - `aggregation` 'Any' | 'All'
          - `changesOnly` boolean: Determines whether or not to track the evaluation state of the operation it contains, trigger the condition when the state of the inner operation transitions from false to true. Default is false.
        - `lessThan` LessThanCondition
          - `left` Operand, required
            - `boolean` boolean
            - `decimal` number, double
            - `integer` integer
            - `string` string
            - `array` ArrayOperand
              - …
            - `map` MapOperand
            - `device` DeviceOperand
              - …
            - `location` LocationOperand
              - …
            - `date` DateOperand
              - …
            - `time` TimeOperand: TimeOperand is restricted to returning a value between 0 and 86399 seconds. This means that adding an offset that potentially drives the integer value outside the range of [0..86399] will cause an adjustment to bring the value back in that range
              - …
            - `datetime` DateTimeOperand
              - …
          - `right` Operand, required
            - `boolean` boolean
            - `decimal` number, double
            - `integer` integer
            - `string` string
            - `array` ArrayOperand
              - …
            - `map` MapOperand
            - `device` DeviceOperand
              - …
            - `location` LocationOperand
              - …
            - `date` DateOperand
              - …
            - `time` TimeOperand: TimeOperand is restricted to returning a value between 0 and 86399 seconds. This means that adding an offset that potentially drives the integer value outside the range of [0..86399] will cause an adjustment to bring the value back in that range
              - …
            - `datetime` DateTimeOperand
              - …
          - `aggregation` 'Any' | 'All'
          - `changesOnly` boolean: Determines whether or not to track the evaluation state of the operation it contains, trigger the condition when the state of the inner operation transitions from false to true. Default is false.
        - `lessThanOrEquals` LessThanOrEqualsCondition
          - `left` Operand, required
            - `boolean` boolean
            - `decimal` number, double
            - `integer` integer
            - `string` string
            - `array` ArrayOperand
              - …
            - `map` MapOperand
            - `device` DeviceOperand
              - …
            - `location` LocationOperand
              - …
            - `date` DateOperand
              - …
            - `time` TimeOperand: TimeOperand is restricted to returning a value between 0 and 86399 seconds. This means that adding an offset that potentially drives the integer value outside the range of [0..86399] will cause an adjustment to bring the value back in that range
              - …
            - `datetime` DateTimeOperand
              - …
          - `right` Operand, required
            - `boolean` boolean
            - `decimal` number, double
            - `integer` integer
            - `string` string
            - `array` ArrayOperand
              - …
            - `map` MapOperand
            - `device` DeviceOperand
              - …
            - `location` LocationOperand
              - …
            - `date` DateOperand
              - …
            - `time` TimeOperand: TimeOperand is restricted to returning a value between 0 and 86399 seconds. This means that adding an offset that potentially drives the integer value outside the range of [0..86399] will cause an adjustment to bring the value back in that range
              - …
            - `datetime` DateTimeOperand
              - …
          - `aggregation` 'Any' | 'All'
          - `changesOnly` boolean: Determines whether or not to track the evaluation state of the operation it contains, trigger the condition when the state of the inner operation transitions from false to true. Default is false.
        - `between` BetweenCondition
          - `value` Operand, required
            - `boolean` boolean
            - `decimal` number, double
            - `integer` integer
            - `string` string
            - `array` ArrayOperand
              - …
            - `map` MapOperand
            - `device` DeviceOperand
              - …
            - `location` LocationOperand
              - …
            - `date` DateOperand
              - …
            - `time` TimeOperand: TimeOperand is restricted to returning a value between 0 and 86399 seconds. This means that adding an offset that potentially drives the integer value outside the range of [0..86399] will cause an adjustment to bring the value back in that range
              - …
            - `datetime` DateTimeOperand
              - …
          - `start` Operand, required
            - `boolean` boolean
            - `decimal` number, double
            - `integer` integer
            - `string` string
            - `array` ArrayOperand
              - …
            - `map` MapOperand
            - `device` DeviceOperand
              - …
            - `location` LocationOperand
              - …
            - `date` DateOperand
              - …
            - `time` TimeOperand: TimeOperand is restricted to returning a value between 0 and 86399 seconds. This means that adding an offset that potentially drives the integer value outside the range of [0..86399] will cause an adjustment to bring the value back in that range
              - …
            - `datetime` DateTimeOperand
              - …
          - `end` Operand, required
            - `boolean` boolean
            - `decimal` number, double
            - `integer` integer
            - `string` string
            - `array` ArrayOperand
              - …
            - `map` MapOperand
            - `device` DeviceOperand
              - …
            - `location` LocationOperand
              - …
            - `date` DateOperand
              - …
            - `time` TimeOperand: TimeOperand is restricted to returning a value between 0 and 86399 seconds. This means that adding an offset that potentially drives the integer value outside the range of [0..86399] will cause an adjustment to bring the value back in that range
              - …
            - `datetime` DateTimeOperand
              - …
          - `aggregation` 'Any' | 'All'
          - `changesOnly` boolean: Determines whether or not to track the evaluation state of the operation it contains, trigger the condition when the state of the inner operation transitions from false to true. Default is false.
        - `changes` ChangesCondition: A condition that returns true when its evaluation resolves to true and the previous evaluation resolved to false.
          - `and` Condition[]
          - `or` Condition[]
          - `not` Condition (recursive)
          - `equals` EqualsCondition
            - `left` Operand, required
              - …
            - `right` Operand, required
              - …
            - `aggregation` 'Any' | 'All'
            - `changesOnly` boolean: Determines whether or not to track the evaluation state of the operation it contains, trigger the condition when the state of the inner operation transitions from false to true. Default is false.
          - `greaterThan` GreaterThanCondition
            - `left` Operand, required
              - …
            - `right` Operand, required
              - …
            - `aggregation` 'Any' | 'All'
            - `changesOnly` boolean: Determines whether or not to track the evaluation state of the operation it contains, trigger the condition when the state of the inner operation transitions from false to true. Default is false.
          - `greaterThanOrEquals` GreaterThanOrEqualsCondition
            - `left` Operand, required
              - …
            - `right` Operand, required
              - …
            - `aggregation` 'Any' | 'All'
            - `changesOnly` boolean: Determines whether or not to track the evaluation state of the operation it contains, trigger the condition when the state of the inner operation transitions from false to true. Default is false.
          - `lessThan` LessThanCondition
            - `left` Operand, required
              - …
            - `right` Operand, required
              - …
            - `aggregation` 'Any' | 'All'
            - `changesOnly` boolean: Determines whether or not to track the evaluation state of the operation it contains, trigger the condition when the state of the inner operation transitions from false to true. Default is false.
          - `lessThanOrEquals` LessThanOrEqualsCondition
            - `left` Operand, required
              - …
            - `right` Operand, required
              - …
            - `aggregation` 'Any' | 'All'
            - `changesOnly` boolean: Determines whether or not to track the evaluation state of the operation it contains, trigger the condition when the state of the inner operation transitions from false to true. Default is false.
          - `between` BetweenCondition
            - `value` Operand, required
              - …
            - `start` Operand, required
              - …
            - `end` Operand, required
              - …
            - `aggregation` 'Any' | 'All'
            - `changesOnly` boolean: Determines whether or not to track the evaluation state of the operation it contains, trigger the condition when the state of the inner operation transitions from false to true. Default is false.
          - `id` string, ^(?:([0-9a-fA-F]{32})|([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}))$, required: Unique id for the condition
          - `operand` Operand
            - `boolean` boolean
            - `decimal` number, double
            - `integer` integer
            - `string` string
            - `array` ArrayOperand
              - …
            - `map` MapOperand
            - `device` DeviceOperand
              - …
            - `location` LocationOperand
              - …
            - `date` DateOperand
              - …
            - `time` TimeOperand: TimeOperand is restricted to returning a value between 0 and 86399 seconds. This means that adding an offset that potentially drives the integer value outside the range of [0..86399] will cause an adjustment to bring the value back in that range
              - …
            - `datetime` DateTimeOperand
              - …
        - `remains` RemainsCondition: A condition that returns true if its evaluation is true after the specified duration.
          - `and` Condition[]
          - `or` Condition[]
          - `not` Condition (recursive)
          - `equals` EqualsCondition
            - `left` Operand, required
              - …
            - `right` Operand, required
              - …
            - `aggregation` 'Any' | 'All'
            - `changesOnly` boolean: Determines whether or not to track the evaluation state of the operation it contains, trigger the condition when the state of the inner operation transitions from false to true. Default is false.
          - `greaterThan` GreaterThanCondition
            - `left` Operand, required
              - …
            - `right` Operand, required
              - …
            - `aggregation` 'Any' | 'All'
            - `changesOnly` boolean: Determines whether or not to track the evaluation state of the operation it contains, trigger the condition when the state of the inner operation transitions from false to true. Default is false.
          - `greaterThanOrEquals` GreaterThanOrEqualsCondition
            - `left` Operand, required
              - …
            - `right` Operand, required
              - …
            - `aggregation` 'Any' | 'All'
            - `changesOnly` boolean: Determines whether or not to track the evaluation state of the operation it contains, trigger the condition when the state of the inner operation transitions from false to true. Default is false.
          - `lessThan` LessThanCondition
            - `left` Operand, required
              - …
            - `right` Operand, required
              - …
            - `aggregation` 'Any' | 'All'
            - `changesOnly` boolean: Determines whether or not to track the evaluation state of the operation it contains, trigger the condition when the state of the inner operation transitions from false to true. Default is false.
          - `lessThanOrEquals` LessThanOrEqualsCondition
            - `left` Operand, required
              - …
            - `right` Operand, required
              - …
            - `aggregation` 'Any' | 'All'
            - `changesOnly` boolean: Determines whether or not to track the evaluation state of the operation it contains, trigger the condition when the state of the inner operation transitions from false to true. Default is false.
          - `between` BetweenCondition
            - `value` Operand, required
              - …
            - `start` Operand, required
              - …
            - `end` Operand, required
              - …
            - `aggregation` 'Any' | 'All'
            - `changesOnly` boolean: Determines whether or not to track the evaluation state of the operation it contains, trigger the condition when the state of the inner operation transitions from false to true. Default is false.
          - `id` string, ^(?:([0-9a-fA-F]{32})|([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}))$, required: Unique id for the condition
          - `operand` Operand
            - `boolean` boolean
            - `decimal` number, double
            - `integer` integer
            - `string` string
            - `array` ArrayOperand
              - …
            - `map` MapOperand
            - `device` DeviceOperand
              - …
            - `location` LocationOperand
              - …
            - `date` DateOperand
              - …
            - `time` TimeOperand: TimeOperand is restricted to returning a value between 0 and 86399 seconds. This means that adding an offset that potentially drives the integer value outside the range of [0..86399] will cause an adjustment to bring the value back in that range
              - …
            - `datetime` DateTimeOperand
              - …
          - `duration` Interval, required
            - `value` Operand, required
              - …
            - `unit` 'Second' | 'Minute' | 'Hour' | 'Day' | 'Week' | 'Month' | 'Year', required
          - `latching` boolean: Determines whether the condition should return true in subsequent executions after initially satisfied. Default is false.
        - `was` WasCondition: A condition that returns true if its evaluation would return true within the specified duration.
          - `and` Condition[]
          - `or` Condition[]
          - `not` Condition (recursive)
          - `equals` EqualsCondition
            - `left` Operand, required
              - …
            - `right` Operand, required
              - …
            - `aggregation` 'Any' | 'All'
            - `changesOnly` boolean: Determines whether or not to track the evaluation state of the operation it contains, trigger the condition when the state of the inner operation transitions from false to true. Default is false.
          - `greaterThan` GreaterThanCondition
            - `left` Operand, required
              - …
            - `right` Operand, required
              - …
            - `aggregation` 'Any' | 'All'
            - `changesOnly` boolean: Determines whether or not to track the evaluation state of the operation it contains, trigger the condition when the state of the inner operation transitions from false to true. Default is false.
          - `greaterThanOrEquals` GreaterThanOrEqualsCondition
            - `left` Operand, required
              - …
            - `right` Operand, required
              - …
            - `aggregation` 'Any' | 'All'
            - `changesOnly` boolean: Determines whether or not to track the evaluation state of the operation it contains, trigger the condition when the state of the inner operation transitions from false to true. Default is false.
          - `lessThan` LessThanCondition
            - `left` Operand, required
              - …
            - `right` Operand, required
              - …
            - `aggregation` 'Any' | 'All'
            - `changesOnly` boolean: Determines whether or not to track the evaluation state of the operation it contains, trigger the condition when the state of the inner operation transitions from false to true. Default is false.
          - `lessThanOrEquals` LessThanOrEqualsCondition
            - `left` Operand, required
              - …
            - `right` Operand, required
              - …
            - `aggregation` 'Any' | 'All'
            - `changesOnly` boolean: Determines whether or not to track the evaluation state of the operation it contains, trigger the condition when the state of the inner operation transitions from false to true. Default is false.
          - `between` BetweenCondition
            - `value` Operand, required
              - …
            - `start` Operand, required
              - …
            - `end` Operand, required
              - …
            - `aggregation` 'Any' | 'All'
            - `changesOnly` boolean: Determines whether or not to track the evaluation state of the operation it contains, trigger the condition when the state of the inner operation transitions from false to true. Default is false.
          - `id` string, ^(?:([0-9a-fA-F]{32})|([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}))$, required: Unique id for the condition
          - `duration` Interval, required
            - `value` Operand, required
              - …
            - `unit` 'Second' | 'Minute' | 'Hour' | 'Day' | 'Week' | 'Month' | 'Year', required
          - `operand` Operand
            - `boolean` boolean
            - `decimal` number, double
            - `integer` integer
            - `string` string
            - `array` ArrayOperand
              - …
            - `map` MapOperand
            - `device` DeviceOperand
              - …
            - `location` LocationOperand
              - …
            - `date` DateOperand
              - …
            - `time` TimeOperand: TimeOperand is restricted to returning a value between 0 and 86399 seconds. This means that adding an offset that potentially drives the integer value outside the range of [0..86399] will cause an adjustment to bring the value back in that range
              - …
            - `datetime` DateTimeOperand
              - …
      - `equals` EqualsCondition
        - `left` Operand, required
          - `boolean` boolean
          - `decimal` number, double
          - `integer` integer
          - `string` string
          - `array` ArrayOperand
            - `operands` Operand[], required
            - `aggregation` 'None'
          - `map` MapOperand
          - `device` DeviceOperand
            - `devices` string[], required
            - `component` string, required
            - `capability` string, required
            - `attribute` string, required
            - `path` string
            - `aggregation` 'None'
            - `trigger` 'Auto' | 'Always' | 'Never'
          - `location` LocationOperand
            - `locationId` string, ^(?:([0-9a-fA-F]{32})|([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}))$: Required for User level rule, optional for Location level in request. Will always be present in response for both.
            - `postalCode` string: Only valid for the attribute 'WeatherAlertSeverity'
            - `attribute` 'FineDust' | 'FineDustIndex' | 'Humidity' | 'Mode' | 'Security' | 'Temperature' | 'TemperatureC' | 'TemperatureF' | 'UltraFineDust' | 'UltraFineDustIndex' | 'Weather' | 'WeatherAlertSeverity', required
            - `trigger` 'Auto' | 'Always' | 'Never'
          - `date` DateOperand
            - `timeZoneId` string: A java time zone ID reference
            - `daysOfWeek` DayOfWeek[]
            - `year` integer
            - `month` integer
            - `day` integer
            - `reference` 'Today' | 'Holiday'
          - `time` TimeOperand: TimeOperand is restricted to returning a value between 0 and 86399 seconds. This means that adding an offset that potentially drives the integer value outside the range of [0..86399] will cause an adjustment to bring the value back in that range
            - `timeZoneId` string: A java time zone ID reference
            - `daysOfWeek` DayOfWeek[]
            - `reference` 'Now' | 'Midnight' | 'Sunrise' | 'Noon' | 'Sunset', required
            - `offset` Interval
              - …
          - `datetime` DateTimeOperand
            - `timeZoneId` string: A java time zone ID reference
            - `locationId` string, ^(?:([0-9a-fA-F]{32})|([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}))$: Location ID for location actions
            - `daysOfWeek` DayOfWeek[]
            - `year` integer
            - `month` integer
            - `day` integer
            - `reference` 'Now' | 'Midnight' | 'Sunrise' | 'Noon' | 'Sunset', required
            - `offset` Interval
              - …
        - `right` Operand, required
          - `boolean` boolean
          - `decimal` number, double
          - `integer` integer
          - `string` string
          - `array` ArrayOperand
            - `operands` Operand[], required
            - `aggregation` 'None'
          - `map` MapOperand
          - `device` DeviceOperand
            - `devices` string[], required
            - `component` string, required
            - `capability` string, required
            - `attribute` string, required
            - `path` string
            - `aggregation` 'None'
            - `trigger` 'Auto' | 'Always' | 'Never'
          - `location` LocationOperand
            - `locationId` string, ^(?:([0-9a-fA-F]{32})|([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}))$: Required for User level rule, optional for Location level in request. Will always be present in response for both.
            - `postalCode` string: Only valid for the attribute 'WeatherAlertSeverity'
            - `attribute` 'FineDust' | 'FineDustIndex' | 'Humidity' | 'Mode' | 'Security' | 'Temperature' | 'TemperatureC' | 'TemperatureF' | 'UltraFineDust' | 'UltraFineDustIndex' | 'Weather' | 'WeatherAlertSeverity', required
            - `trigger` 'Auto' | 'Always' | 'Never'
          - `date` DateOperand
            - `timeZoneId` string: A java time zone ID reference
            - `daysOfWeek` DayOfWeek[]
            - `year` integer
            - `month` integer
            - `day` integer
            - `reference` 'Today' | 'Holiday'
          - `time` TimeOperand: TimeOperand is restricted to returning a value between 0 and 86399 seconds. This means that adding an offset that potentially drives the integer value outside the range of [0..86399] will cause an adjustment to bring the value back in that range
            - `timeZoneId` string: A java time zone ID reference
            - `daysOfWeek` DayOfWeek[]
            - `reference` 'Now' | 'Midnight' | 'Sunrise' | 'Noon' | 'Sunset', required
            - `offset` Interval
              - …
          - `datetime` DateTimeOperand
            - `timeZoneId` string: A java time zone ID reference
            - `locationId` string, ^(?:([0-9a-fA-F]{32})|([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}))$: Location ID for location actions
            - `daysOfWeek` DayOfWeek[]
            - `year` integer
            - `month` integer
            - `day` integer
            - `reference` 'Now' | 'Midnight' | 'Sunrise' | 'Noon' | 'Sunset', required
            - `offset` Interval
              - …
        - `aggregation` 'Any' | 'All'
        - `changesOnly` boolean: Determines whether or not to track the evaluation state of the operation it contains, trigger the condition when the state of the inner operation transitions from false to true. Default is false.
      - `greaterThan` GreaterThanCondition
        - `left` Operand, required
          - `boolean` boolean
          - `decimal` number, double
          - `integer` integer
          - `string` string
          - `array` ArrayOperand
            - `operands` Operand[], required
            - `aggregation` 'None'
          - `map` MapOperand
          - `device` DeviceOperand
            - `devices` string[], required
            - `component` string, required
            - `capability` string, required
            - `attribute` string, required
            - `path` string
            - `aggregation` 'None'
            - `trigger` 'Auto' | 'Always' | 'Never'
          - `location` LocationOperand
            - `locationId` string, ^(?:([0-9a-fA-F]{32})|([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}))$: Required for User level rule, optional for Location level in request. Will always be present in response for both.
            - `postalCode` string: Only valid for the attribute 'WeatherAlertSeverity'
            - `attribute` 'FineDust' | 'FineDustIndex' | 'Humidity' | 'Mode' | 'Security' | 'Temperature' | 'TemperatureC' | 'TemperatureF' | 'UltraFineDust' | 'UltraFineDustIndex' | 'Weather' | 'WeatherAlertSeverity', required
            - `trigger` 'Auto' | 'Always' | 'Never'
          - `date` DateOperand
            - `timeZoneId` string: A java time zone ID reference
            - `daysOfWeek` DayOfWeek[]
            - `year` integer
            - `month` integer
            - `day` integer
            - `reference` 'Today' | 'Holiday'
          - `time` TimeOperand: TimeOperand is restricted to returning a value between 0 and 86399 seconds. This means that adding an offset that potentially drives the integer value outside the range of [0..86399] will cause an adjustment to bring the value back in that range
            - `timeZoneId` string: A java time zone ID reference
            - `daysOfWeek` DayOfWeek[]
            - `reference` 'Now' | 'Midnight' | 'Sunrise' | 'Noon' | 'Sunset', required
            - `offset` Interval
              - …
          - `datetime` DateTimeOperand
            - `timeZoneId` string: A java time zone ID reference
            - `locationId` string, ^(?:([0-9a-fA-F]{32})|([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}))$: Location ID for location actions
            - `daysOfWeek` DayOfWeek[]
            - `year` integer
            - `month` integer
            - `day` integer
            - `reference` 'Now' | 'Midnight' | 'Sunrise' | 'Noon' | 'Sunset', required
            - `offset` Interval
              - …
        - `right` Operand, required
          - `boolean` boolean
          - `decimal` number, double
          - `integer` integer
          - `string` string
          - `array` ArrayOperand
            - `operands` Operand[], required
            - `aggregation` 'None'
          - `map` MapOperand
          - `device` DeviceOperand
            - `devices` string[], required
            - `component` string, required
            - `capability` string, required
            - `attribute` string, required
            - `path` string
            - `aggregation` 'None'
            - `trigger` 'Auto' | 'Always' | 'Never'
          - `location` LocationOperand
            - `locationId` string, ^(?:([0-9a-fA-F]{32})|([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}))$: Required for User level rule, optional for Location level in request. Will always be present in response for both.
            - `postalCode` string: Only valid for the attribute 'WeatherAlertSeverity'
            - `attribute` 'FineDust' | 'FineDustIndex' | 'Humidity' | 'Mode' | 'Security' | 'Temperature' | 'TemperatureC' | 'TemperatureF' | 'UltraFineDust' | 'UltraFineDustIndex' | 'Weather' | 'WeatherAlertSeverity', required
            - `trigger` 'Auto' | 'Always' | 'Never'
          - `date` DateOperand
            - `timeZoneId` string: A java time zone ID reference
            - `daysOfWeek` DayOfWeek[]
            - `year` integer
            - `month` integer
            - `day` integer
            - `reference` 'Today' | 'Holiday'
          - `time` TimeOperand: TimeOperand is restricted to returning a value between 0 and 86399 seconds. This means that adding an offset that potentially drives the integer value outside the range of [0..86399] will cause an adjustment to bring the value back in that range
            - `timeZoneId` string: A java time zone ID reference
            - `daysOfWeek` DayOfWeek[]
            - `reference` 'Now' | 'Midnight' | 'Sunrise' | 'Noon' | 'Sunset', required
            - `offset` Interval
              - …
          - `datetime` DateTimeOperand
            - `timeZoneId` string: A java time zone ID reference
            - `locationId` string, ^(?:([0-9a-fA-F]{32})|([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}))$: Location ID for location actions
            - `daysOfWeek` DayOfWeek[]
            - `year` integer
            - `month` integer
            - `day` integer
            - `reference` 'Now' | 'Midnight' | 'Sunrise' | 'Noon' | 'Sunset', required
            - `offset` Interval
              - …
        - `aggregation` 'Any' | 'All'
        - `changesOnly` boolean: Determines whether or not to track the evaluation state of the operation it contains, trigger the condition when the state of the inner operation transitions from false to true. Default is false.
      - `greaterThanOrEquals` GreaterThanOrEqualsCondition
        - `left` Operand, required
          - `boolean` boolean
          - `decimal` number, double
          - `integer` integer
          - `string` string
          - `array` ArrayOperand
            - `operands` Operand[], required
            - `aggregation` 'None'
          - `map` MapOperand
          - `device` DeviceOperand
            - `devices` string[], required
            - `component` string, required
            - `capability` string, required
            - `attribute` string, required
            - `path` string
            - `aggregation` 'None'
            - `trigger` 'Auto' | 'Always' | 'Never'
          - `location` LocationOperand
            - `locationId` string, ^(?:([0-9a-fA-F]{32})|([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}))$: Required for User level rule, optional for Location level in request. Will always be present in response for both.
            - `postalCode` string: Only valid for the attribute 'WeatherAlertSeverity'
            - `attribute` 'FineDust' | 'FineDustIndex' | 'Humidity' | 'Mode' | 'Security' | 'Temperature' | 'TemperatureC' | 'TemperatureF' | 'UltraFineDust' | 'UltraFineDustIndex' | 'Weather' | 'WeatherAlertSeverity', required
            - `trigger` 'Auto' | 'Always' | 'Never'
          - `date` DateOperand
            - `timeZoneId` string: A java time zone ID reference
            - `daysOfWeek` DayOfWeek[]
            - `year` integer
            - `month` integer
            - `day` integer
            - `reference` 'Today' | 'Holiday'
          - `time` TimeOperand: TimeOperand is restricted to returning a value between 0 and 86399 seconds. This means that adding an offset that potentially drives the integer value outside the range of [0..86399] will cause an adjustment to bring the value back in that range
            - `timeZoneId` string: A java time zone ID reference
            - `daysOfWeek` DayOfWeek[]
            - `reference` 'Now' | 'Midnight' | 'Sunrise' | 'Noon' | 'Sunset', required
            - `offset` Interval
              - …
          - `datetime` DateTimeOperand
            - `timeZoneId` string: A java time zone ID reference
            - `locationId` string, ^(?:([0-9a-fA-F]{32})|([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}))$: Location ID for location actions
            - `daysOfWeek` DayOfWeek[]
            - `year` integer
            - `month` integer
            - `day` integer
            - `reference` 'Now' | 'Midnight' | 'Sunrise' | 'Noon' | 'Sunset', required
            - `offset` Interval
              - …
        - `right` Operand, required
          - `boolean` boolean
          - `decimal` number, double
          - `integer` integer
          - `string` string
          - `array` ArrayOperand
            - `operands` Operand[], required
            - `aggregation` 'None'
          - `map` MapOperand
          - `device` DeviceOperand
            - `devices` string[], required
            - `component` string, required
- … truncated; see the full OpenAPI document linked below

## Response `200`

The created Rule

- Rule
  - `name` string, required: The name for the Rule. Limit 100 characters.
  - `actions` Action[], required
    - `if` IfAction
      - `and` Condition[]
        - `and` Condition[]
        - `or` Condition[]
        - `not` Condition (recursive)
        - `equals` EqualsCondition
          - `left` Operand, required
            - `boolean` boolean
            - `decimal` number, double
            - `integer` integer
            - `string` string
            - `array` ArrayOperand
              - …
            - `map` MapOperand
            - `device` DeviceOperand
              - …
            - `location` LocationOperand
              - …
            - `date` DateOperand
              - …
            - `time` TimeOperand: TimeOperand is restricted to returning a value between 0 and 86399 seconds. This means that adding an offset that potentially drives the integer value outside the range of [0..86399] will cause an adjustment to bring the value back in that range
              - …
            - `datetime` DateTimeOperand
              - …
          - `right` Operand, required
            - `boolean` boolean
            - `decimal` number, double
            - `integer` integer
            - `string` string
            - `array` ArrayOperand
              - …
            - `map` MapOperand
            - `device` DeviceOperand
              - …
            - `location` LocationOperand
              - …
            - `date` DateOperand
              - …
            - `time` TimeOperand: TimeOperand is restricted to returning a value between 0 and 86399 seconds. This means that adding an offset that potentially drives the integer value outside the range of [0..86399] will cause an adjustment to bring the value back in that range
              - …
            - `datetime` DateTimeOperand
              - …
          - `aggregation` 'Any' | 'All'
          - `changesOnly` boolean: Determines whether or not to track the evaluation state of the operation it contains, trigger the condition when the state of the inner operation transitions from false to true. Default is false.
        - `greaterThan` GreaterThanCondition
          - `left` Operand, required
            - `boolean` boolean
            - `decimal` number, double
            - `integer` integer
            - `string` string
            - `array` ArrayOperand
              - …
            - `map` MapOperand
            - `device` DeviceOperand
              - …
            - `location` LocationOperand
              - …
            - `date` DateOperand
              - …
            - `time` TimeOperand: TimeOperand is restricted to returning a value between 0 and 86399 seconds. This means that adding an offset that potentially drives the integer value outside the range of [0..86399] will cause an adjustment to bring the value back in that range
              - …
            - `datetime` DateTimeOperand
              - …
          - `right` Operand, required
            - `boolean` boolean
            - `decimal` number, double
            - `integer` integer
            - `string` string
            - `array` ArrayOperand
              - …
            - `map` MapOperand
            - `device` DeviceOperand
              - …
            - `location` LocationOperand
              - …
            - `date` DateOperand
              - …
            - `time` TimeOperand: TimeOperand is restricted to returning a value between 0 and 86399 seconds. This means that adding an offset that potentially drives the integer value outside the range of [0..86399] will cause an adjustment to bring the value back in that range
              - …
            - `datetime` DateTimeOperand
              - …
          - `aggregation` 'Any' | 'All'
          - `changesOnly` boolean: Determines whether or not to track the evaluation state of the operation it contains, trigger the condition when the state of the inner operation transitions from false to true. Default is false.
        - `greaterThanOrEquals` GreaterThanOrEqualsCondition
          - `left` Operand, required
            - `boolean` boolean
            - `decimal` number, double
            - `integer` integer
            - `string` string
            - `array` ArrayOperand
              - …
            - `map` MapOperand
            - `device` DeviceOperand
              - …
            - `location` LocationOperand
              - …
            - `date` DateOperand
              - …
            - `time` TimeOperand: TimeOperand is restricted to returning a value between 0 and 86399 seconds. This means that adding an offset that potentially drives the integer value outside the range of [0..86399] will cause an adjustment to bring the value back in that range
              - …
            - `datetime` DateTimeOperand
              - …
          - `right` Operand, required
            - `boolean` boolean
            - `decimal` number, double
            - `integer` integer
            - `string` string
            - `array` ArrayOperand
              - …
            - `map` MapOperand
            - `device` DeviceOperand
              - …
            - `location` LocationOperand
              - …
            - `date` DateOperand
              - …
            - `time` TimeOperand: TimeOperand is restricted to returning a value between 0 and 86399 seconds. This means that adding an offset that potentially drives the integer value outside the range of [0..86399] will cause an adjustment to bring the value back in that range
              - …
            - `datetime` DateTimeOperand
              - …
          - `aggregation` 'Any' | 'All'
          - `changesOnly` boolean: Determines whether or not to track the evaluation state of the operation it contains, trigger the condition when the state of the inner operation transitions from false to true. Default is false.
        - `lessThan` LessThanCondition
          - `left` Operand, required
            - `boolean` boolean
            - `decimal` number, double
            - `integer` integer
            - `string` string
            - `array` ArrayOperand
              - …
            - `map` MapOperand
            - `device` DeviceOperand
              - …
            - `location` LocationOperand
              - …
            - `date` DateOperand
              - …
            - `time` TimeOperand: TimeOperand is restricted to returning a value between 0 and 86399 seconds. This means that adding an offset that potentially drives the integer value outside the range of [0..86399] will cause an adjustment to bring the value back in that range
              - …
            - `datetime` DateTimeOperand
              - …
          - `right` Operand, required
            - `boolean` boolean
            - `decimal` number, double
            - `integer` integer
            - `string` string
            - `array` ArrayOperand
              - …
            - `map` MapOperand
            - `device` DeviceOperand
              - …
            - `location` LocationOperand
              - …
            - `date` DateOperand
              - …
            - `time` TimeOperand: TimeOperand is restricted to returning a value between 0 and 86399 seconds. This means that adding an offset that potentially drives the integer value outside the range of [0..86399] will cause an adjustment to bring the value back in that range
              - …
            - `datetime` DateTimeOperand
              - …
          - `aggregation` 'Any' | 'All'
          - `changesOnly` boolean: Determines whether or not to track the evaluation state of the operation it contains, trigger the condition when the state of the inner operation transitions from false to true. Default is false.
        - `lessThanOrEquals` LessThanOrEqualsCondition
          - `left` Operand, required
            - `boolean` boolean
            - `decimal` number, double
            - `integer` integer
            - `string` string
            - `array` ArrayOperand
              - …
            - `map` MapOperand
            - `device` DeviceOperand
              - …
            - `location` LocationOperand
              - …
            - `date` DateOperand
              - …
            - `time` TimeOperand: TimeOperand is restricted to returning a value between 0 and 86399 seconds. This means that adding an offset that potentially drives the integer value outside the range of [0..86399] will cause an adjustment to bring the value back in that range
              - …
            - `datetime` DateTimeOperand
              - …
          - `right` Operand, required
            - `boolean` boolean
            - `decimal` number, double
            - `integer` integer
            - `string` string
            - `array` ArrayOperand
              - …
            - `map` MapOperand
            - `device` DeviceOperand
              - …
            - `location` LocationOperand
              - …
            - `date` DateOperand
              - …
            - `time` TimeOperand: TimeOperand is restricted to returning a value between 0 and 86399 seconds. This means that adding an offset that potentially drives the integer value outside the range of [0..86399] will cause an adjustment to bring the value back in that range
              - …
            - `datetime` DateTimeOperand
              - …
          - `aggregation` 'Any' | 'All'
          - `changesOnly` boolean: Determines whether or not to track the evaluation state of the operation it contains, trigger the condition when the state of the inner operation transitions from false to true. Default is false.
        - `between` BetweenCondition
          - `value` Operand, required
            - `boolean` boolean
            - `decimal` number, double
            - `integer` integer
            - `string` string
            - `array` ArrayOperand
              - …
            - `map` MapOperand
            - `device` DeviceOperand
              - …
            - `location` LocationOperand
              - …
            - `date` DateOperand
              - …
            - `time` TimeOperand: TimeOperand is restricted to returning a value between 0 and 86399 seconds. This means that adding an offset that potentially drives the integer value outside the range of [0..86399] will cause an adjustment to bring the value back in that range
              - …
            - `datetime` DateTimeOperand
              - …
          - `start` Operand, required
            - `boolean` boolean
            - `decimal` number, double
            - `integer` integer
            - `string` string
            - `array` ArrayOperand
              - …
            - `map` MapOperand
            - `device` DeviceOperand
              - …
            - `location` LocationOperand
              - …
            - `date` DateOperand
              - …
            - `time` TimeOperand: TimeOperand is restricted to returning a value between 0 and 86399 seconds. This means that adding an offset that potentially drives the integer value outside the range of [0..86399] will cause an adjustment to bring the value back in that range
              - …
            - `datetime` DateTimeOperand
              - …
          - `end` Operand, required
            - `boolean` boolean
            - `decimal` number, double
            - `integer` integer
            - `string` string
            - `array` ArrayOperand
              - …
            - `map` MapOperand
            - `device` DeviceOperand
              - …
            - `location` LocationOperand
              - …
            - `date` DateOperand
              - …
            - `time` TimeOperand: TimeOperand is restricted to returning a value between 0 and 86399 seconds. This means that adding an offset that potentially drives the integer value outside the range of [0..86399] will cause an adjustment to bring the value back in that range
              - …
            - `datetime` DateTimeOperand
              - …
          - `aggregation` 'Any' | 'All'
          - `changesOnly` boolean: Determines whether or not to track the evaluation state of the operation it contains, trigger the condition when the state of the inner operation transitions from false to true. Default is false.
        - `changes` ChangesCondition: A condition that returns true when its evaluation resolves to true and the previous evaluation resolved to false.
          - `and` Condition[]
          - `or` Condition[]
          - `not` Condition (recursive)
          - `equals` EqualsCondition
            - `left` Operand, required
              - …
            - `right` Operand, required
              - …
            - `aggregation` 'Any' | 'All'
            - `changesOnly` boolean: Determines whether or not to track the evaluation state of the operation it contains, trigger the condition when the state of the inner operation transitions from false to true. Default is false.
          - `greaterThan` GreaterThanCondition
            - `left` Operand, required
              - …
            - `right` Operand, required
              - …
            - `aggregation` 'Any' | 'All'
            - `changesOnly` boolean: Determines whether or not to track the evaluation state of the operation it contains, trigger the condition when the state of the inner operation transitions from false to true. Default is false.
          - `greaterThanOrEquals` GreaterThanOrEqualsCondition
            - `left` Operand, required
              - …
            - `right` Operand, required
              - …
            - `aggregation` 'Any' | 'All'
            - `changesOnly` boolean: Determines whether or not to track the evaluation state of the operation it contains, trigger the condition when the state of the inner operation transitions from false to true. Default is false.
          - `lessThan` LessThanCondition
            - `left` Operand, required
              - …
            - `right` Operand, required
              - …
            - `aggregation` 'Any' | 'All'
            - `changesOnly` boolean: Determines whether or not to track the evaluation state of the operation it contains, trigger the condition when the state of the inner operation transitions from false to true. Default is false.
          - `lessThanOrEquals` LessThanOrEqualsCondition
            - `left` Operand, required
              - …
            - `right` Operand, required
              - …
            - `aggregation` 'Any' | 'All'
            - `changesOnly` boolean: Determines whether or not to track the evaluation state of the operation it contains, trigger the condition when the state of the inner operation transitions from false to true. Default is false.
          - `between` BetweenCondition
            - `value` Operand, required
              - …
            - `start` Operand, required
              - …
            - `end` Operand, required
              - …
            - `aggregation` 'Any' | 'All'
            - `changesOnly` boolean: Determines whether or not to track the evaluation state of the operation it contains, trigger the condition when the state of the inner operation transitions from false to true. Default is false.
          - `id` string, ^(?:([0-9a-fA-F]{32})|([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}))$, required: Unique id for the condition
          - `operand` Operand
            - `boolean` boolean
            - `decimal` number, double
            - `integer` integer
            - `string` string
            - `array` ArrayOperand
              - …
            - `map` MapOperand
            - `device` DeviceOperand
              - …
            - `location` LocationOperand
              - …
            - `date` DateOperand
              - …
            - `time` TimeOperand: TimeOperand is restricted to returning a value between 0 and 86399 seconds. This means that adding an offset that potentially drives the integer value outside the range of [0..86399] will cause an adjustment to bring the value back in that range
              - …
            - `datetime` DateTimeOperand
              - …
        - `remains` RemainsCondition: A condition that returns true if its evaluation is true after the specified duration.
          - `and` Condition[]
          - `or` Condition[]
          - `not` Condition (recursive)
          - `equals` EqualsCondition
            - `left` Operand, required
              - …
            - `right` Operand, required
              - …
            - `aggregation` 'Any' | 'All'
            - `changesOnly` boolean: Determines whether or not to track the evaluation state of the operation it contains, trigger the condition when the state of the inner operation transitions from false to true. Default is false.
          - `greaterThan` GreaterThanCondition
            - `left` Operand, required
              - …
            - `right` Operand, required
              - …
            - `aggregation` 'Any' | 'All'
            - `changesOnly` boolean: Determines whether or not to track the evaluation state of the operation it contains, trigger the condition when the state of the inner operation transitions from false to true. Default is false.
          - `greaterThanOrEquals` GreaterThanOrEqualsCondition
            - `left` Operand, required
              - …
            - `right` Operand, required
              - …
            - `aggregation` 'Any' | 'All'
            - `changesOnly` boolean: Determines whether or not to track the evaluation state of the operation it contains, trigger the condition when the state of the inner operation transitions from false to true. Default is false.
          - `lessThan` LessThanCondition
            - `left` Operand, required
              - …
            - `right` Operand, required
              - …
            - `aggregation` 'Any' | 'All'
            - `changesOnly` boolean: Determines whether or not to track the evaluation state of the operation it contains, trigger the condition when the state of the inner operation transitions from false to true. Default is false.
          - `lessThanOrEquals` LessThanOrEqualsCondition
            - `left` Operand, required
              - …
            - `right` Operand, required
              - …
            - `aggregation` 'Any' | 'All'
            - `changesOnly` boolean: Determines whether or not to track the evaluation state of the operation it contains, trigger the condition when the state of the inner operation transitions from false to true. Default is false.
          - `between` BetweenCondition
            - `value` Operand, required
              - …
            - `start` Operand, required
              - …
            - `end` Operand, required
              - …
            - `aggregation` 'Any' | 'All'
            - `changesOnly` boolean: Determines whether or not to track the evaluation state of the operation it contains, trigger the condition when the state of the inner operation transitions from false to true. Default is false.
          - `id` string, ^(?:([0-9a-fA-F]{32})|([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}))$, required: Unique id for the condition
          - `operand` Operand
            - `boolean` boolean
            - `decimal` number, double
            - `integer` integer
            - `string` string
            - `array` ArrayOperand
              - …
            - `map` MapOperand
            - `device` DeviceOperand
              - …
            - `location` LocationOperand
              - …
            - `date` DateOperand
              - …
            - `time` TimeOperand: TimeOperand is restricted to returning a value between 0 and 86399 seconds. This means that adding an offset that potentially drives the integer value outside the range of [0..86399] will cause an adjustment to bring the value back in that range
              - …
            - `datetime` DateTimeOperand
              - …
          - `duration` Interval, required
            - `value` Operand, required
              - …
            - `unit` 'Second' | 'Minute' | 'Hour' | 'Day' | 'Week' | 'Month' | 'Year', required
          - `latching` boolean: Determines whether the condition should return true in subsequent executions after initially satisfied. Default is false.
        - `was` WasCondition: A condition that returns true if its evaluation would return true within the specified duration.
          - `and` Condition[]
          - `or` Condition[]
          - `not` Condition (recursive)
          - `equals` EqualsCondition
            - `left` Operand, required
              - …
            - `right` Operand, required
              - …
            - `aggregation` 'Any' | 'All'
            - `changesOnly` boolean: Determines whether or not to track the evaluation state of the operation it contains, trigger the condition when the state of the inner operation transitions from false to true. Default is false.
          - `greaterThan` GreaterThanCondition
            - `left` Operand, required
              - …
            - `right` Operand, required
              - …
            - `aggregation` 'Any' | 'All'
            - `changesOnly` boolean: Determines whether or not to track the evaluation state of the operation it contains, trigger the condition when the state of the inner operation transitions from false to true. Default is false.
          - `greaterThanOrEquals` GreaterThanOrEqualsCondition
            - `left` Operand, required
              - …
            - `right` Operand, required
              - …
            - `aggregation` 'Any' | 'All'
            - `changesOnly` boolean: Determines whether or not to track the evaluation state of the operation it contains, trigger the condition when the state of the inner operation transitions from false to true. Default is false.
          - `lessThan` LessThanCondition
            - `left` Operand, required
              - …
            - `right` Operand, required
              - …
            - `aggregation` 'Any' | 'All'
            - `changesOnly` boolean: Determines whether or not to track the evaluation state of the operation it contains, trigger the condition when the state of the inner operation transitions from false to true. Default is false.
          - `lessThanOrEquals` LessThanOrEqualsCondition
            - `left` Operand, required
              - …
            - `right` Operand, required
              - …
            - `aggregation` 'Any' | 'All'
            - `changesOnly` boolean: Determines whether or not to track the evaluation state of the operation it contains, trigger the condition when the state of the inner operation transitions from false to true. Default is false.
          - `between` BetweenCondition
            - `value` Operand, required
              - …
            - `start` Operand, required
              - …
            - `end` Operand, required
              - …
            - `aggregation` 'Any' | 'All'
            - `changesOnly` boolean: Determines whether or not to track the evaluation state of the operation it contains, trigger the condition when the state of the inner operation transitions from false to true. Default is false.
          - `id` string, ^(?:([0-9a-fA-F]{32})|([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}))$, required: Unique id for the condition
          - `duration` Interval, required
            - `value` Operand, required
              - …
            - `unit` 'Second' | 'Minute' | 'Hour' | 'Day' | 'Week' | 'Month' | 'Year', required
          - `operand` Operand
            - `boolean` boolean
            - `decimal` number, double
            - `integer` integer
            - `string` string
            - `array` ArrayOperand
              - …
            - `map` MapOperand
            - `device` DeviceOperand
              - …
            - `location` LocationOperand
              - …
            - `date` DateOperand
              - …
            - `time` TimeOperand: TimeOperand is restricted to returning a value between 0 and 86399 seconds. This means that adding an offset that potentially drives the integer value outside the range of [0..86399] will cause an adjustment to bring the value back in that range
              - …
            - `datetime` DateTimeOperand
              - …
      - `or` Condition[]
        - `and` Condition[]
        - `or` Condition[]
        - `not` Condition (recursive)
        - `equals` EqualsCondition
          - `left` Operand, required
            - `boolean` boolean
            - `decimal` number, double
            - `integer` integer
            - `string` string
            - `array` ArrayOperand
              - …
            - `map` MapOperand
            - `device` DeviceOperand
              - …
            - `location` LocationOperand
              - …
            - `date` DateOperand
              - …
            - `time` TimeOperand: TimeOperand is restricted to returning a value between 0 and 86399 seconds. This means that adding an offset that potentially drives the integer value outside the range of [0..86399] will cause an adjustment to bring the value back in that range
              - …
            - `datetime` DateTimeOperand
              - …
          - `right` Operand, required
            - `boolean` boolean
            - `decimal` number, double
            - `integer` integer
            - `string` string
            - `array` ArrayOperand
              - …
            - `map` MapOperand
            - `device` DeviceOperand
              - …
            - `location` LocationOperand
              - …
            - `date` DateOperand
              - …
            - `time` TimeOperand: TimeOperand is restricted to returning a value between 0 and 86399 seconds. This means that adding an offset that potentially drives the integer value outside the range of [0..86399] will cause an adjustment to bring the value back in that range
              - …
            - `datetime` DateTimeOperand
              - …
          - `aggregation` 'Any' | 'All'
          - `changesOnly` boolean: Determines whether or not to track the evaluation state of the operation it contains, trigger the condition when the state of the inner operation transitions from false to true. Default is false.
        - `greaterThan` GreaterThanCondition
          - `left` Operand, required
            - `boolean` boolean
            - `decimal` number, double
            - `integer` integer
            - `string` string
            - `array` ArrayOperand
              - …
            - `map` MapOperand
            - `device` DeviceOperand
              - …
            - `location` LocationOperand
              - …
            - `date` DateOperand
              - …
            - `time` TimeOperand: TimeOperand is restricted to returning a value between 0 and 86399 seconds. This means that adding an offset that potentially drives the integer value outside the range of [0..86399] will cause an adjustment to bring the value back in that range
              - …
            - `datetime` DateTimeOperand
              - …
          - `right` Operand, required
            - `boolean` boolean
            - `decimal` number, double
            - `integer` integer
            - `string` string
            - `array` ArrayOperand
              - …
            - `map` MapOperand
            - `device` DeviceOperand
              - …
            - `location` LocationOperand
              - …
            - `date` DateOperand
              - …
            - `time` TimeOperand: TimeOperand is restricted to returning a value between 0 and 86399 seconds. This means that adding an offset that potentially drives the integer value outside the range of [0..86399] will cause an adjustment to bring the value back in that range
              - …
            - `datetime` DateTimeOperand
              - …
          - `aggregation` 'Any' | 'All'
          - `changesOnly` boolean: Determines whether or not to track the evaluation state of the operation it contains, trigger the condition when the state of the inner operation transitions from false to true. Default is false.
        - `greaterThanOrEquals` GreaterThanOrEqualsCondition
          - `left` Operand, required
            - `boolean` boolean
            - `decimal` number, double
            - `integer` integer
            - `string` string
            - `array` ArrayOperand
              - …
            - `map` MapOperand
            - `device` DeviceOperand
              - …
            - `location` LocationOperand
              - …
            - `date` DateOperand
              - …
            - `time` TimeOperand: TimeOperand is restricted to returning a value between 0 and 86399 seconds. This means that adding an offset that potentially drives the integer value outside the range of [0..86399] will cause an adjustment to bring the value back in that range
              - …
            - `datetime` DateTimeOperand
              - …
          - `right` Operand, required
            - `boolean` boolean
            - `decimal` number, double
            - `integer` integer
            - `string` string
            - `array` ArrayOperand
              - …
            - `map` MapOperand
            - `device` DeviceOperand
              - …
            - `location` LocationOperand
              - …
            - `date` DateOperand
              - …
            - `time` TimeOperand: TimeOperand is restricted to returning a value between 0 and 86399 seconds. This means that adding an offset that potentially drives the integer value outside the range of [0..86399] will cause an adjustment to bring the value back in that range
              - …
            - `datetime` DateTimeOperand
              - …
          - `aggregation` 'Any' | 'All'
          - `changesOnly` boolean: Determines whether or not to track the evaluation state of the operation it contains, trigger the condition when the state of the inner operation transitions from false to true. Default is false.
        - `lessThan` LessThanCondition
          - `left` Operand, required
            - `boolean` boolean
            - `decimal` number, double
            - `integer` integer
            - `string` string
            - `array` ArrayOperand
              - …
            - `map` MapOperand
            - `device` DeviceOperand
              - …
            - `location` LocationOperand
              - …
            - `date` DateOperand
              - …
            - `time` TimeOperand: TimeOperand is restricted to returning a value between 0 and 86399 seconds. This means that adding an offset that potentially drives the integer value outside the range of [0..86399] will cause an adjustment to bring the value back in that range
              - …
            - `datetime` DateTimeOperand
              - …
          - `right` Operand, required
            - `boolean` boolean
            - `decimal` number, double
            - `integer` integer
            - `string` string
            - `array` ArrayOperand
              - …
            - `map` MapOperand
            - `device` DeviceOperand
              - …
            - `location` LocationOperand
              - …
            - `date` DateOperand
              - …
            - `time` TimeOperand: TimeOperand is restricted to returning a value between 0 and 86399 seconds. This means that adding an offset that potentially drives the integer value outside the range of [0..86399] will cause an adjustment to bring the value back in that range
              - …
            - `datetime` DateTimeOperand
              - …
          - `aggregation` 'Any' | 'All'
          - `changesOnly` boolean: Determines whether or not to track the evaluation state of the operation it contains, trigger the condition when the state of the inner operation transitions from false to true. Default is false.
        - `lessThanOrEquals` LessThanOrEqualsCondition
          - `left` Operand, required
            - `boolean` boolean
            - `decimal` number, double
            - `integer` integer
            - `string` string
            - `array` ArrayOperand
              - …
            - `map` MapOperand
            - `device` DeviceOperand
              - …
            - `location` LocationOperand
              - …
            - `date` DateOperand
              - …
            - `time` TimeOperand: TimeOperand is restricted to returning a value between 0 and 86399 seconds. This means that adding an offset that potentially drives the integer value outside the range of [0..86399] will cause an adjustment to bring the value back in that range
              - …
            - `datetime` DateTimeOperand
              - …
          - `right` Operand, required
            - `boolean` boolean
            - `decimal` number, double
            - `integer` integer
            - `string` string
            - `array` ArrayOperand
              - …
            - `map` MapOperand
            - `device` DeviceOperand
              - …
            - `location` LocationOperand
              - …
            - `date` DateOperand
              - …
            - `time` TimeOperand: TimeOperand is restricted to returning a value between 0 and 86399 seconds. This means that adding an offset that potentially drives the integer value outside the range of [0..86399] will cause an adjustment to bring the value back in that range
              - …
            - `datetime` DateTimeOperand
              - …
          - `aggregation` 'Any' | 'All'
          - `changesOnly` boolean: Determines whether or not to track the evaluation state of the operation it contains, trigger the condition when the state of the inner operation transitions from false to true. Default is false.
        - `between` BetweenCondition
          - `value` Operand, required
            - `boolean` boolean
            - `decimal` number, double
            - `integer` integer
            - `string` string
            - `array` ArrayOperand
              - …
            - `map` MapOperand
            - `device` DeviceOperand
              - …
            - `location` LocationOperand
              - …
            - `date` DateOperand
              - …
            - `time` TimeOperand: TimeOperand is restricted to returning a value between 0 and 86399 seconds. This means that adding an offset that potentially drives the integer value outside the range of [0..86399] will cause an adjustment to bring the value back in that range
              - …
            - `datetime` DateTimeOperand
              - …
          - `start` Operand, required
            - `boolean` boolean
            - `decimal` number, double
            - `integer` integer
            - `string` string
            - `array` ArrayOperand
              - …
            - `map` MapOperand
            - `device` DeviceOperand
              - …
            - `location` LocationOperand
              - …
            - `date` DateOperand
              - …
            - `time` TimeOperand: TimeOperand is restricted to returning a value between 0 and 86399 seconds. This means that adding an offset that potentially drives the integer value outside the range of [0..86399] will cause an adjustment to bring the value back in that range
              - …
            - `datetime` DateTimeOperand
              - …
          - `end` Operand, required
            - `boolean` boolean
            - `decimal` number, double
            - `integer` integer
            - `string` string
            - `array` ArrayOperand
              - …
            - `map` MapOperand
            - `device` DeviceOperand
              - …
            - `location` LocationOperand
              - …
            - `date` DateOperand
              - …
            - `time` TimeOperand: TimeOperand is restricted to returning a value between 0 and 86399 seconds. This means that adding an offset that potentially drives the integer value outside the range of [0..86399] will cause an adjustment to bring the value back in that range
              - …
            - `datetime` DateTimeOperand
              - …
          - `aggregation` 'Any' | 'All'
          - `changesOnly` boolean: Determines whether or not to track the evaluation state of the operation it contains, trigger the condition when the state of the inner operation transitions from false to true. Default is false.
        - `changes` ChangesCondition: A condition that returns true when its evaluation resolves to true and the previous evaluation resolved to false.
          - `and` Condition[]
          - `or` Condition[]
          - `not` Condition (recursive)
          - `equals` EqualsCondition
            - `left` Operand, required
              - …
            - `right` Operand, required
              - …
            - `aggregation` 'Any' | 'All'
            - `changesOnly` boolean: Determines whether or not to track the evaluation state of the operation it contains, trigger the condition when the state of the inner operation transitions from false to true. Default is false.
          - `greaterThan` GreaterThanCondition
            - `left` Operand, required
              - …
            - `right` Operand, required
              - …
            - `aggregation` 'Any' | 'All'
            - `changesOnly` boolean: Determines whether or not to track the evaluation state of the operation it contains, trigger the condition when the state of the inner operation transitions from false to true. Default is false.
          - `greaterThanOrEquals` GreaterThanOrEqualsCondition
            - `left` Operand, required
              - …
            - `right` Operand, required
              - …
            - `aggregation` 'Any' | 'All'
            - `changesOnly` boolean: Determines whether or not to track the evaluation state of the operation it contains, trigger the condition when the state of the inner operation transitions from false to true. Default is false.
          - `lessThan` LessThanCondition
            - `left` Operand, required
              - …
            - `right` Operand, required
              - …
            - `aggregation` 'Any' | 'All'
            - `changesOnly` boolean: Determines whether or not to track the evaluation state of the operation it contains, trigger the condition when the state of the inner operation transitions from false to true. Default is false.
          - `lessThanOrEquals` LessThanOrEqualsCondition
            - `left` Operand, required
              - …
            - `right` Operand, required
              - …
            - `aggregation` 'Any' | 'All'
            - `changesOnly` boolean: Determines whether or not to track the evaluation state of the operation it contains, trigger the condition when the state of the inner operation transitions from false to true. Default is false.
          - `between` BetweenCondition
            - `value` Operand, required
              - …
            - `start` Operand, required
              - …
            - `end` Operand, required
              - …
            - `aggregation` 'Any' | 'All'
            - `changesOnly` boolean: Determines whether or not to track the evaluation state of the operation it contains, trigger the condition when the state of the inner operation transitions from false to true. Default is false.
          - `id` string, ^(?:([0-9a-fA-F]{32})|([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}))$, required: Unique id for the condition
          - `operand` Operand
            - `boolean` boolean
            - `decimal` number, double
            - `integer` integer
            - `string` string
            - `array` ArrayOperand
              - …
            - `map` MapOperand
            - `device` DeviceOperand
              - …
            - `location` LocationOperand
              - …
            - `date` DateOperand
              - …
            - `time` TimeOperand: TimeOperand is restricted to returning a value between 0 and 86399 seconds. This means that adding an offset that potentially drives the integer value outside the range of [0..86399] will cause an adjustment to bring the value back in that range
              - …
            - `datetime` DateTimeOperand
              - …
        - `remains` RemainsCondition: A condition that returns true if its evaluation is true after the specified duration.
          - `and` Condition[]
          - `or` Condition[]
          - `not` Condition (recursive)
          - `equals` EqualsCondition
            - `left` Operand, required
              - …
            - `right` Operand, required
              - …
            - `aggregation` 'Any' | 'All'
            - `changesOnly` boolean: Determines whether or not to track the evaluation state of the operation it contains, trigger the condition when the state of the inner operation transitions from false to true. Default is false.
          - `greaterThan` GreaterThanCondition
            - `left` Operand, required
              - …
            - `right` Operand, required
              - …
            - `aggregation` 'Any' | 'All'
            - `changesOnly` boolean: Determines whether or not to track the evaluation state of the operation it contains, trigger the condition when the state of the inner operation transitions from false to true. Default is false.
          - `greaterThanOrEquals` GreaterThanOrEqualsCondition
            - `left` Operand, required
              - …
            - `right` Operand, required
              - …
            - `aggregation` 'Any' | 'All'
            - `changesOnly` boolean: Determines whether or not to track the evaluation state of the operation it contains, trigger the condition when the state of the inner operation transitions from false to true. Default is false.
          - `lessThan` LessThanCondition
            - `left` Operand, required
              - …
            - `right` Operand, required
              - …
            - `aggregation` 'Any' | 'All'
            - `changesOnly` boolean: Determines whether or not to track the evaluation state of the operation it contains, trigger the condition when the state of the inner operation transitions from false to true. Default is false.
          - `lessThanOrEquals` LessThanOrEqualsCondition
            - `left` Operand, required
              - …
            - `right` Operand, required
              - …
            - `aggregation` 'Any' | 'All'
            - `changesOnly` boolean: Determines whether or not to track the evaluation state of the operation it contains, trigger the condition when the state of the inner operation transitions from false to true. Default is false.
          - `between` BetweenCondition
            - `value` Operand, required
              - …
            - `start` Operand, required
              - …
            - `end` Operand, required
              - …
            - `aggregation` 'Any' | 'All'
            - `changesOnly` boolean: Determines whether or not to track the evaluation state of the operation it contains, trigger the condition when the state of the inner operation transitions from false to true. Default is false.
          - `id` string, ^(?:([0-9a-fA-F]{32})|([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}))$, required: Unique id for the condition
          - `operand` Operand
            - `boolean` boolean
            - `decimal` number, double
            - `integer` integer
            - `string` string
            - `array` ArrayOperand
              - …
            - `map` MapOperand
            - `device` DeviceOperand
              - …
            - `location` LocationOperand
              - …
            - `date` DateOperand
              - …
            - `time` TimeOperand: TimeOperand is restricted to returning a value between 0 and 86399 seconds. This means that adding an offset that potentially drives the integer value outside the range of [0..86399] will cause an adjustment to bring the value back in that range
              - …
            - `datetime` DateTimeOperand
              - …
          - `duration` Interval, required
            - `value` Operand, required
              - …
            - `unit` 'Second' | 'Minute' | 'Hour' | 'Day' | 'Week' | 'Month' | 'Year', required
          - `latching` boolean: Determines whether the condition should return true in subsequent executions after initially satisfied. Default is false.
        - `was` WasCondition: A condition that returns true if its evaluation would return true within the specified duration.
          - `and` Condition[]
          - `or` Condition[]
          - `not` Condition (recursive)
          - `equals` EqualsCondition
            - `left` Operand, required
              - …
            - `right` Operand, required
              - …
            - `aggregation` 'Any' | 'All'
            - `changesOnly` boolean: Determines whether or not to track the evaluation state of the operation it contains, trigger the condition when the state of the inner operation transitions from false to true. Default is false.
          - `greaterThan` GreaterThanCondition
            - `left` Operand, required
              - …
            - `right` Operand, required
              - …
            - `aggregation` 'Any' | 'All'
            - `changesOnly` boolean: Determines whether or not to track the evaluation state of the operation it contains, trigger the condition when the state of the inner operation transitions from false to true. Default is false.
          - `greaterThanOrEquals` GreaterThanOrEqualsCondition
            - `left` Operand, required
              - …
            - `right` Operand, required
              - …
            - `aggregation` 'Any' | 'All'
            - `changesOnly` boolean: Determines whether or not to track the evaluation state of the operation it contains, trigger the condition when the state of the inner operation transitions from false to true. Default is false.
          - `lessThan` LessThanCondition
            - `left` Operand, required
              - …
            - `right` Operand, required
              - …
            - `aggregation` 'Any' | 'All'
            - `changesOnly` boolean: Determines whether or not to track the evaluation state of the operation it contains, trigger the condition when the state of the inner operation transitions from false to true. Default is false.
          - `lessThanOrEquals` LessThanOrEqualsCondition
            - `left` Operand, required
              - …
            - `right` Operand, required
              - …
            - `aggregation` 'Any' | 'All'
            - `changesOnly` boolean: Determines whether or not to track the evaluation state of the operation it contains, trigger the condition when the state of the inner operation transitions from false to true. Default is false.
          - `between` BetweenCondition
            - `value` Operand, required
              - …
            - `start` Operand, required
              - …
            - `end` Operand, required
              - …
            - `aggregation` 'Any' | 'All'
            - `changesOnly` boolean: Determines whether or not to track the evaluation state of the operation it contains, trigger the condition when the state of the inner operation transitions from false to true. Default is false.
          - `id` string, ^(?:([0-9a-fA-F]{32})|([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}))$, required: Unique id for the condition
          - `duration` Interval, required
            - `value` Operand, required
              - …
            - `unit` 'Second' | 'Minute' | 'Hour' | 'Day' | 'Week' | 'Month' | 'Year', required
          - `operand` Operand
            - `boolean` boolean
            - `decimal` number, double
            - `integer` integer
            - `string` string
            - `array` ArrayOperand
              - …
            - `map` MapOperand
            - `device` DeviceOperand
              - …
            - `location` LocationOperand
              - …
            - `date` DateOperand
              - …
            - `time` TimeOperand: TimeOperand is restricted to returning a value between 0 and 86399 seconds. This means that adding an offset that potentially drives the integer value outside the range of [0..86399] will cause an adjustment to bring the value back in that range
              - …
            - `datetime` DateTimeOperand
              - …
      - `not` Condition
        - `and` Condition[]
        - `or` Condition[]
        - `not` Condition (recursive)
        - `equals` EqualsCondition
          - `left` Operand, required
            - `boolean` boolean
            - `decimal` number, double
            - `integer` integer
            - `string` string
            - `array` ArrayOperand
              - …
            - `map` MapOperand
            - `device` DeviceOperand
              - …
            - `location` LocationOperand
              - …
            - `date` DateOperand
              - …
            - `time` TimeOperand: TimeOperand is restricted to returning a value between 0 and 86399 seconds. This means that adding an offset that potentially drives the integer value outside the range of [0..86399] will cause an adjustment to bring the value back in that range
              - …
            - `datetime` DateTimeOperand
              - …
          - `right` Operand, required
            - `boolean` boolean
            - `decimal` number, double
            - `integer` integer
            - `string` string
            - `array` ArrayOperand
              - …
            - `map` MapOperand
            - `device` DeviceOperand
              - …
            - `location` LocationOperand
              - …
            - `date` DateOperand
              - …
            - `time` TimeOperand: TimeOperand is restricted to returning a value between 0 and 86399 seconds. This means that adding an offset that potentially drives the integer value outside the range of [0..86399] will cause an adjustment to bring the value back in that range
              - …
            - `datetime` DateTimeOperand
              - …
          - `aggregation` 'Any' | 'All'
          - `changesOnly` boolean: Determines whether or not to track the evaluation state of the operation it contains, trigger the condition when the state of the inner operation transitions from false to true. Default is false.
        - `greaterThan` GreaterThanCondition
          - `left` Operand, required
            - `boolean` boolean
            - `decimal` number, double
            - `integer` integer
            - `string` string
            - `array` ArrayOperand
              - …
            - `map` MapOperand
            - `device` DeviceOperand
              - …
            - `location` LocationOperand
              - …
            - `date` DateOperand
              - …
            - `time` TimeOperand: TimeOperand is restricted to returning a value between 0 and 86399 seconds. This means that adding an offset that potentially drives the integer value outside the range of [0..86399] will cause an adjustment to bring the value back in that range
              - …
            - `datetime` DateTimeOperand
              - …
          - `right` Operand, required
            - `boolean` boolean
            - `decimal` number, double
            - `integer` integer
            - `string` string
            - `array` ArrayOperand
              - …
            - `map` MapOperand
            - `device` DeviceOperand
              - …
            - `location` LocationOperand
              - …
            - `date` DateOperand
              - …
            - `time` TimeOperand: TimeOperand is restricted to returning a value between 0 and 86399 seconds. This means that adding an offset that potentially drives the integer value outside the range of [0..86399] will cause an adjustment to bring the value back in that range
              - …
            - `datetime` DateTimeOperand
              - …
          - `aggregation` 'Any' | 'All'
          - `changesOnly` boolean: Determines whether or not to track the evaluation state of the operation it contains, trigger the condition when the state of the inner operation transitions from false to true. Default is false.
        - `greaterThanOrEquals` GreaterThanOrEqualsCondition
          - `left` Operand, required
            - `boolean` boolean
            - `decimal` number, double
            - `integer` integer
            - `string` string
            - `array` ArrayOperand
              - …
            - `map` MapOperand
            - `device` DeviceOperand
              - …
            - `location` LocationOperand
              - …
            - `date` DateOperand
              - …
            - `time` TimeOperand: TimeOperand is restricted to returning a value between 0 and 86399 seconds. This means that adding an offset that potentially drives the integer value outside the range of [0..86399] will cause an adjustment to bring the value back in that range
              - …
            - `datetime` DateTimeOperand
              - …
          - `right` Operand, required
            - `boolean` boolean
            - `decimal` number, double
            - `integer` integer
            - `string` string
            - `array` ArrayOperand
              - …
            - `map` MapOperand
            - `device` DeviceOperand
              - …
            - `location` LocationOperand
              - …
            - `date` DateOperand
              - …
            - `time` TimeOperand: TimeOperand is restricted to returning a value between 0 and 86399 seconds. This means that adding an offset that potentially drives the integer value outside the range of [0..86399] will cause an adjustment to bring the value back in that range
              - …
            - `datetime` DateTimeOperand
              - …
          - `aggregation` 'Any' | 'All'
          - `changesOnly` boolean: Determines whether or not to track the evaluation state of the operation it contains, trigger the condition when the state of the inner operation transitions from false to true. Default is false.
        - `lessThan` LessThanCondition
          - `left` Operand, required
            - `boolean` boolean
            - `decimal` number, double
            - `integer` integer
            - `string` string
            - `array` ArrayOperand
              - …
            - `map` MapOperand
            - `device` DeviceOperand
              - …
            - `location` LocationOperand
              - …
            - `date` DateOperand
              - …
            - `time` TimeOperand: TimeOperand is restricted to returning a value between 0 and 86399 seconds. This means that adding an offset that potentially drives the integer value outside the range of [0..86399] will cause an adjustment to bring the value back in that range
              - …
            - `datetime` DateTimeOperand
              - …
          - `right` Operand, required
            - `boolean` boolean
            - `decimal` number, double
            - `integer` integer
            - `string` string
            - `array` ArrayOperand
              - …
            - `map` MapOperand
            - `device` DeviceOperand
              - …
            - `location` LocationOperand
              - …
            - `date` DateOperand
              - …
            - `time` TimeOperand: TimeOperand is restricted to returning a value between 0 and 86399 seconds. This means that adding an offset that potentially drives the integer value outside the range of [0..86399] will cause an adjustment to bring the value back in that range
              - …
            - `datetime` DateTimeOperand
              - …
          - `aggregation` 'Any' | 'All'
          - `changesOnly` boolean: Determines whether or not to track the evaluation state of the operation it contains, trigger the condition when the state of the inner operation transitions from false to true. Default is false.
        - `lessThanOrEquals` LessThanOrEqualsCondition
          - `left` Operand, required
            - `boolean` boolean
            - `decimal` number, double
            - `integer` integer
            - `string` string
            - `array` ArrayOperand
              - …
            - `map` MapOperand
            - `device` DeviceOperand
              - …
            - `location` LocationOperand
              - …
            - `date` DateOperand
              - …
            - `time` TimeOperand: TimeOperand is restricted to returning a value between 0 and 86399 seconds. This means that adding an offset that potentially drives the integer value outside the range of [0..86399] will cause an adjustment to bring the value back in that range
              - …
            - `datetime` DateTimeOperand
              - …
          - `right` Operand, required
            - `boolean` boolean
            - `decimal` number, double
            - `integer` integer
            - `string` string
            - `array` ArrayOperand
              - …
            - `map` MapOperand
            - `device` DeviceOperand
              - …
            - `location` LocationOperand
              - …
            - `date` DateOperand
              - …
            - `time` TimeOperand: TimeOperand is restricted to returning a value between 0 and 86399 seconds. This means that adding an offset that potentially drives the integer value outside the range of [0..86399] will cause an adjustment to bring the value back in that range
              - …
            - `datetime` DateTimeOperand
              - …
          - `aggregation` 'Any' | 'All'
          - `changesOnly` boolean: Determines whether or not to track the evaluation state of the operation it contains, trigger the condition when the state of the inner operation transitions from false to true. Default is false.
        - `between` BetweenCondition
          - `value` Operand, required
            - `boolean` boolean
            - `decimal` number, double
            - `integer` integer
            - `string` string
            - `array` ArrayOperand
              - …
            - `map` MapOperand
            - `device` DeviceOperand
              - …
            - `location` LocationOperand
              - …
            - `date` DateOperand
              - …
            - `time` TimeOperand: TimeOperand is restricted to returning a value between 0 and 86399 seconds. This means that adding an offset that potentially drives the integer value outside the range of [0..86399] will cause an adjustment to bring the value back in that range
              - …
            - `datetime` DateTimeOperand
              - …
          - `start` Operand, required
            - `boolean` boolean
            - `decimal` number, double
            - `integer` integer
            - `string` string
            - `array` ArrayOperand
              - …
            - `map` MapOperand
            - `device` DeviceOperand
              - …
            - `location` LocationOperand
              - …
            - `date` DateOperand
              - …
            - `time` TimeOperand: TimeOperand is restricted to returning a value between 0 and 86399 seconds. This means that adding an offset that potentially drives the integer value outside the range of [0..86399] will cause an adjustment to bring the value back in that range
              - …
            - `datetime` DateTimeOperand
              - …
          - `end` Operand, required
            - `boolean` boolean
            - `decimal` number, double
            - `integer` integer
            - `string` string
            - `array` ArrayOperand
              - …
            - `map` MapOperand
            - `device` DeviceOperand
              - …
            - `location` LocationOperand
              - …
            - `date` DateOperand
              - …
            - `time` TimeOperand: TimeOperand is restricted to returning a value between 0 and 86399 seconds. This means that adding an offset that potentially drives the integer value outside the range of [0..86399] will cause an adjustment to bring the value back in that range
              - …
            - `datetime` DateTimeOperand
              - …
          - `aggregation` 'Any' | 'All'
          - `changesOnly` boolean: Determines whether or not to track the evaluation state of the operation it contains, trigger the condition when the state of the inner operation transitions from false to true. Default is false.
        - `changes` ChangesCondition: A condition that returns true when its evaluation resolves to true and the previous evaluation resolved to false.
          - `and` Condition[]
          - `or` Condition[]
          - `not` Condition (recursive)
          - `equals` EqualsCondition
            - `left` Operand, required
              - …
            - `right` Operand, required
              - …
            - `aggregation` 'Any' | 'All'
            - `changesOnly` boolean: Determines whether or not to track the evaluation state of the operation it contains, trigger the condition when the state of the inner operation transitions from false to true. Default is false.
          - `greaterThan` GreaterThanCondition
            - `left` Operand, required
              - …
            - `right` Operand, required
              - …
            - `aggregation` 'Any' | 'All'
            - `changesOnly` boolean: Determines whether or not to track the evaluation state of the operation it contains, trigger the condition when the state of the inner operation transitions from false to true. Default is false.
          - `greaterThanOrEquals` GreaterThanOrEqualsCondition
            - `left` Operand, required
              - …
            - `right` Operand, required
              - …
            - `aggregation` 'Any' | 'All'
            - `changesOnly` boolean: Determines whether or not to track the evaluation state of the operation it contains, trigger the condition when the state of the inner operation transitions from false to true. Default is false.
          - `lessThan` LessThanCondition
            - `left` Operand, required
              - …
            - `right` Operand, required
              - …
            - `aggregation` 'Any' | 'All'
            - `changesOnly` boolean: Determines whether or not to track the evaluation state of the operation it contains, trigger the condition when the state of the inner operation transitions from false to true. Default is false.
          - `lessThanOrEquals` LessThanOrEqualsCondition
            - `left` Operand, required
              - …
            - `right` Operand, required
              - …
            - `aggregation` 'Any' | 'All'
            - `changesOnly` boolean: Determines whether or not to track the evaluation state of the operation it contains, trigger the condition when the state of the inner operation transitions from false to true. Default is false.
          - `between` BetweenCondition
            - `value` Operand, required
              - …
            - `start` Operand, required
              - …
            - `end` Operand, required
              - …
            - `aggregation` 'Any' | 'All'
            - `changesOnly` boolean: Determines whether or not to track the evaluation state of the operation it contains, trigger the condition when the state of the inner operation transitions from false to true. Default is false.
          - `id` string, ^(?:([0-9a-fA-F]{32})|([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}))$, required: Unique id for the condition
          - `operand` Operand
            - `boolean` boolean
            - `decimal` number, double
            - `integer` integer
            - `string` string
            - `array` ArrayOperand
              - …
            - `map` MapOperand
            - `device` DeviceOperand
              - …
            - `location` LocationOperand
              - …
            - `date` DateOperand
              - …
            - `time` TimeOperand: TimeOperand is restricted to returning a value between 0 and 86399 seconds. This means that adding an offset that potentially drives the integer value outside the range of [0..86399] will cause an adjustment to bring the value back in that range
              - …
            - `datetime` DateTimeOperand
              - …
        - `remains` RemainsCondition: A condition that returns true if its evaluation is true after the specified duration.
          - `and` Condition[]
          - `or` Condition[]
          - `not` Condition (recursive)
          - `equals` EqualsCondition
            - `left` Operand, required
              - …
            - `right` Operand, required
              - …
            - `aggregation` 'Any' | 'All'
            - `changesOnly` boolean: Determines whether or not to track the evaluation state of the operation it contains, trigger the condition when the state of the inner operation transitions from false to true. Default is false.
          - `greaterThan` GreaterThanCondition
            - `left` Operand, required
              - …
            - `right` Operand, required
              - …
            - `aggregation` 'Any' | 'All'
            - `changesOnly` boolean: Determines whether or not to track the evaluation state of the operation it contains, trigger the condition when the state of the inner operation transitions from false to true. Default is false.
          - `greaterThanOrEquals` GreaterThanOrEqualsCondition
            - `left` Operand, required
              - …
            - `right` Operand, required
              - …
            - `aggregation` 'Any' | 'All'
            - `changesOnly` boolean: Determines whether or not to track the evaluation state of the operation it contains, trigger the condition when the state of the inner operation transitions from false to true. Default is false.
          - `lessThan` LessThanCondition
            - `left` Operand, required
              - …
            - `right` Operand, required
              - …
            - `aggregation` 'Any' | 'All'
            - `changesOnly` boolean: Determines whether or not to track the evaluation state of the operation it contains, trigger the condition when the state of the inner operation transitions from false to true. Default is false.
          - `lessThanOrEquals` LessThanOrEqualsCondition
            - `left` Operand, required
              - …
            - `right` Operand, required
              - …
            - `aggregation` 'Any' | 'All'
            - `changesOnly` boolean: Determines whether or not to track the evaluation state of the operation it contains, trigger the condition when the state of the inner operation transitions from false to true. Default is false.
          - `between` BetweenCondition
            - `value` Operand, required
              - …
            - `start` Operand, required
              - …
            - `end` Operand, required
              - …
            - `aggregation` 'Any' | 'All'
            - `changesOnly` boolean: Determines whether or not to track the evaluation state of the operation it contains, trigger the condition when the state of the inner operation transitions from false to true. Default is false.
          - `id` string, ^(?:([0-9a-fA-F]{32})|([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}))$, required: Unique id for the condition
          - `operand` Operand
            - `boolean` boolean
            - `decimal` number, double
            - `integer` integer
            - `string` string
            - `array` ArrayOperand
              - …
            - `map` MapOperand
            - `device` DeviceOperand
              - …
            - `location` LocationOperand
              - …
            - `date` DateOperand
              - …
            - `time` TimeOperand: TimeOperand is restricted to returning a value between 0 and 86399 seconds. This means that adding an offset that potentially drives the integer value outside the range of [0..86399] will cause an adjustment to bring the value back in that range
              - …
            - `datetime` DateTimeOperand
              - …
          - `duration` Interval, required
            - `value` Operand, required
              - …
            - `unit` 'Second' | 'Minute' | 'Hour' | 'Day' | 'Week' | 'Month' | 'Year', required
          - `latching` boolean: Determines whether the condition should return true in subsequent executions after initially satisfied. Default is false.
        - `was` WasCondition: A condition that returns true if its evaluation would return true within the specified duration.
          - `and` Condition[]
          - `or` Condition[]
          - `not` Condition (recursive)
          - `equals` EqualsCondition
            - `left` Operand, required
              - …
            - `right` Operand, required
              - …
            - `aggregation` 'Any' | 'All'
            - `changesOnly` boolean: Determines whether or not to track the evaluation state of the operation it contains, trigger the condition when the state of the inner operation transitions from false to true. Default is false.
          - `greaterThan` GreaterThanCondition
            - `left` Operand, required
              - …
            - `right` Operand, required
              - …
            - `aggregation` 'Any' | 'All'
            - `changesOnly` boolean: Determines whether or not to track the evaluation state of the operation it contains, trigger the condition when the state of the inner operation transitions from false to true. Default is false.
          - `greaterThanOrEquals` GreaterThanOrEqualsCondition
            - `left` Operand, required
              - …
            - `right` Operand, required
              - …
            - `aggregation` 'Any' | 'All'
            - `changesOnly` boolean: Determines whether or not to track the evaluation state of the operation it contains, trigger the condition when the state of the inner operation transitions from false to true. Default is false.
          - `lessThan` LessThanCondition
            - `left` Operand, required
              - …
            - `right` Operand, required
              - …
            - `aggregation` 'Any' | 'All'
            - `changesOnly` boolean: Determines whether or not to track the evaluation state of the operation it contains, trigger the condition when the state of the inner operation transitions from false to true. Default is false.
          - `lessThanOrEquals` LessThanOrEqualsCondition
            - `left` Operand, required
              - …
            - `right` Operand, required
              - …
            - `aggregation` 'Any' | 'All'
            - `changesOnly` boolean: Determines whether or not to track the evaluation state of the operation it contains, trigger the condition when the state of the inner operation transitions from false to true. Default is false.
          - `between` BetweenCondition
            - `value` Operand, required
              - …
            - `start` Operand, required
              - …
            - `end` Operand, required
              - …
            - `aggregation` 'Any' | 'All'
            - `changesOnly` boolean: Determines whether or not to track the evaluation state of the operation it contains, trigger the condition when the state of the inner operation transitions from false to true. Default is false.
          - `id` string, ^(?:([0-9a-fA-F]{32})|([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}))$, required: Unique id for the condition
          - `duration` Interval, required
            - `value` Operand, required
              - …
            - `unit` 'Second' | 'Minute' | 'Hour' | 'Day' | 'Week' | 'Month' | 'Year', required
          - `operand` Operand
            - `boolean` boolean
            - `decimal` number, double
            - `integer` integer
            - `string` string
            - `array` ArrayOperand
              - …
            - `map` MapOperand
            - `device` DeviceOperand
              - …
            - `location` LocationOperand
              - …
            - `date` DateOperand
              - …
            - `time` TimeOperand: TimeOperand is restricted to returning a value between 0 and 86399 seconds. This means that adding an offset that potentially drives the integer value outside the range of [0..86399] will cause an adjustment to bring the value back in that range
              - …
            - `datetime` DateTimeOperand
              - …
      - `equals` EqualsCondition
        - `left` Operand, required
          - `boolean` boolean
          - `decimal` number, double
          - `integer` integer
          - `string` string
          - `array` ArrayOperand
            - `operands` Operand[], required
            - `aggregation` 'None'
          - `map` MapOperand
          - `device` DeviceOperand
            - `devices` string[], required
            - `component` string, required
            - `capability` string, required
            - `attribute` string, required
            - `path` string
            - `aggregation` 'None'
            - `trigger` 'Auto' | 'Always' | 'Never'
          - `location` LocationOperand
            - `locationId` string, ^(?:([0-9a-fA-F]{32})|([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}))$: Required for User level rule, optional for Location level in request. Will always be present in response for both.
            - `postalCode` string: Only valid for the attribute 'WeatherAlertSeverity'
            - `attribute` 'FineDust' | 'FineDustIndex' | 'Humidity' | 'Mode' | 'Security' | 'Temperature' | 'TemperatureC' | 'TemperatureF' | 'UltraFineDust' | 'UltraFineDustIndex' | 'Weather' | 'WeatherAlertSeverity', required
            - `trigger` 'Auto' | 'Always' | 'Never'
          - `date` DateOperand
            - `timeZoneId` string: A java time zone ID reference
            - `daysOfWeek` DayOfWeek[]
            - `year` integer
            - `month` integer
            - `day` integer
            - `reference` 'Today' | 'Holiday'
          - `time` TimeOperand: TimeOperand is restricted to returning a value between 0 and 86399 seconds. This means that adding an offset that potentially drives the integer value outside the range of [0..86399] will cause an adjustment to bring the value back in that range
            - `timeZoneId` string: A java time zone ID reference
            - `daysOfWeek` DayOfWeek[]
            - `reference` 'Now' | 'Midnight' | 'Sunrise' | 'Noon' | 'Sunset', required
            - `offset` Interval
              - …
          - `datetime` DateTimeOperand
            - `timeZoneId` string: A java time zone ID reference
            - `locationId` string, ^(?:([0-9a-fA-F]{32})|([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}))$: Location ID for location actions
            - `daysOfWeek` DayOfWeek[]
            - `year` integer
            - `month` integer
            - `day` integer
            - `reference` 'Now' | 'Midnight' | 'Sunrise' | 'Noon' | 'Sunset', required
            - `offset` Interval
              - …
        - `right` Operand, required
          - `boolean` boolean
          - `decimal` number, double
          - `integer` integer
          - `string` string
          - `array` ArrayOperand
            - `operands` Operand[], required
            - `aggregation` 'None'
          - `map` MapOperand
          - `device` DeviceOperand
            - `devices` string[], required
            - `component` string, required
            - `capability` string, required
            - `attribute` string, required
            - `path` string
            - `aggregation` 'None'
            - `trigger` 'Auto' | 'Always' | 'Never'
          - `location` LocationOperand
            - `locationId` string, ^(?:([0-9a-fA-F]{32})|([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}))$: Required for User level rule, optional for Location level in request. Will always be present in response for both.
            - `postalCode` string: Only valid for the attribute 'WeatherAlertSeverity'
            - `attribute` 'FineDust' | 'FineDustIndex' | 'Humidity' | 'Mode' | 'Security' | 'Temperature' | 'TemperatureC' | 'TemperatureF' | 'UltraFineDust' | 'UltraFineDustIndex' | 'Weather' | 'WeatherAlertSeverity', required
            - `trigger` 'Auto' | 'Always' | 'Never'
          - `date` DateOperand
            - `timeZoneId` string: A java time zone ID reference
            - `daysOfWeek` DayOfWeek[]
            - `year` integer
            - `month` integer
            - `day` integer
            - `reference` 'Today' | 'Holiday'
          - `time` TimeOperand: TimeOperand is restricted to returning a value between 0 and 86399 seconds. This means that adding an offset that potentially drives the integer value outside the range of [0..86399] will cause an adjustment to bring the value back in that range
            - `timeZoneId` string: A java time zone ID reference
            - `daysOfWeek` DayOfWeek[]
            - `reference` 'Now' | 'Midnight' | 'Sunrise' | 'Noon' | 'Sunset', required
            - `offset` Interval
              - …
          - `datetime` DateTimeOperand
            - `timeZoneId` string: A java time zone ID reference
            - `locationId` string, ^(?:([0-9a-fA-F]{32})|([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}))$: Location ID for location actions
            - `daysOfWeek` DayOfWeek[]
            - `year` integer
            - `month` integer
            - `day` integer
            - `reference` 'Now' | 'Midnight' | 'Sunrise' | 'Noon' | 'Sunset', required
            - `offset` Interval
              - …
        - `aggregation` 'Any' | 'All'
        - `changesOnly` boolean: Determines whether or not to track the evaluation state of the operation it contains, trigger the condition when the state of the inner operation transitions from false to true. Default is false.
      - `greaterThan` GreaterThanCondition
        - `left` Operand, required
          - `boolean` boolean
          - `decimal` number, double
          - `integer` integer
          - `string` string
          - `array` ArrayOperand
            - `operands` Operand[], required
            - `aggregation` 'None'
          - `map` MapOperand
          - `device` DeviceOperand
            - `devices` string[], required
            - `component` string, required
            - `capability` string, required
            - `attribute` string, required
            - `path` string
            - `aggregation` 'None'
            - `trigger` 'Auto' | 'Always' | 'Never'
          - `location` LocationOperand
            - `locationId` string, ^(?:([0-9a-fA-F]{32})|([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}))$: Required for User level rule, optional for Location level in request. Will always be present in response for both.
            - `postalCode` string: Only valid for the attribute 'WeatherAlertSeverity'
            - `attribute` 'FineDust' | 'FineDustIndex' | 'Humidity' | 'Mode' | 'Security' | 'Temperature' | 'TemperatureC' | 'TemperatureF' | 'UltraFineDust' | 'UltraFineDustIndex' | 'Weather' | 'WeatherAlertSeverity', required
            - `trigger` 'Auto' | 'Always' | 'Never'
          - `date` DateOperand
            - `timeZoneId` string: A java time zone ID reference
            - `daysOfWeek` DayOfWeek[]
            - `year` integer
            - `month` integer
            - `day` integer
            - `reference` 'Today' | 'Holiday'
          - `time` TimeOperand: TimeOperand is restricted to returning a value between 0 and 86399 seconds. This means that adding an offset that potentially drives the integer value outside the range of [0..86399] will cause an adjustment to bring the value back in that range
            - `timeZoneId` string: A java time zone ID reference
            - `daysOfWeek` DayOfWeek[]
            - `reference` 'Now' | 'Midnight' | 'Sunrise' | 'Noon' | 'Sunset', required
            - `offset` Interval
              - …
          - `datetime` DateTimeOperand
            - `timeZoneId` string: A java time zone ID reference
            - `locationId` string, ^(?:([0-9a-fA-F]{32})|([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}))$: Location ID for location actions
            - `daysOfWeek` DayOfWeek[]
            - `year` integer
            - `month` integer
            - `day` integer
            - `reference` 'Now' | 'Midnight' | 'Sunrise' | 'Noon' | 'Sunset', required
            - `offset` Interval
              - …
        - `right` Operand, required
          - `boolean` boolean
          - `decimal` number, double
          - `integer` integer
          - `string` string
          - `array` ArrayOperand
            - `operands` Operand[], required
            - `aggregation` 'None'
          - `map` MapOperand
          - `device` DeviceOperand
            - `devices` string[], required
            - `component` string, required
            - `capability` string, required
            - `attribute` string, required
            - `path` string
            - `aggregation` 'None'
            - `trigger` 'Auto' | 'Always' | 'Never'
          - `location` LocationOperand
            - `locationId` string, ^(?:([0-9a-fA-F]{32})|([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}))$: Required for User level rule, optional for Location level in request. Will always be present in response for both.
            - `postalCode` string: Only valid for the attribute 'WeatherAlertSeverity'
            - `attribute` 'FineDust' | 'FineDustIndex' | 'Humidity' | 'Mode' | 'Security' | 'Temperature' | 'TemperatureC' | 'TemperatureF' | 'UltraFineDust' | 'UltraFineDustIndex' | 'Weather' | 'WeatherAlertSeverity', required
            - `trigger` 'Auto' | 'Always' | 'Never'
          - `date` DateOperand
            - `timeZoneId` string: A java time zone ID reference
            - `daysOfWeek` DayOfWeek[]
            - `year` integer
            - `month` integer
            - `day` integer
            - `reference` 'Today' | 'Holiday'
          - `time` TimeOperand: TimeOperand is restricted to returning a value between 0 and 86399 seconds. This means that adding an offset that potentially drives the integer value outside the range of [0..86399] will cause an adjustment to bring the value back in that range
            - `timeZoneId` string: A java time zone ID reference
            - `daysOfWeek` DayOfWeek[]
            - `reference` 'Now' | 'Midnight' | 'Sunrise' | 'Noon' | 'Sunset', required
            - `offset` Interval
              - …
          - `datetime` DateTimeOperand
            - `timeZoneId` string: A java time zone ID reference
            - `locationId` string, ^(?:([0-9a-fA-F]{32})|([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}))$: Location ID for location actions
            - `daysOfWeek` DayOfWeek[]
            - `year` integer
            - `month` integer
            - `day` integer
            - `reference` 'Now' | 'Midnight' | 'Sunrise' | 'Noon' | 'Sunset', required
            - `offset` Interval
              - …
        - `aggregation` 'Any' | 'All'
        - `changesOnly` boolean: Determines whether or not to track the evaluation state of the operation it contains, trigger the condition when the state of the inner operation transitions from false to true. Default is false.
      - `greaterThanOrEquals` GreaterThanOrEqualsCondition
        - `left` Operand, required
          - `boolean` boolean
          - `decimal` number, double
          - `integer` integer
          - `string` string
          - `array` ArrayOperand
            - `operands` Operand[], required
            - `aggregation` 'None'
          - `map` MapOperand
          - `device` DeviceOperand
            - `devices` string[], required
            - `component` string, required
            - `capability` string, required
            - `attribute` string, required
            - `path` string
            - `aggregation` 'None'
            - `trigger` 'Auto' | 'Always' | 'Never'
          - `location` LocationOperand
            - `locationId` string, ^(?:([0-9a-fA-F]{32})|([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}))$: Required for User level rule, optional for Location level in request. Will always be present in response for both.
            - `postalCode` string: Only valid for the attribute 'WeatherAlertSeverity'
            - `attribute` 'FineDust' | 'FineDustIndex' | 'Humidity' | 'Mode' | 'Security' | 'Temperature' | 'TemperatureC' | 'TemperatureF' | 'UltraFineDust' | 'UltraFineDustIndex' | 'Weather' | 'WeatherAlertSeverity', required
            - `trigger` 'Auto' | 'Always' | 'Never'
          - `date` DateOperand
            - `timeZoneId` string: A java time zone ID reference
            - `daysOfWeek` DayOfWeek[]
            - `year` integer
            - `month` integer
            - `day` integer
            - `reference` 'Today' | 'Holiday'
          - `time` TimeOperand: TimeOperand is restricted to returning a value between 0 and 86399 seconds. This means that adding an offset that potentially drives the integer value outside the range of [0..86399] will cause an adjustment to bring the value back in that range
            - `timeZoneId` string: A java time zone ID reference
            - `daysOfWeek` DayOfWeek[]
            - `reference` 'Now' | 'Midnight' | 'Sunrise' | 'Noon' | 'Sunset', required
            - `offset` Interval
              - …
          - `datetime` DateTimeOperand
            - `timeZoneId` string: A java time zone ID reference
            - `locationId` string, ^(?:([0-9a-fA-F]{32})|([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}))$: Location ID for location actions
            - `daysOfWeek` DayOfWeek[]
            - `year` integer
            - `month` integer
            - `day` integer
            - `reference` 'Now' | 'Midnight' | 'Sunrise' | 'Noon' | 'Sunset', required
            - `offset` Interval
              - …
        - `right` Operand, required
          - `boolean` boolean
          - `decimal` number, double
          - `integer` integer
          - `string` string
          - `array` ArrayOperand
            - `operands` Operand[], required
            - `aggregation` 'None'
          - `map` MapOperand
          - `device` DeviceOperand
            - `devices` string[], required
            - `component` string, required
- … truncated; see the full OpenAPI document linked below

## Other responses

- `401`: Not authenticated
- `403`: Not authorized
- `default`: Unexpected error

---

[API](https://skmtc.dev/smartthings/apis/smartthings-api.md) - [All operations](https://skmtc.dev/smartthings/apis/smartthings-api/llms.txt) - [OpenAPI document](https://skmtc.dev/smartthings/apis/smartthings-api/revisions/2788a4236800?raw)
