    struct GroupManagementTrait

API for the GroupManagement trait, which is used to create, delete, and modify groups.
- `


  ### [identifier](https://developers.home.google.com/reference/swift/GoogleHomeTypes/Enums/Google/GroupManagementTrait#/s:15GoogleHomeTypes0A0O20GroupManagementTraitV10identifierSSvpZ)


  ` The trait identifier.

  #### Declaration

  Swift

      static let identifier: String

- `


  ### [supportedEventTypes](https://developers.home.google.com/reference/swift/GoogleHomeTypes/Enums/Google/GroupManagementTrait#/s:15GoogleHomeTypes0A0O20GroupManagementTraitV014supportedEventC0Say0aB3SDK0H0_pXpGvpZ)


  ` List of all event types on the given Trait.

  Currently, only `MatterTrait` traits support any events, but this will likely expand to other
  traits in the future.

  #### Declaration

  Swift

      static let supportedEventTypes: [any Event.Type]

- `


  ### [supportedCommandTypes](https://developers.home.google.com/reference/swift/GoogleHomeTypes/Enums/Google/GroupManagementTrait#/s:15GoogleHomeTypes0A0O20GroupManagementTraitV016supportedCommandC0Say0aB3SDK0H0_pXpGvpZ)


  ` List of all commands supported by the Trait's definition. The commands supported by a specific
  Trait instance may vary.

  #### Declaration

  Swift

      static var supportedCommandTypes: [any Command.Type] { get }

- `


  ### [metadata](https://developers.home.google.com/reference/swift/GoogleHomeTypes/Enums/Google/GroupManagementTrait#/s:15GoogleHomeTypes0A0O20GroupManagementTraitV8metadata0aB3SDK0F8MetadataVvp)


  ` Metadata about this `Trait`.

  #### Declaration

  Swift

      let metadata: TraitMetadata

- `


  ### [init(decoder:interactionProxy:metadata:)](https://developers.home.google.com/reference/swift/GoogleHomeTypes/Enums/Google/GroupManagementTrait#/s:15GoogleHomeTypes0A0O20GroupManagementTraitV7decoder16interactionProxy8metadataAE0aB3SDK0F7DecoderV_AI011InteractionI0_pSgAI0F8MetadataVtKcfc)


  ` Creates a new Trait instance using data read from the given `TraitDecoder`.
  Throws
  `HomeError.parseError` when parsing fails.

  #### Declaration

  Swift

      init(decoder: TraitDecoder, interactionProxy: (any InteractionProxy)?, metadata: TraitMetadata) throws

  #### Parameters

  |---|---|
  | ` decoder ` | The raw data representing this Trait. |
  | ` interactionProxy ` | Proxy to the Interaction Client. |
  | ` metadata ` | Metadata about this Trait. |

- `


  ### [encode(with:)](https://developers.home.google.com/reference/swift/GoogleHomeTypes/Enums/Google/GroupManagementTrait#/s:15GoogleHomeTypes0A0O20GroupManagementTraitV6encode4withy0aB3SDK0F7EncoderC_tKF)


  ` Writes this object to the given `TraitEncoder`.
  Throws `HomeError.encodingFailed` if the data could not be encoded.

  #### Declaration

  Swift

      func encode(with encoder: TraitEncoder) throws

- `


  ### [==(_:_:)](https://developers.home.google.com/reference/swift/GoogleHomeTypes/Enums/Google/GroupManagementTrait#/s:15GoogleHomeTypes0A0O20GroupManagementTraitV2eeoiySbAE_AEtFZ)


  ` 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: https://developers.home.google.com/reference/swift/GoogleHomeTypes/Enums/Google.html.GroupManagementTrait, rhs: https://developers.home.google.com/reference/swift/GoogleHomeTypes/Enums/Google.html.GroupManagementTrait) -> Bool

  #### Parameters

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

- `


  ### [hash(into:)](https://developers.home.google.com/reference/swift/GoogleHomeTypes/Enums/Google/GroupManagementTrait#/s:15GoogleHomeTypes0A0O20GroupManagementTraitV4hash4intoys6HasherVz_tF)


  ` Hashes the essential components of this value by feeding them into the
  given hasher.

  Implement this method to conform to the `Hashable` protocol. The
  components used for hashing must be the same as the components compared
  in your type's `==` operator implementation. Call `hasher.combine(_:)`
  with each of these components.
  Important

  In your implementation of `hash(into:)`,
  don't call `finalize()` on the `hasher` instance provided,
  or replace it with a different instance.
  Doing so may become a compile-time error in the future.

  #### Declaration

  Swift

      func hash(into hasher: inout Hasher)

- `


  ### [createGroup(name:memberDeviceObjectIdsArray:policyId:)](https://developers.home.google.com/reference/swift/GoogleHomeTypes/Enums/Google/GroupManagementTrait#/s:15GoogleHomeTypes0A0O20GroupManagementTraitV06createD04name26memberDeviceObjectIdsArray8policyIdAE06CreateD0V8ResponseVSSSg_SaySSGANtYaKF)


  ` Create a group with the option to specify members by device id.

  #### Declaration

  Swift

      func createGroup(name: String? = nil, memberDeviceObjectIdsArray: [String], policyId: String? = nil) async throws -> https://developers.home.google.com/reference/swift/GoogleHomeTypes/Enums/Google.html.GroupManagementTrait.CreateGroupResponse

  #### Parameters

  |---|---|
  | ` name ` | The user-given name for the group |
  | ` memberDeviceObjectIdsArray ` | The IDs of devices to add at time of creation. |
  | ` policyId ` | <br /> |

- `


  ### [createUserDefinedGroup(name:memberDeviceObjectIdsArray:)](https://developers.home.google.com/reference/swift/GoogleHomeTypes/Enums/Google/GroupManagementTrait#/s:15GoogleHomeTypes0A0O20GroupManagementTraitV017createUserDefinedD04name26memberDeviceObjectIdsArrayAE06CreatehiD0V8ResponseVSSSg_SaySSGtYaKF)


  ` Create a user-defined group with the option to specify members by device id.

  #### Declaration

  Swift

      func createUserDefinedGroup(name: String? = nil, memberDeviceObjectIdsArray: [String]) async throws -> https://developers.home.google.com/reference/swift/GoogleHomeTypes/Enums/Google.html.GroupManagementTrait.CreateUserDefinedGroupResponse

  #### Parameters

  |---|---|
  | ` name ` | The user-given name for the group |
  | ` memberDeviceObjectIdsArray ` | The IDs of devices to add at time of creation. |

- `


  ### [createCastSpeakerGroup(name:memberDeviceObjectIdsArray:)](https://developers.home.google.com/reference/swift/GoogleHomeTypes/Enums/Google/GroupManagementTrait#/s:15GoogleHomeTypes0A0O20GroupManagementTraitV017createCastSpeakerD04name26memberDeviceObjectIdsArrayAE06CreatehiD0V8ResponseVSSSg_SaySSGtYaKF)


  ` Create a speaker group (`CastSpeakerGroup`) with the option to specify members by
  device id.

  #### Declaration

  Swift

      func createCastSpeakerGroup(name: String? = nil, memberDeviceObjectIdsArray: [String]) async throws -> https://developers.home.google.com/reference/swift/GoogleHomeTypes/Enums/Google.html.GroupManagementTrait.CreateCastSpeakerGroupResponse

  #### Parameters

  |---|---|
  | ` name ` | The user-given name for the group |
  | ` memberDeviceObjectIdsArray ` | The IDs of devices to add at time of creation. |

- `


  ### [deleteGroup(groupObjectId:)](https://developers.home.google.com/reference/swift/GoogleHomeTypes/Enums/Google/GroupManagementTrait#/s:15GoogleHomeTypes0A0O20GroupManagementTraitV06deleteD013groupObjectIdAE06DeleteD0V8ResponseVSSSg_tYaKF)


  ` Delete a device group.

  #### Declaration

  Swift

      func deleteGroup(groupObjectId: String? = nil) async throws -> https://developers.home.google.com/reference/swift/GoogleHomeTypes/Enums/Google.html.GroupManagementTrait.DeleteGroupResponse

  #### Parameters

  |---|---|
  | ` groupObjectId ` | The ID of the group to delete. |

- `


  ### [addGroupMembers(groupObjectId:memberDeviceObjectIdsArray:)](https://developers.home.google.com/reference/swift/GoogleHomeTypes/Enums/Google/GroupManagementTrait#/s:15GoogleHomeTypes0A0O20GroupManagementTraitV03addD7Members13groupObjectId012memberDeviceJ8IdsArrayAE03AdddH0V8ResponseVSSSg_SaySSGtYaKF)


  ` Add members to a device group.

  #### Declaration

  Swift

      func addGroupMembers(groupObjectId: String? = nil, memberDeviceObjectIdsArray: [String]) async throws -> https://developers.home.google.com/reference/swift/GoogleHomeTypes/Enums/Google.html.GroupManagementTrait.AddGroupMembersResponse

  #### Parameters

  |---|---|
  | ` groupObjectId ` | The ID of the group to add members to. |
  | ` memberDeviceObjectIdsArray ` | The IDs of devices to add to the group. |

- `


  ### [removeGroupMembers(groupObjectId:memberDeviceObjectIdsArray:)](https://developers.home.google.com/reference/swift/GoogleHomeTypes/Enums/Google/GroupManagementTrait#/s:15GoogleHomeTypes0A0O20GroupManagementTraitV06removeD7Members13groupObjectId012memberDeviceJ8IdsArrayAE06RemovedH0V8ResponseVSSSg_SaySSGtYaKF)


  ` Command to remove members from a device group.

  #### Declaration

  Swift

      func removeGroupMembers(groupObjectId: String? = nil, memberDeviceObjectIdsArray: [String]) async throws -> https://developers.home.google.com/reference/swift/GoogleHomeTypes/Enums/Google.html.GroupManagementTrait.RemoveGroupMembersResponse

  #### Parameters

  |---|---|
  | ` groupObjectId ` | The ID of the group to remove members from. |
  | ` memberDeviceObjectIdsArray ` | The IDs of devices to remove from the group. |

- `


  ### [removeAllGroupMembers(groupObjectId:)](https://developers.home.google.com/reference/swift/GoogleHomeTypes/Enums/Google/GroupManagementTrait#/s:15GoogleHomeTypes0A0O20GroupManagementTraitV09removeAllD7Members13groupObjectIdAE06RemovehdI0V8ResponseVSSSg_tYaKF)


  ` Command to remove all members from a device group.

  #### Declaration

  Swift

      func removeAllGroupMembers(groupObjectId: String? = nil) async throws -> https://developers.home.google.com/reference/swift/GoogleHomeTypes/Enums/Google.html.GroupManagementTrait.RemoveAllGroupMembersResponse

  #### Parameters

  |---|---|
  | ` groupObjectId ` | The ID of the group to remove all members from. |