    struct Action

    extension Action : Copyable, CustomStringConvertible, Equatable, Escapable, Hashable, Identifiable, https://developers.home.google.com/reference/swift/GoogleHomeSDK/Protocols/Node.html, Sendable, SendableMetatype

Base struct for all actions in the automation graph.
- `


  ### [id](https://developers.home.google.com/reference/swift/GoogleHomeSDK/Structs/Action#/s:13GoogleHomeSDK6ActionV2idSSvp)


  ` The stable identity of the entity associated with this instance.

  #### Declaration

  Swift

      let id: String

- `


  ### [behavior](https://developers.home.google.com/reference/swift/GoogleHomeSDK/Structs/Action#/s:13GoogleHomeSDK6ActionV8behaviorAA0D8Behavior_pvp)


  ` The behavior to take when the Action is executed.

  #### Declaration

  Swift

      let behavior: any https://developers.home.google.com/reference/swift/GoogleHomeSDK/Protocols/ActionBehavior.html

- `


  ### [entityExpression](https://developers.home.google.com/reference/swift/GoogleHomeSDK/Structs/Action#/s:13GoogleHomeSDK6ActionV16entityExpressionAA0F0_pvp)


  ` An expression that specifies an entity or a list of entities associated
  with the `Action` at runtime.

  When entityExpression represents a single entity,
  entityExpression will be Constant(value: AnyAutomationEntity).
  Otherwise, entityExpression is an Expression, capable of resolving to any number of entities.

  #### Declaration

  Swift

      let entityExpression: any https://developers.home.google.com/reference/swift/GoogleHomeSDK/Protocols/Expression.html

- `


  ### [entity](https://developers.home.google.com/reference/swift/GoogleHomeSDK/Structs/Action#/s:13GoogleHomeSDK6ActionV6entityAA0B6Object_pSgvp)


  ` The unique ID for the entity associated with the `Action`.

  entity will be nil if the init(entityExpression: ...) was used and
  the entityExpression is not a `https://developers.home.google.com/reference/swift/GoogleHomeSDK/Structs/Constant.html` to an `https://developers.home.google.com/reference/swift/GoogleHomeSDK/Enums/AnyAutomationEntity.html`.

  #### Declaration

  Swift

      var entity: (any https://developers.home.google.com/reference/swift/GoogleHomeSDK/Protocols/HomeObject.html)? { get }

- `


  ### [deviceType](https://developers.home.google.com/reference/swift/GoogleHomeSDK/Structs/Action#/s:13GoogleHomeSDK6ActionV10deviceTypeAA06DeviceF0_pXpSgvp)


  ` For device entities, the identifier of the `https://developers.home.google.com/reference/swift/GoogleHomeSDK/Protocols/DeviceType.html` associated with the action.

  deviceType will be nil if entity is nil or not a device, such as a `https://developers.home.google.com/reference/swift/GoogleHomeSDK/Structs/Structure.html` or `https://developers.home.google.com/reference/swift/GoogleHomeSDK/Structs/Room.html`.

  #### Declaration

  Swift

      var deviceType: (any https://developers.home.google.com/reference/swift/GoogleHomeSDK/Protocols/DeviceType.html.Type)? { get }

- `


  ### [deviceTypeID](https://developers.home.google.com/reference/swift/GoogleHomeSDK/Structs/Action#/s:13GoogleHomeSDK6ActionV12deviceTypeIDSSSgvp)


  ` For device entities, the string-based identifier for the `https://developers.home.google.com/reference/swift/GoogleHomeSDK/Protocols/DeviceType.html`.
  If deviceType is `https://developers.home.google.com/reference/swift/GoogleHomeSDK/Structs/UnknownDeviceType.html` it will refer to the original
  `https://developers.home.google.com/reference/swift/GoogleHomeSDK/Protocols/DeviceType.html` ID provided.

  deviceTypeID will be nil if entity is nil or not a device, such as a `https://developers.home.google.com/reference/swift/GoogleHomeSDK/Structs/Structure.html` or `https://developers.home.google.com/reference/swift/GoogleHomeSDK/Structs/Room.html`.

  #### Declaration

  Swift

      var deviceTypeID: String? { get }

- `


  ### [==(_:_:)](https://developers.home.google.com/reference/swift/GoogleHomeSDK/Structs/Action#/s:13GoogleHomeSDK6ActionV2eeoiySbAC_ACtFZ)


  ` Returns a Boolean value indicating whether two values are equal.

  Equality is the inverse of inequality. For any values `a` and `b`,
  `a == b` implies that `a != b` is `false`.

  #### Declaration

  Swift

      static func == (lhs: Action, rhs: Action) -> Bool

  #### Parameters

  |---|---|
  | ` lhs ` | A value to compare. |
  | ` rhs ` | Another value to compare. |

- `


  ### [isEqual(to:)](https://developers.home.google.com/reference/swift/GoogleHomeSDK/Structs/Action#/s:13GoogleHomeSDK6ActionV7isEqual2toSbAA4Node_p_tF)


  ` Returns true if the nodes are equal, false otherwise.

  #### Declaration

  Swift

      func isEqual(to other: any https://developers.home.google.com/reference/swift/GoogleHomeSDK/Protocols/Node.html) -> Bool

- `


  ### [description](https://developers.home.google.com/reference/swift/GoogleHomeSDK/Structs/Action#/s:13GoogleHomeSDK6ActionV11descriptionSSvp)


  ` A textual representation of this instance.

  Calling this property directly is discouraged. Instead, convert an
  instance of any type to a string by using the `String(describing:)`
  initializer. This initializer works with any type, and uses the custom
  `description` property for types that conform to
  `CustomStringConvertible`:

      struct Point: CustomStringConvertible {
          let x: Int, y: Int

          var description: String {
              return "(\(x), \(y))"
          }
      }

      let p = Point(x: 21, y: 30)
      let s = String(describing: p)
      print(s)
      // Prints "(21, 30)"

  The conversion of `p` to a string in the assignment to `s` uses the
  `Point` type's `description` property.

  #### Declaration

  Swift

      var description: String { get }