Descrição
Liste as sessões remotas registradas no PAM Core, utilizando o modelo canônico v2. Retorna uma projeção paginada e filtrável da entidade SessionV2. Utilize-a para revisões de auditoria, monitoramento de SOC e sincronização incremental com SIEM.
Este endpoint é somente leitura. A criação e o encerramento de sessões não fazem parte da superfície v2.
Este endpoint faz parte da superfície da API v2 do A2A, introduzida na versão 4.2.13. O equivalente v1 está documentado em GET | Listar todas as sessões remotas.
Pré-requisitos
Este endpoint requer uma aplicação A2A com acesso à API e um token OAuth2 válido. Para mais informações, acesse Como gerenciar autorizações no A2A para a API v2.
Este endpoint retorna todas as sessões remotas do ambiente. Ele não filtra os resultados pelas concessões de credencial da aplicação chamadora, o que corresponde ao comportamento dos endpoints de sessão remota da v1. Esse comportamento pode mudar em uma versão futura.
Requisição
GET /api/v2/pam/sessions
Parâmetros de query
Todos os parâmetros de query são opcionais. Quando nenhum parâmetro é enviado, o endpoint retorna as sessões mais recentes usando a ordenação e o tamanho de página padrão.
Os nomes dos filtros são qualificados com o namespace ao qual pertencem, como session.status ou device.id. Nomes não qualificados retornam 400.
Filtros
| Campo | Tipo | Descrição |
|---|---|---|
session.status |
string | Filtra pelo status da sessão. Valores aceitos: pending, active, terminated, expired. Valores separados por vírgula aplicam lógica OU. |
session.session_type |
string | Filtra pelo tipo de sessão. Valores aceitos: web_proxy, terminal_proxy, rdp_proxy, database_proxy, segura_browser, tcp_tunneling, epm. Valores separados por vírgula aplicam lógica OU. |
session.selection_mode |
string | Filtra pela forma como a credencial foi escolhida. Valores aceitos: explicit, automatic. |
session.protocol |
string | Filtra pela correspondência exata do protocolo, como SSH, RDP ou HTTPS. |
session.user |
string | Filtra pelo nome de usuário exato do usuário que solicitou a sessão. |
session.origin |
string | Filtra pelo endereço IP de origem exato. |
session.created_at_gte |
string | Retorna as sessões criadas a partir deste instante, no formato ISO 8601. Inclusivo. |
session.created_at_lte |
string | Retorna as sessões criadas até este instante, no formato ISO 8601. Inclusivo. |
device.id |
integer | Filtra pelo ID exato do dispositivo. |
credential.id |
integer | Filtra pelo ID exato da credencial. Corresponde à credencial efetiva, que é a credencial da macro de automação quando existe, e a credencial direta nos demais casos. |
Um valor de enum inválido retorna 422 api.enum.invalid_value. Um session.created_at_gte posterior ao session.created_at_lte retorna 422 api.validation.invalid_date_range.
Para as regras completas de validação de filtros e a lógica E/OU, consulte API v2 - Convenções e comportamentos compartilhados.
Busca
| Campo | Tipo | Descrição |
|---|---|---|
search |
string | Busca por substring no identificador da sessão, no hostname do dispositivo e no nome de usuário da credencial. Mínimo de três caracteres. |
Diferente dos filtros, search não é qualificado com namespace. Enviar session.search retorna 400, e um termo com menos de três caracteres retorna 400 api.request.bad_request.
Ordenação
| Campo | Tipo | Descrição |
|---|---|---|
sort_by |
string | Um ou mais campos no formato campo:asc ou campo:desc, separados por vírgula e processados da esquerda para a direita. Padrão: session.created_at:desc. |
Os campos ordenáveis são session.created_at, session.started_at e session.ended_at. Um campo desconhecido retorna 422 api.sort.invalid_field, e uma direção diferente de asc ou desc retorna 422 api.sort.invalid_direction.
Os resultados incluem um critério de desempate interno único na mesma direção da ordenação. Isso mantém a paginação estável quando novas sessões são criadas enquanto você percorre as páginas.
Paginação
| Campo | Tipo | Descrição |
|---|---|---|
page |
integer | Número da página, a partir de 1. Padrão: 1. |
limit |
integer | Resultados por página. Mínimo 1, máximo 200. Padrão: 50. |
Um limit maior que 200 retorna 422 api.pagination.limit.exceeded.
Para sincronizar sessões de forma incremental, defina um piso com session.created_at_gte e siga meta.links.next até que o campo não esteja mais presente na resposta. Não percorra as páginas até meta.pagination.total_pages: os totais são informativos, e meta.links.next é a forma suportada de avançar.
Para as regras completas de paginação, consulte API v2 - Convenções e comportamentos compartilhados.
Projeção de campos
| Campo | Tipo | Descrição |
|---|---|---|
fields |
string | Chaves canônicas a retornar, separadas por vírgula, como session.status,device.hostname. O campo id é sempre retornado. |
Uma chave desconhecida retorna 422 api.validation.invalid_field. Para as regras completas de projeção, consulte API v2 - Convenções e comportamentos compartilhados.
Exemplo de requisição
GET {{url}}/api/v2/pam/sessions?session.status=active&limit=50
Resposta
HTTP/1.1 200 OK
Um filtro que não encontra correspondência retorna 200 com o array data vazio, e não um erro.
Exemplo de corpo da resposta
{
"data": [
{
"id": "789",
"session": {
"session_id": "S2026082912345",
"session_type": "terminal_proxy",
"protocol": "SSH",
"status": "active",
"user": "dalmeida",
"justification": "Janela de manutenção MW-2026-0829",
"access_period": null,
"origin": "200.100.50.25",
"selection_mode": "explicit",
"created_at": "2026-08-29T12:34:56+00:00",
"started_at": "2026-08-29T12:35:02+00:00",
"ended_at": null,
"duration": "00:15:32"
},
"device": {
"id": 55,
"hostname": "db-prod-01"
},
"credential": {
"id": 101,
"username": "svc-payments"
}
},
{
"id": "788",
"session": {
"session_id": "S2026082911980",
"session_type": "epm",
"protocol": null,
"status": "terminated",
"user": "jsilva",
"justification": null,
"access_period": "2026-08-29T09:00:00+00:00/2026-08-29T11:00:00+00:00",
"origin": "200.100.50.51",
"selection_mode": "automatic",
"created_at": "2026-08-29T09:58:10+00:00",
"started_at": "2026-08-29T10:01:44+00:00",
"ended_at": "2026-08-29T10:29:12+00:00",
"duration": "00:27:28"
},
"device": {
"id": 61,
"hostname": "ws-finance-04"
},
"credential": null
}
],
"meta": {
"pagination": {
"page": 1,
"limit": 50,
"total_items": 1250,
"total_pages": 25
},
"links": {
"self": "/api/v2/pam/sessions?session.status=active&page=1&limit=50",
"next": "/api/v2/pam/sessions?session.status=active&page=2&limit=50"
}
}
}
Campos do corpo da resposta
| Campo | Tipo | Descrição |
|---|---|---|
data |
array de objetos | Sessões que correspondem à requisição. |
meta |
object | Metadados de paginação e links de navegação. |
data
| Campo | Tipo | Descrição |
|---|---|---|
→id |
string | Código de identificação único da sessão. Use este valor no path da requisição de GET | Listar uma sessão remota por [id]. |
→session |
object | Atributos da sessão. |
→device |
object | Dispositivo ao qual a sessão se conectou. |
→credential |
object | Credencial utilizada pela sessão. null para sessões ad-hoc e do EPM que não utilizam uma credencial do cofre. |
data.session
| Campo | Tipo | Descrição |
|---|---|---|
→→session_id |
string | Identificador da sessão exibido aos usuários e referenciado em tickets de incidente. É o valor que o parâmetro search compara. |
→→session_type |
string | Tipo de sessão. Um entre web_proxy, terminal_proxy, rdp_proxy, database_proxy, segura_browser, tcp_tunneling, epm. |
→→protocol |
string | Protocolo utilizado pela sessão, como SSH, RDP ou HTTPS. |
→→status |
string | Status atual da sessão: pending, active, terminated ou expired. Derivado dos registros de data e hora da sessão, e não armazenado. |
→→user |
string | Nome de usuário do usuário que solicitou a sessão. |
→→justification |
string | Justificativa informada pelo usuário ao solicitar a sessão. |
→→access_period |
string | Janela de acesso aprovada como um intervalo ISO 8601 no formato início/fim. null quando a sessão não possui solicitação aprovada. |
→→origin |
string | Endereço IP de origem do usuário que solicitou a sessão. É um dado pessoal e é retornado integralmente para fins de auditoria. |
→→selection_mode |
string | Como a credencial foi escolhida: explicit quando o chamador ou a interface a selecionou, automatic quando o sistema a resolveu. |
→→created_at |
string | Data e hora em que a sessão foi solicitada, no formato ISO 8601 e em UTC. Exemplo: 2026-08-29T12:34:56+00:00. |
→→started_at |
string | Data e hora em que a sessão iniciou, no formato ISO 8601 e em UTC. null enquanto a sessão está pendente e para reservas que expiraram sem iniciar. |
→→ended_at |
string | Data e hora em que a sessão terminou, no formato ISO 8601 e em UTC. Para sessões expired, é o instante em que a reserva expirou. null enquanto a sessão está ativa ou pendente. |
→→duration |
string | Tempo decorrido da sessão no formato HH:MM:SS. Avança enquanto a sessão está ativa, mantém o valor final após o encerramento e é null quando a sessão nunca iniciou. |
data.device
| Campo | Tipo | Descrição |
|---|---|---|
→→id |
integer | Código de identificação único do dispositivo. |
→→hostname |
string | Hostname do dispositivo. |
data.credential
| Campo | Tipo | Descrição |
|---|---|---|
→→id |
integer | Código de identificação único da credencial. |
→→username |
string | Nome de usuário da credencial utilizada pela sessão. O valor do segredo nunca é retornado. |
meta
| Campo | Tipo | Descrição |
|---|---|---|
→pagination |
object | Número da página, tamanho da página e totais de resultados. |
→links |
object | Links de navegação. self está sempre presente. next está presente até a última página, e sua ausência indica o fim do conjunto de resultados. |
A URL de acesso à sessão nunca é retornada por este endpoint. As URLs de sessão são de uso único e já estão expiradas para fins de leitura. A credencial é sempre retornada, porque saber qual credencial foi utilizada é um dado de auditoria.
Erros
| Código HTTP | Código de erro | Causa possível | Solução |
|---|---|---|---|
400 |
api.request.bad_request |
Parâmetro de query desconhecido, nome de filtro não qualificado como status em vez de session.status, ou termo de search com menos de três caracteres. |
Qualifique o nome do filtro com o seu namespace e verifique a grafia do parâmetro. |
401 |
api.auth.token.invalid |
Token bearer ausente, expirado ou inválido. | Solicite um novo token de acesso. |
422 |
api.enum.invalid_value |
Valor inválido para session.status, session.session_type ou session.selection_mode. |
Envie um dos valores aceitos listados na tabela de filtros. |
422 |
api.validation.invalid_date_range |
session.created_at_gte é posterior a session.created_at_lte. |
Corrija o intervalo de datas. |
422 |
api.pagination.limit.exceeded |
limit é maior que 200. |
Envie um limit de 200 ou menor. |
422 |
api.sort.invalid_field |
sort_by referencia um campo fora do conjunto ordenável. |
Ordene por session.created_at, session.started_at ou session.ended_at. |
422 |
api.sort.invalid_direction |
sort_by utiliza uma direção diferente de asc ou desc. |
Utilize asc ou desc. |
422 |
api.validation.invalid_field |
fields referencia uma chave canônica desconhecida. |
Verifique os nomes das chaves nas tabelas de campos do corpo da resposta. |
422 |
api.request.invalid_param |
Um parâmetro possui o tipo incorreto, como um device.id não inteiro ou uma data não interpretável. |
Corrija o tipo do parâmetro. |
429 |
rate_limit_exceeded |
O orçamento de requisições da janela atual foi esgotado. | Aguarde o número de segundos informado no header Retry-After e tente novamente. |
500 |
api.internal.error |
Erro interno do servidor. | Entre em contato com o suporte da Segura™. |
Para as mensagens de erro de autenticação e a política de 403 versus 404, consulte API v2 - Convenções e comportamentos compartilhados.