# Servidores e autenticação O painel central gerencia vários servidores. As requisições REST são enviadas à URL do servidor selecionado, usando a credencial exigida pelo endpoint. ## URLs de cadastro | Campo | Valor | |---|---| | Console e documentação | `https://wpp.atendro.cloud` | | API do servidor 1 | `https://1.atendro.cloud` | | API local padrão | `http://127.0.0.1:8091` | | Token do servidor | `ATENDROZAP_ADMIN_TOKEN` desse servidor, cadastrado no backend privado | No Atendro, selecione o provedor `atendrozap` quando a integração estiver implementada. A URL deve apontar para a API, sem acrescentar `/v1` ou `/instance`. Para outro servidor, cadastre a URL e o token daquele servidor. ## Token administrativo Envie o header `admintoken` para criar e listar instâncias, consultar capacidades, administrar instâncias por ID e configurar o webhook global. ```sh curl "$ATENDROZAP_URL/v1/capabilities" \ --header "admintoken: $ATENDROZAP_ADMIN_TOKEN" ``` O token é definido no servidor AtendroZAP. Não use a senha do console, o segredo de assinatura do webhook ou uma credencial do provedor anterior. Para copiar o token de um servidor já cadastrado, entre no console e abra **Servidores**. Abaixo da URL, clique no valor mascarado ou no ícone de **Token administrativo**. O painel busca a credencial somente nesse clique e a copia para a área de transferência, mantendo a tela mascarada. Essa ação exige uma sessão autenticada; não reemite o token nem altera instâncias. Use o valor no cadastro privado do backend da aplicação que consumirá a API. ## Token da instância Envie o header `token` nas operações da instância. Esse segredo é retornado em `POST /instance/init` e na reemissão administrativa de token. ```sh curl "$ATENDROZAP_URL/instance/status" \ --header "token: $ATENDROZAP_INSTANCE_TOKEN" ``` Guarde o token associado ao ID da instância, ao servidor e à empresa. `GET /instance/all` não recupera o segredo. O token administrativo não substitui o token da instância nessas rotas. ## Headers aceitos Envie exatamente um header da credencial exigida. Headers ausentes, inválidos ou duplicados devolvem `401 unauthorized`. `Authorization: Bearer`, query string e `instancekey` não substituem `admintoken` e `token`. A única exceção para query é `GET /call/{id}/audio`, que aceita `?token=` na abertura do WebSocket. O console faz proxy usando o header no backend, sem entregar o token ao navegador. O botão de testar cadastro deve consultar somente readiness e capacidades. Não conecte, reinicie, exclua ou reemita tokens como teste de autenticação. ## Reemissão de token Use [POST /v1/instances/{id}/token](https://wpp.atendro.cloud/docs/api/admin-reissue-token.md) com `admintoken` quando for necessário substituir o segredo. `graceSeconds` aceita de 0 a 3600 segundos de convivência com o anterior; zero o revoga imediatamente. A aplicação deve salvar o novo token no backend antes de substituir a credencial usada pelas próximas requisições. ## Segredos de webhook e mídia O segredo de assinatura do webhook é separado dos tokens REST. Ele valida `X-AtendroZAP-Signature` no receptor, como descrito em [receber eventos](https://wpp.atendro.cloud/docs/guias/receber-eventos.md). Links de mídia carregam um token temporário na própria URL. Consuma o `fileURL` completo e respeite `expiresAt`; não remonte o link nem inclua sua URL em logs. ## Cadastro no Atendro Adapte as restrições de domínio e o tipo de provedor no consumidor antes da ativação. Trocar a URL de um cadastro do provedor anterior não implementa o contrato AtendroZAP. O navegador do atendente deve chamar o backend do Atendro. Tokens administrativos, tokens de instância e segredos de webhook ficam nesse backend. Esta documentação pública não recebe credenciais.