Presença dos atendentes
Informa que o atendente está online, define o recado de status e lista quem está disponível.
A presença mostra à equipe quem está disponível na caixa de entrada. O painel envia um heartbeat (sinal de vida) a cada poucos segundos. O estado é calculado pelo tempo desde o último sinal: até 60 segundos é online, até 5 minutos é idle (ausente), e depois disso offline.
Enviar heartbeat
Registra o usuário do token como atendente e carimba a hora do sinal. Sem corpo.
/api/v1/admin/whatsapp/heartbeatAdminRegistra que o usuário do token está ativo agora
Exemplo de requisição (Enviar heartbeat)
curl -X POST "$BASE_URL/api/v1/admin/whatsapp/heartbeat" \
-H "Authorization: Bearer $TOKEN"Resposta (Enviar heartbeat)
{
"ok": true,
"user_id": "d4613dde-ac7a-431c-9232-50d8cd6ad5fc",
"last_heartbeat": "2026-10-11T22:00:00Z"
}Campos da resposta
okbooleantrue.user_idstringlast_heartbeatstringErros (Enviar heartbeat)
| Status | Quando | Corpo |
|---|---|---|
| 401 | Token sem usuário. | {"error":"auth required"} |
| 401 | Sem token, token inválido ou expirado. | {"error":"missing authorization header"} |
| 403 | O módulo WhatsApp Commerce está desligado na loja, o usuário não é administrador ou não tem o privilégio exigido. | {"error":"module_disabled","module":"whatsapp-commerce"} ou {"error":"insufficient privileges","required":"manage_orders"} ou {"error":"admin access required"} |
Listar presença
Devolve um array simples (sem envelope), um item por atendente.
/api/v1/admin/whatsapp/presenceAdminLista os atendentes e o estado de cada um
Exemplo de requisição (Listar presença)
curl "$BASE_URL/api/v1/admin/whatsapp/presence" \
-H "Authorization: Bearer $TOKEN"Resposta (Listar presença)
[
{
"user_id": "d4613dde-ac7a-431c-9232-50d8cd6ad5fc",
"name": "Ana Souza",
"email": "ana@lojaexemplo.com.br",
"status": "online",
"last_heartbeat": "2026-10-11T22:00:00Z",
"last_status_label": "Em reunião até 15h"
}
]Campos da resposta
user_idstringnamestringemailstringstatusstringonlineidleofflinelast_heartbeatstringlast_status_labelstringErros (Listar presença)
| Status | Quando | Corpo |
|---|---|---|
| 401 | Sem token, token inválido ou expirado. | {"error":"missing authorization header"} |
| 403 | O módulo WhatsApp Commerce está desligado na loja, o usuário não é administrador ou não tem o privilégio exigido. | {"error":"module_disabled","module":"whatsapp-commerce"} ou {"error":"insufficient privileges","required":"manage_orders"} ou {"error":"admin access required"} |
Definir recado de status
O recado aparece na lista de presença. Texto acima de 32 caracteres é cortado. Envie label vazio para apagar.
/api/v1/admin/whatsapp/presence/statusAdminDefine o recado de status do usuário do token
Corpo da requisição
labelstringobrigatórioExemplo de requisição (Definir recado de status)
curl -X POST "$BASE_URL/api/v1/admin/whatsapp/presence/status" \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{
"label": "Em reunião até 15h"
}'Resposta (Definir recado de status)
{
"ok": true
}Campos da resposta
okbooleantrue.Erros (Definir recado de status)
| Status | Quando | Corpo |
|---|---|---|
| 400 | Corpo que não é JSON. | {"error":"invalid request body"} |
| 401 | Sem token, token inválido ou expirado. | {"error":"missing authorization header"} |
| 403 | O módulo WhatsApp Commerce está desligado na loja, o usuário não é administrador ou não tem o privilégio exigido. | {"error":"module_disabled","module":"whatsapp-commerce"} ou {"error":"insufficient privileges","required":"manage_orders"} ou {"error":"admin access required"} |
| 404 | O usuário ainda não é atendente registrado: envie um heartbeat antes. | {"error":"attendant not registered"} |