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

# Clientes

> Crie registros de Clientes, envie links de pareamento e mova Números entre Clientes com o cliente de equipe.

Um Cliente representa um dos seus próprios clientes dentro de um projeto. Cada
Cliente é dono dos Números que conecta. Use `platform.customers` em um cliente
de equipe.

| Tarefa | Permissão |
| - | - |
| Ler Clientes, os Números e eventos deles e os links de pareamento | `customers:read` |
| Ativar Clientes; criar, atualizar, arquivar e restaurar Clientes; criar e revogar links de pareamento; transferir Números | `customers:manage` |

## Ative Clientes em um projeto

```typescript theme={null}
const status = await platform.customers.status("<project-id>");

if (!status.data.data.enabled) {
  await platform.customers.enable("<project-id>", { idempotencyKey: "enable-customers-<project-id>" });
}
```

## Crie um Cliente

```typescript theme={null}
const customer = await platform.customers.create(
  { projectId: "<project-id>", name: "Ada", externalCustomerId: "crm_456" },
  { idempotencyKey: "create-customer-crm_456" },
);

const customerId = customer.data.data.id;
```

`externalCustomerId` é o seu próprio ID para o Cliente. Um Cliente não tem
número de telefone. Os números de telefone pertencem aos Números e aos links de
pareamento.

`create`, `enable`, `archive`, `restore`, `createPairingLink` e
`transferNumber` recebem um argumento obrigatório de opções da solicitação.
Passe uma `idempotencyKey` nele. A criação de Clientes e de links de pareamento
exige uma.

## Envie um link de pareamento

Um link de pareamento permite que o Cliente conecte a conta do WhatsApp dele:

```typescript theme={null}
const link = await platform.customers.createPairingLink(
  customerId,
  { projectId: "<project-id>", expectedPhone: "+15551234567", methods: ["qr", "phone"] },
  { idempotencyKey: "pairing-crm_456-1" },
);

console.log(link.data.data.url);
```

A URL é retornada apenas na primeira resposta. Uma repetição com a mesma chave
de idempotência retorna `url: null`.

A Polymorfa verifica `expectedPhone` com um dos seus Números conectados. Um
número confirmado como fora do WhatsApp falha com `400 phone_not_registered`.
Quando nenhum Número conectado consegue verificá-lo, o link é criado mesmo
assim.

Liste os links com `listPairingLinks(customerId, projectId)` e retire um com
`revokePairingLink(customerId, pairingLinkId, projectId)`. Veja
[Links de pareamento](/pt-br/guides/customers/pairing-links).

## Liste Clientes

```typescript theme={null}
const page = await platform.customers.list({ projectId: "<project-id>", search: "Ada" });

for (const summary of page.data.data) {
  console.log(summary.id, summary.name, summary.numberCount);
}
```

Siga `page.data.page.nextCursor` para obter mais resultados. Veja
[Leia todas as páginas](/pt-br/sdks/typescript/errors#leia-todas-as-páginas).

## Leia os Números e eventos de um Cliente

```typescript theme={null}
const numbers = await platform.customers.listNumbers(customerId, "<project-id>");
for (const number of numbers.data.data) console.log(number.sessionId, number.status);

const events = await platform.customers.listEvents(customerId, { projectId: "<project-id>", limit: 20 });
console.log(events.data.data.length);
```

## Mova um Número para outro Cliente

```typescript theme={null}
await platform.customers.transferNumber(
  "<target-customer-id>",
  "<number-id>",
  { projectId: "<project-id>", sourceCustomerId: customerId, confirm: true },
  { idempotencyKey: "transfer-<number-id>-to-<target-customer-id>" },
);
```

## Arquive e restaure um Cliente

```typescript theme={null}
await platform.customers.archive(customerId, { projectId: "<project-id>" }, { idempotencyKey: "archive-crm_456" });
await platform.customers.restore(customerId, { projectId: "<project-id>" }, { idempotencyKey: "restore-crm_456" });
```

Veja [Clientes](/guides/customers/overview) para saber o que significa cada
estado de um Cliente.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.