Pular para o conteúdo principal
Use client.Groups para operações de grupos WhatsApp em uma instância. Campos comuns em toda chamada:
CampoTipoObrigatórioDescrição
InstanceIDstringSimID da instância.
InstanceTokenstringSimToken da instância.
Operações específicas de grupo também exigem GroupID no payload.

Groups.List(ctx, req)

Lista grupos com páginação.
groups, err := client.Groups.List(ctx, vzaps.GroupListRequest{
	InstanceScopedRequest: vzaps.InstanceScopedRequest{
		InstanceID:    "VZ...",
		InstanceToken: "instance-token",
	},
	Page:     1,
	PageSize: 20,
})
fmt.Printf("%#v\n", groups)
Retorno: envelope { code, success, data.groups[] } com paginacao quando aplicavel.

Groups.Get(ctx, req)

Obtém metadados do grupo.
group, err := client.Groups.Get(ctx, vzaps.GroupInfoRequest{
	InstanceScopedRequest: vzaps.InstanceScopedRequest{
		InstanceID:    "VZ...",
		InstanceToken: "instance-token",
	},
	GroupID: "120363012345678901@g.us",
})
fmt.Printf("%#v\n", group)
Retorno: envelope { code, success, data } com metadados do grupo (jid, name, topic, participantes, etc.). Obtém ou redefine link de convite.
invite, err := client.Groups.InviteLink(ctx, vzaps.GroupInviteLinkRequest{
	GroupInfoRequest: vzaps.GroupInfoRequest{
		InstanceScopedRequest: vzaps.InstanceScopedRequest{
			InstanceID:    "VZ...",
			InstanceToken: "instance-token",
		},
		GroupID: "120363012345678901@g.us",
	},
	Reset: false,
})
fmt.Printf("%#v\n", invite)
Retorno: envelope { code, success, data.invite_link }. Com reset:
newInvite, err := client.Groups.InviteLink(ctx, vzaps.GroupInviteLinkRequest{
	GroupInfoRequest: vzaps.GroupInfoRequest{
		InstanceScopedRequest: vzaps.InstanceScopedRequest{
			InstanceID:    "VZ...",
			InstanceToken: "instance-token",
		},
		GroupID: "120363012345678901@g.us",
	},
	Reset: true,
})

Groups.SetPhoto(ctx, req)

Altera foto do grupo. Aceita URL pública ou data URL base64.
_, err := client.Groups.SetPhoto(ctx, vzaps.GroupMutationRequest{
	InstanceScopedRequest: vzaps.InstanceScopedRequest{
		InstanceID:    "VZ...",
		InstanceToken: "instance-token",
	},
	GroupID: "120363012345678901@g.us",
	Image:   "https://cdn.example.com/groups/photo.jpg",
})
Retorno: envelope { code, success, data.details } confirmando a alteracao.

Groups.SetName(ctx, req)

Altera nome do grupo.
_, err := client.Groups.SetName(ctx, vzaps.GroupMutationRequest{
	InstanceScopedRequest: vzaps.InstanceScopedRequest{
		InstanceID:    "VZ...",
		InstanceToken: "instance-token",
	},
	GroupID: "120363012345678901@g.us",
	Name:    "Suporte VIP",
})
Retorno: envelope { code, success, data.details } confirmando a alteracao.

Groups.SetDescription(ctx, req)

Altera descrição do grupo.
_, err := client.Groups.SetDescription(ctx, vzaps.GroupMutationRequest{
	InstanceScopedRequest: vzaps.InstanceScopedRequest{
		InstanceID:    "VZ...",
		InstanceToken: "instance-token",
	},
	GroupID:     "120363012345678901@g.us",
	Description: "Canal oficial de suporte",
})
Retorno: envelope { code, success, data.details } confirmando a alteracao.

Groups.SetSettings(ctx, req)

Altera configurações do grupo.
_, err := client.Groups.SetSettings(ctx, vzaps.GroupMutationRequest{
	InstanceScopedRequest: vzaps.InstanceScopedRequest{
		InstanceID:    "VZ...",
		InstanceToken: "instance-token",
	},
	GroupID:           "120363012345678901@g.us",
	AdminOnlyMessage:  true,
	AdminOnlySettings: false,
	DelayMessage:      0,
})
Retorno: envelope { code, success, data.details } confirmando a alteracao.

Groups.Create(ctx, req)

Cria grupo com participantes.
_, err := client.Groups.Create(ctx, vzaps.GroupMutationRequest{
	InstanceScopedRequest: vzaps.InstanceScopedRequest{
		InstanceID:    "VZ...",
		InstanceToken: "instance-token",
	},
	GroupName:        "Suporte VIP",
	GroupDescription: "Canal de suporte",
	GroupImage:       "https://cdn.example.com/groups/photo.jpg",
	Participants:     []string{"5511999999999", "5511888888888"},
})
Retorno: envelope { code, success, data } com dados do grupo criado.

Groups.AddAdmin(ctx, req)

Promove participantes a admin.
_, err := client.Groups.AddAdmin(ctx, vzaps.GroupMutationRequest{
	InstanceScopedRequest: vzaps.InstanceScopedRequest{
		InstanceID:    "VZ...",
		InstanceToken: "instance-token",
	},
	GroupID:      "120363012345678901@g.us",
	Participants: []string{"5511999999999"},
})
Retorno: envelope { code, success, data.details } confirmando a alteracao.

Groups.RemoveAdmin(ctx, req)

Remove admins do grupo.
_, err := client.Groups.RemoveAdmin(ctx, vzaps.GroupMutationRequest{
	InstanceScopedRequest: vzaps.InstanceScopedRequest{
		InstanceID:    "VZ...",
		InstanceToken: "instance-token",
	},
	GroupID:      "120363012345678901@g.us",
	Participants: []string{"5511999999999"},
})
Retorno: envelope { code, success, data.details } confirmando a alteracao.