<br />

The Automation API for Android supports most traits, but support for some
attributes, events, and commands in a trait may be limited.

In general:

- Any traits and types that you intend to use in your app with the Automation API must be registered at initialization. See [Create a Home instance](https://developers.home.google.com/apis/android/initialize#create_a_home_instance).
- Any attribute may be used in starters or conditions.
- Cloud-to-cloud devices that don't report their state cannot be used as triggers in automations, created either manually or through discovery.
- Even if a device supports supports the traits listed here, a device may be
  blocked from use as a starter or action in the Automation API due to
  [Report State](https://developers.home.google.com/cloud-to-cloud/integration/report-state)
  quality thresholds:

  - Devices with a Report State success rate lower than **90%** are blocked from use as starters.
  - Devices with a command execution success rate lower than **95%** are blocked from use as actions.

  Refer to this [list of device models](https://developers.home.google.com/automations/supported-devices)
  and the specific starters and actions that they support for the
  Automations API.
  | **Note:** The Discovery API filters out devices that don't meet the Report State quality thresholds.
- Commands can only be used as actions.

- Some traits, such as
  [`AssistantBroadcast`](https://developers.home.google.com/reference/kotlin/com/google/home/google/AssistantBroadcast),
  are only available for use in the Automation API.

- The
  [`okGoogle`](https://developers.home.google.com/reference/kotlin/com/google/home/google/AssistantFulfillmentTrait.OkGoogleCommand)
  command is a structure-level command and can be used to automate any device
  in the structure. However, a Home APIs app may not have access to every
  device. See
  [OkGoogle permissions](https://developers.home.google.com/apis/android/permissions#okgoogle_permissions) to see
  how permissions are enforced in various cases.

- Some traits have prerequisites:

  - In order to use [`Time.ScheduledTimeEvent`](https://developers.home.google.com/reference/kotlin/com/google/home/google/TimeTrait.ScheduledTimeEvent), the structure in which the automation runs must have a street address that was set up in the [Google Home app (GHA)](https://play.google.com/store/apps/details?id=com.google.android.apps.chromecast.app). [Change Google
    home address](https://support.google.com/googlenest/answer/7551002) explains how a user can enter the structure address. If the address is not set up in the GHA, the automation fails to create, and an error is thrown with message "The ScheduledTimeEvent is not supported by the <var translate="no">structure</var>."
  - In order to use the `AreaPresenceState` or `AreaAttendanceState` traits, the user must set up presence sensing in the GHA.
  - In order to use the `ObjectDetection` trait, the user must have an active [Nest Aware](https://store.google.com/product/nest_aware) subscription.

Simplified versions of some traits are also available for use in automations.
For more information, see
[Simplified traits on Android](https://developers.home.google.com/apis/android/automation/simplified-traits).