Skip to content

Agentes & Autenticação (Staff) ​

Os agentes são o time de atendimento da instância — quem responde tickets, usa notas internas e gerencia a operação. Possuem autenticação própria do módulo, separada tanto da plataforma quanto dos clientes.

Agentes não são apagados fisicamente: como o histórico dos tickets referencia o autor das respostas, a remoção é lógica (o registro sai de todas as consultas). Para tirar alguém de operação sem remover, use isActive: false.

Headers obrigatórios

Todas as requisições devem incluir o header X-Helpdesk-Id (UUID) com o identificador da instância. Os endpoints autenticados exigem também Authorization: Bearer {token} com o token do agente (guard helpdeskAgent).


Estrutura de Dados Principal ​

CampoTipoDescrição
idNumberIdentificador do agente.
nameStringNome completo (máx. 150 caracteres).
emailStringE-mail de login (máx. 250 caracteres, único por instância).
roleStringPapel: agent, supervisor ou admin (padrão: agent).
signatureStringAssinatura anexada às respostas públicas (opcional).
avatarUrlStringURL do avatar (máx. 255 caracteres, opcional).
isAvailableBooleanAceita distribuição automática (round-robin).
maxOpenTicketsNumberTeto de tickets abertos na fila do agente (null = ilimitado).
isActiveBooleanAgente ativo — inativos não conseguem autenticar nas rotas de staff.
helpdeskCategoriesArrayFilas (categorias) que o agente atende — vínculo N:N via categoryIds.

Roles ​

RolePermissões
agentOpera tickets, threads, categorias, tags, SLA, arquivos e métricas; gerencia apenas as próprias respostas prontas.
supervisorTudo do agent + gerenciar agentes (criar, editar, remover).
adminTudo do supervisor + gerenciar respostas prontas de qualquer agente.

Ações de gerenciamento de agentes por quem não é admin/supervisor falham com 403 FORBIDDEN.


Autenticação ​

Login ​

Autentica um agente e retorna o token de acesso da área de staff.

http
POST /v1/helpdesk/agent/agents/login

Payload (Body) ​

AtributoTipoObrigatórioDescrição
emailstringSimE-mail do agente.
passwordstringSimSenha (8 a 32 caracteres).

Exemplo de Requisição ​

bash
curl -X POST "https://api.us.basis.tavares.in/v1/helpdesk/agent/agents/login" \
  -H "X-Helpdesk-Id: 3fa85f64-5717-4562-b3fc-2c963f66afa6" \
  -H "Content-Type: application/json" \
  -d '{
    "email": "maria@acme.com",
    "password": "Password@123"
  }'

Respostas ​

200 OK

Retorna o token Bearer com validade de 30 dias.

json
{
  "type": "bearer",
  "name": "6522b2f2-4101-4748-b7b1-f7716463e878",
  "token": "oat_Mw.Njh2OWRieE90NzF1NE1LaUhTUVFHSUJGNE02T3E3SFNiWUhESnNmeDM1MDAyNzQ2NzY",
  "abilities": ["*"],
  "lastUsedAt": null,
  "expiresAt": "2026-10-10T03:04:39.783Z"
}

422 Unprocessable Entity

Credenciais inválidas ou agente não encontrado.

json
{
  "errors": [
    {
      "message": "Email/Senha inválida"
    }
  ]
}

Logout ​

Invalida o token usado na requisição imediatamente.

http
POST /v1/helpdesk/agent/agents/logout

Respostas ​

204 No Content

Token invalidado com sucesso.

Perfil do Agente Autenticado ​

Retorna os dados do agente autenticado, incluindo as categorias (filas) vinculadas.

http
GET /v1/helpdesk/agent/agents/me

Respostas ​

200 OK

Retorna os dados do agente.

json
{
  "id": 1,
  "helpdeskId": 1,
  "name": "Maria Silva",
  "email": "maria@acme.com",
  "role": "admin",
  "signature": null,
  "avatarUrl": null,
  "isAvailable": true,
  "maxOpenTickets": null,
  "isActive": true,
  "createdAt": "2026-09-01T10:05:33.000+00:00",
  "updatedAt": "2026-09-01T10:05:33.000+00:00",
  "helpdeskCategories": [
    {
      "id": 1,
      "name": "Geral"
    }
  ]
}

Atualizar Próprio Perfil ​

Atualiza os dados de perfil do agente autenticado (sem alterar role, filas ou disponibilidade).

http
PUT /v1/helpdesk/agent/agents/me

Payload (Body) ​

AtributoTipoObrigatórioDescrição
namestringNãoNome completo (máx. 150 caracteres).
signaturestringNãoAssinatura das respostas públicas; envie null para remover.
avatarUrlstringNãoURL do avatar (máx. 255 caracteres); envie null para remover.

Respostas ​

204 No Content

Perfil atualizado com sucesso.

Trocar Senha ​

Define uma nova senha para o agente autenticado.

http
PATCH /v1/helpdesk/agent/agents/change-password

Payload (Body) ​

AtributoTipoObrigatórioDescrição
passwordstringSimNova senha (8 a 32 caracteres).

Respostas ​

204 No Content

Senha alterada com sucesso.


Gerenciamento de Agentes ​

Endpoints de escrita (POST, PUT, DELETE) exigem role admin ou supervisor — demais roles recebem 403 FORBIDDEN. As consultas são abertas a qualquer agente autenticado.

Listar Agentes ​

Lista os agentes da instância, com paginação, busca e filtros.

http
GET /v1/helpdesk/agent/agents

Parâmetros de Query ​

NomeTipoObrigatórioDescrição
pagenumberNãoO número da página (mínimo: 1).
perPagenumberNãoItens por página (entre 1 e 100, padrão: 25).
searchstringNãoBusca por termo no nome ou e-mail (máx. 150 caracteres).
rolestringNãoFiltra por papel: agent, supervisor ou admin.
isAvailablebooleanNãoFiltra por disponibilidade para round-robin.
isActivebooleanNãoFiltra por agentes ativos/inativos.
orderBystringNãoCampo de ordenação: id, name, email ou createdAt.
orderDirectionstringNãoDireção: asc ou desc.

Respostas ​

200 OK

Retorna um objeto de paginação contendo a lista de agentes.

Listar Agentes para Dropdown ​

Retorna os agentes em formato simplificado (value/label), ideal para selects de atribuição no frontend.

http
GET /v1/helpdesk/agent/agents/list

Parâmetros de Query ​

NomeTipoObrigatórioDescrição
searchstringNãoBusca por termo no nome (máx. 150 caracteres).
isAvailablebooleanNãoFiltra por disponibilidade.
isActivebooleanNãoFiltra por ativos/inativos.

Respostas ​

200 OK

Retorna um array com os agentes em formato value/label.

json
[
  {
    "value": 1,
    "label": "Maria Silva"
  }
]

Obter Agente por ID ​

Recupera os detalhes de um agente da instância.

http
GET /v1/helpdesk/agent/agents/:id

Parâmetros de Rota ​

NomeTipoObrigatórioDescrição
idnumberSimO ID do agente.

Respostas ​

200 OK

Retorna os dados do agente, incluindo as categorias vinculadas.

404 Not Found

Ocorre quando o agente não existe na instância.

Criar Agente ​

Cria um novo agente na instância. O e-mail deve ser único entre os agentes ativos da instância.

http
POST /v1/helpdesk/agent/agents

Payload (Body) ​

AtributoTipoObrigatórioDescrição
namestringSimNome completo (máx. 150 caracteres).
emailstringSimE-mail de login (máx. 250 caracteres, único por instância).
passwordstringSimSenha inicial (8 a 32 caracteres).
rolestringNãoPapel: agent, supervisor ou admin (padrão: agent).
signaturestringNãoAssinatura das respostas públicas.
avatarUrlstringNãoURL do avatar (máx. 255 caracteres).
isAvailablebooleanNãoDisponível para round-robin (padrão: true).
maxOpenTicketsnumberNãoTeto de tickets abertos (mín. 1; null = ilimitado).
isActivebooleanNãoAgente ativo (padrão: true).
categoryIdsnumber[]NãoIDs das categorias (filas) que o agente atende.

Exemplo de Requisição ​

bash
curl -X POST "https://api.us.basis.tavares.in/v1/helpdesk/agent/agents" \
  -H "X-Helpdesk-Id: 3fa85f64-5717-4562-b3fc-2c963f66afa6" \
  -H "Authorization: Bearer {token}" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "João Souza",
    "email": "joao@acme.com",
    "password": "Password@123",
    "role": "agent",
    "maxOpenTickets": 10,
    "categoryIds": [1, 2]
  }'

Respostas ​

201 Created

Retorna o ID do agente criado.

json
{
  "id": 2
}

403 Forbidden

O agente autenticado não é admin nem supervisor.

json
{
  "message": "Você não tem permissão para gerenciar este recurso",
  "code": "FORBIDDEN"
}

Atualizar Agente ​

Atualiza os dados de um agente. Se categoryIds for enviado, os vínculos de filas são substituídos pela nova lista.

http
PUT /v1/helpdesk/agent/agents/:id

Payload (Body) ​

Todos os campos da criação são opcionais no update, incluindo password (para redefinir a senha do agente) e categoryIds.

Respostas ​

204 No Content

Atualização concluída com sucesso.

Remover Agente ​

Remove um agente via soft delete — as respostas e o histórico de auditoria que ele assinou são preservados.

http
DELETE /v1/helpdesk/agent/agents/:id

Respostas ​

204 No Content

Remoção concluída com sucesso.