# NodeCandidate

# NodeCandidate


```
sealed interface NodeCandidate
```

<br />

Known direct subclasses [ActionCandidate](https://developers.home.google.com/reference/kotlin/com/google/home/automation/ActionCandidate), [StarterCandidate](https://developers.home.google.com/reference/kotlin/com/google/home/automation/StarterCandidate), [StateReaderCandidate](https://developers.home.google.com/reference/kotlin/com/google/home/automation/StateReaderCandidate)

|---|---|
| `https://developers.home.google.com/reference/kotlin/com/google/home/automation/ActionCandidate` | Every ActionCandidate should implement this interface |
| `https://developers.home.google.com/reference/kotlin/com/google/home/automation/StarterCandidate` | Every StarterCandidate should implement this interface |
| `https://developers.home.google.com/reference/kotlin/com/google/home/automation/StateReaderCandidate` | Every StateReaderCandidate should implement this interface |

Known indirect subclasses [CommandCandidate](https://developers.home.google.com/reference/kotlin/com/google/home/automation/CommandCandidate), [EventCandidate](https://developers.home.google.com/reference/kotlin/com/google/home/automation/EventCandidate), [TraitAttributesCandidate](https://developers.home.google.com/reference/kotlin/com/google/home/automation/TraitAttributesCandidate)

|---|---|
| `https://developers.home.google.com/reference/kotlin/com/google/home/automation/CommandCandidate` | Represents automation candidate node corresponding to a command. |
| `https://developers.home.google.com/reference/kotlin/com/google/home/automation/EventCandidate` | Represents automation candidate nodes corresponding to an event. |
| `https://developers.home.google.com/reference/kotlin/com/google/home/automation/TraitAttributesCandidate` | Represents automation candidate nodes corresponding to a trait's attributes. |

*** ** * ** ***

The interface that every automation candidate should implement.

## Summary

| ### Public properties |
|---|---|
| `https://developers.home.google.com/reference/kotlin/com/google/home/HasId` | `https://developers.home.google.com/reference/kotlin/com/google/home/automation/NodeCandidate#entity()` |
| `https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.collections/-map/index.html<https://developers.home.google.com/reference/kotlin/com/google/home/Field, https://developers.home.google.com/reference/kotlin/com/google/home/automation/FieldDetails>` | `https://developers.home.google.com/reference/kotlin/com/google/home/automation/NodeCandidate#fieldDetailsMap()` |
| `https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.collections/-map/index.html<https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-string/index.html, https://developers.home.google.com/reference/kotlin/com/google/home/automation/FieldDetails>` | `https://developers.home.google.com/reference/kotlin/com/google/home/automation/NodeCandidate#fields()` **This property is deprecated.** Use fieldDetails instead |
| `https://developers.home.google.com/reference/kotlin/com/google/home/TraitFactory<https://developers.home.google.com/reference/kotlin/com/google/home/Trait>` | `https://developers.home.google.com/reference/kotlin/com/google/home/automation/NodeCandidate#trait()` |
| `https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.collections/-list/index.html<https://developers.home.google.com/reference/kotlin/com/google/home/DeviceTypeFactory<https://developers.home.google.com/reference/kotlin/com/google/home/DeviceType>>` | `https://developers.home.google.com/reference/kotlin/com/google/home/automation/NodeCandidate#types()` |
| `https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.collections/-list/index.html<https://developers.home.google.com/reference/kotlin/com/google/home/automation/UnsupportedCandidateReason>` | `https://developers.home.google.com/reference/kotlin/com/google/home/automation/NodeCandidate#unsupportedReasons()` |

## Public properties

### entity

```
val entity: HasId
```

### fieldDetailsMap

```
val fieldDetailsMap: Map<Field, FieldDetails>
```

### fields

```
val fields: Map<String, FieldDetails>
```

> [!CAUTION]
> **This property is deprecated.**   
> Use fieldDetails instead

### trait

```
val trait: TraitFactory<Trait>
```

### types

```
val types: List<DeviceTypeFactory<DeviceType>>
```

### unsupportedReasons

```
val unsupportedReasons: List<UnsupportedCandidateReason>
```