> ## Documentation Index
> Fetch the complete documentation index at: https://docs.vzaps.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Chatwoot

> Configurar integração Chatwoot e importar dados com o SDK Go

Use `client.Chatwoot` para conectar uma instância VZaps ao Chatwoot.

Campos comuns em toda chamada:

| Campo           | Tipo     | Obrigatório | Descrição           |
| --------------- | -------- | ----------- | ------------------- |
| `InstanceID`    | `string` | Sim         | ID da instância.    |
| `InstanceToken` | `string` | Sim         | Token da instância. |

## `Chatwoot.Get(ctx, instanceID, options)`

Lê configuração atual, incluindo `webhook_url` e `token_masked` quando aplicável.

```go theme={null}
chatwoot, err := client.Chatwoot.Get(ctx, "VZ...", vzaps.InstanceOptions{
	InstanceToken: "instance-token",
})
fmt.Printf("%#v\n", chatwoot)
```

**Retorno:** configuracao Chatwoot (`enabled`, `url`, `account_id`, `webhook_url`, `token_masked`, etc.).

## `Chatwoot.Set(ctx, req)`

Cria ou atualiza integração Chatwoot da instância.

```go theme={null}
saved, err := client.Chatwoot.Set(ctx, vzaps.ChatwootRequest{
	InstanceScopedRequest: vzaps.InstanceScopedRequest{
		InstanceID:    "VZ...",
		InstanceToken: "instance-token",
	},
	Enabled:                 true,
	URL:                     "https://app.chatwoot.com",
	AccountID:               "1",
	Token:                   "chatwoot-api-token",
	NameInbox:               "WhatsApp VZaps",
	SignMsg:                 true,
	SignDelimiter:           "\n",
	Number:                  "5511999999999",
	ReopenConversation:      true,
	ConversationPending:     false,
	ImportContacts:          true,
	ImportMessages:          true,
	DaysLimitImportMessages: 30,
	AutoCreate:              true,
	Organization:            "Minha empresa",
	Logo:                    "",
	IgnoreGroups:            false,
	IgnoreJids:              []any{},
})
fmt.Printf("%#v\n", saved)
```

**Retorno:** configuracao salva (inclui `webhook_url` quando gerada).

Principais campos do payload:

| Campo (JSON)                 | Campo Go                  | Obrigatório | Descrição                                              |
| ---------------------------- | ------------------------- | ----------- | ------------------------------------------------------ |
| `enabled`                    | `Enabled`                 | Sim         | Habilita ou desabilita a integração.                   |
| `url`                        | `URL`                     | Sim         | URL base do Chatwoot.                                  |
| `account_id`                 | `AccountID`               | Sim         | ID numérico da conta.                                  |
| `token`                      | `Token`                   | Sim         | Token API do Chatwoot.                                 |
| `name_inbox`                 | `NameInbox`               | Não         | Nome da inbox na API.                                  |
| `auto_create`                | `AutoCreate`              | Não         | Cria inbox e webhook automáticamente.                  |
| `import_contacts`            | `ImportContacts`          | Não         | Importa contatos no fluxo inicial.                     |
| `import_messages`            | `ImportMessages`          | Não         | Importa mensagens no fluxo inicial.                    |
| `days_limit_import_messages` | `DaysLimitImportMessages` | Não         | Janela de importação de mensagens em dias. Mínimo `1`. |
| `ignore_groups`              | `IgnoreGroups`            | Não         | Ignora mensagens de grupo.                             |
| `ignore_jids`                | `IgnoreJids`              | Não         | JIDs a ignorar.                                        |

<Tip>
  Copie `webhook_url` da resposta para a inbox API do Chatwoot quando `AutoCreate` não aplicar automáticamente.
</Tip>

## `Chatwoot.Delete(ctx, instanceID, options)`

Remove integração Chatwoot da instância.

```go theme={null}
_, err := client.Chatwoot.Delete(ctx, "VZ...", vzaps.InstanceOptions{
	InstanceToken: "instance-token",
})
```

**Retorno:** confirmacao de remocao da integracao.

## `Chatwoot.TriggerImport(ctx, req)`

Dispara importação manual de contatos, mensagens ou ambos.

Importar contatos:

```go theme={null}
_, err := client.Chatwoot.TriggerImport(ctx, vzaps.ChatwootImportRequest{
	InstanceScopedRequest: vzaps.InstanceScopedRequest{
		InstanceID:    "VZ...",
		InstanceToken: "instance-token",
	},
	What: "contacts",
})
```

**Retorno:** confirmacao do job de importacao (`contacts`, `messages` ou `all`).

Importar mensagens:

```go theme={null}
_, err := client.Chatwoot.TriggerImport(ctx, vzaps.ChatwootImportRequest{
	InstanceScopedRequest: vzaps.InstanceScopedRequest{
		InstanceID:    "VZ...",
		InstanceToken: "instance-token",
	},
	What: "messages",
})
```

Importar tudo:

```go theme={null}
_, err := client.Chatwoot.TriggerImport(ctx, vzaps.ChatwootImportRequest{
	InstanceScopedRequest: vzaps.InstanceScopedRequest{
		InstanceID:    "VZ...",
		InstanceToken: "instance-token",
	},
	What: "all",
})
```

Valores aceitos para `What`: `contacts`, `messages`, `all`.
