> For the complete documentation index, see [llms.txt](https://digitalsac.gitbook.io/digicalls/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://digitalsac.gitbook.io/digicalls/digicalls-sdk/conceitos-fundamentais/dispositivo.md).

# Dispositivo

No SDK, cada **device token** (`dev_…`) representa uma linha WhatsApp pareada no DigiCalls.

### Propriedades (`getDevices()`)

| Campo       | Tipo      | Descrição                                  |
| ----------- | --------- | ------------------------------------------ |
| `token`     | `string`  | Device token (`dev_…`)                     |
| `sessionId` | `string`  | ID interno da sessão no servidor           |
| `name`      | `string`  | Nome definido no provisionamento           |
| `number`    | `string`  | Número WhatsApp (dígitos), após pareamento |
| `connected` | `boolean` | `true` quando state = `open`               |

### Estados (via SSE `auth-state` / `session-list`)

| State        | Significado                    |
| ------------ | ------------------------------ |
| `open`       | Pareado e pronto para chamadas |
| `connecting` | Aguardando QR ou passkey       |
| `close`      | Desconectado / logout WhatsApp |

### Provisionamento (API key)

| Endpoint                            | Função                   |
| ----------------------------------- | ------------------------ |
| `POST /api/devices`                 | Cria device + token      |
| `GET /api/devices/{token}/qr`       | QR string                |
| `GET /api/devices/{token}/status`   | `{ state, paired, jid }` |
| `POST /api/devices/{token}/restart` | Novo QR                  |
| `DELETE /api/devices/{token}`       | Remove device            |

### Passkey (alternativa ao QR)

Endpoints disponíveis para pareamento por passkey (quando habilitado no servidor):

* `GET /api/devices/{token}/passkey`
* `POST /api/devices/{token}/passkey/response`
* `POST /api/devices/{token}/passkey/confirm`

### Múltiplas linhas

```typescript
await dc.addDevices(["dev_linha2"]);
const devices = dc.getDevices();
```

Use `fromTokens` em `startCall` para escolher qual linha disca.

### Device oficial (WABA)

Conexões **oficiais** não usam token `dev_…` — são cadastradas no painel com credenciais Meta. O SDK provisioning target é o fluxo **QR**. Para WABA, use o painel DigiCalls ou API de permissão documentada em WABA.

### Exemplo completo

```typescript
const dc = new DigiCalls({ baseUrl, tokens: ["dev_a"] });

dc.onUpdate(() => {
  for (const d of dc.getDevices()) {
    console.log(d.name, d.connected ? "online" : "offline", d.number);
  }
});
```
