> ## 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.

# TypeBot

> Configurar TypeBot e gerenciar sessões com o SDK Java

Use `client.typebots()` para integrar fluxos TypeBot a uma instancia VZaps.

Campos comuns em todas as chamadas:

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

## `client.typebots().list(...)`

Lista os TypeBots configurados na instância.

```java theme={null}
var options = InstanceRequestOptions.builder().instanceToken(instanceToken).build();
JsonNode result = client.typebots().list(GenericInstanceRequest.builder()
    .instanceId(instanceId)
    .instanceToken(instanceToken)
    .build());
// Exemplo: tipagem estrita com DTOs publicados quando disponivel
```

**Retorno:** lista/array de configuracoes TypeBot da instancia (IDs, gatilhos, prioridade, etc.).

## `client.typebots().create(...)`

Cria uma configuração de TypeBot.

```java theme={null}
var options = InstanceRequestOptions.builder().instanceToken(instanceToken).build();
JsonNode result = client.typebots().create(GenericInstanceRequest.builder()
    .instanceId(instanceId)
    .instanceToken(instanceToken)
    .build());
// Exemplo: tipagem estrita com DTOs publicados quando disponivel
```

**Retorno:** configuracao criada, incluindo `typebot_id` para updates posteriores.

Campos principais do payload:

| Campo             | Tipo      | Obrigatório | Descrição                                                                   |
| ----------------- | --------- | ----------- | --------------------------------------------------------------------------- |
| `enabled`         | `boolean` | Sim         | Ativa ou desativa o TypeBot na avaliação de gatilhos.                       |
| `description`     | `string`  | Sim         | Nome para identificação.                                                    |
| `typebotUrl`      | `string`  | Sim         | URL base do TypeBot.                                                        |
| `publicId`        | `string`  | Sim         | Identificador público do flow.                                              |
| `triggerType`     | `string`  | Sim         | `all`, `keyword`, `contains`, `starts_with`, `regex`, `advanced` ou `none`. |
| `triggerValue`    | `string`  | Condicional | Texto ou regex do gatilho.                                                  |
| `triggerOperator` | `string`  | Condicional | Usado quando `triggerType` é `advanced`.                                    |
| `priority`        | `number`  | Sim         | Ordem de avaliação. Maior valor primeiro.                                   |
| `expireInMinutes` | `number`  | Sim         | Expira sessão após inatividade. `0` não expira.                             |

## `client.typebots().update(...)`

Atualiza um TypeBot existente. Informe `typebotId` retornado na criação ou listagem.

```java theme={null}
var options = InstanceRequestOptions.builder().instanceToken(instanceToken).build();
JsonNode result = client.typebots().update(GenericInstanceRequest.builder()
    .instanceId(instanceId)
    .instanceToken(instanceToken)
    .build());
// Exemplo: tipagem estrita com DTOs publicados quando disponivel
```

**Retorno:** configuracao atualizada ou `{ status: "ok" }`.

## `client.typebots().delete(...)`

Remove a configuração e as sessões associadas.

```java theme={null}
var options = InstanceRequestOptions.builder().instanceToken(instanceToken).build();
JsonNode result = client.typebots().delete(GenericInstanceRequest.builder()
    .instanceId(instanceId)
    .instanceToken(instanceToken)
    .build());
// Exemplo: tipagem estrita com DTOs publicados quando disponivel
```

**Retorno:** confirmacao de remocao (`{ status: "ok" }` ou mensagem equivalente).

## `client.typebots().startSession(...)`

Inicia sessão manualmente com um contato.

Por `publicId`:

```java theme={null}
var options = InstanceRequestOptions.builder().instanceToken(instanceToken).build();
JsonNode result = client.typebots().startSession(GenericInstanceRequest.builder()
    .instanceId(instanceId)
    .instanceToken(instanceToken)
    .build());
// Exemplo: tipagem estrita com DTOs publicados quando disponivel
```

**Retorno:** sessao iniciada (UUID da sessao, contato, status `opened`).

Por `typebotId`:

```ts theme={null}
await vzaps.typebots.startSession({
  instanceId: 'VZ...',
  instanceToken: 'instance-token',
  typebotId: '550e8400-e29b-41d4-a716-446655440000',
  phone: '5511999999999',
  message: 'Quero atendimento',
});
```

| Campo       | Tipo     | Obrigatório | Descrição                                                     |
| ----------- | -------- | ----------- | ------------------------------------------------------------- |
| `publicId`  | `string` | Condicional | Identificador público do flow. Use `publicId` ou `typebotId`. |
| `typebotId` | `string` | Condicional | ID interno do TypeBot.                                        |
| `phone`     | `string` | Sim         | Telefone do contato.                                          |
| `message`   | `string` | Sim         | Mensagem inicial enviada ao flow.                             |
| `pushName`  | `string` | Não         | Nome exibido do contato.                                      |

## `client.typebots().listSessions(...)`

Lista sessões ativas e encerradas.

```java theme={null}
var options = InstanceRequestOptions.builder().instanceToken(instanceToken).build();
JsonNode result = client.typebots().listSessions(GenericInstanceRequest.builder()
    .instanceId(instanceId)
    .instanceToken(instanceToken)
    .build());
// Exemplo: tipagem estrita com DTOs publicados quando disponivel
```

**Retorno:** lista de sessoes (`opened`, `paused`, `closed`) por contato/flow.

## `client.typebots().pauseSession(...)`

Pausa uma sessão aberta. Use o UUID da sessão em `session`.

```java theme={null}
var options = InstanceRequestOptions.builder().instanceToken(instanceToken).build();
JsonNode result = client.typebots().pauseSession(GenericInstanceRequest.builder()
    .instanceId(instanceId)
    .instanceToken(instanceToken)
    .build());
// Exemplo: tipagem estrita com DTOs publicados quando disponivel
```

**Retorno:** sessao com status `paused`.

## `client.typebots().closeSession(...)`

Encerra uma sessão manualmente.

Por UUID da sessão:

```java theme={null}
var options = InstanceRequestOptions.builder().instanceToken(instanceToken).build();
JsonNode result = client.typebots().closeSession(GenericInstanceRequest.builder()
    .instanceId(instanceId)
    .instanceToken(instanceToken)
    .build());
// Exemplo: tipagem estrita com DTOs publicados quando disponivel
```

**Retorno:** sessao encerrada (`closed`) ou confirmacao por telefone.

Por telefone do contato (encerra todas as sessões ativas desse número):

```ts theme={null}
await vzaps.typebots.closeSession({
  instanceId: 'VZ...',
  instanceToken: 'instance-token',
  session: '5511999999999',
});
```
