Skip to main content

PAQL Quick Reference

PAQL (Priax Asset Query Language) Quick Reference

1) O que é a PAQL e para que ela serve

PAQL (Priax Asset Query Language) é a linguagem de consulta usada no Priax para pesquisar ativos (CIs) na CMDBCMDB, filtrando por tipos de IC, atributos do próprio IC, pelas relações do IC e, quando necessário, pesquisar ativospor características de ICs relacionados (por vínculos/relacionamentos). ao IC que se deseja encontrar/listar.

Com a PAQL você consegue:

  • Selecionar quais tipos de ativos (citype) você quer listar (ex.: Servers, Web Application).
  • Filtrar ativos por atributos/campos (ex.: Nome, Fabricante, Tipo de criação).
  • Filtrar por relações que o ativo possui.
  • Restringir a pesquisa a ativos relacionados por um tipo de relação (ex.: Service Owned, Composes) com algum outro IC (relatedcitype).
  • Definir quais campos devem voltar no resultado (returns) e como nomeá-los (alias).
  • Ordenar o resultado (orders).

A PAQL é composta por blocos, e cada bloco tem um papel específico na filtragem dos ativos. Você monta uma expressão juntando blocos em sequência.


2) Conceitos: CI Types e Related CI Types

CI Types (citype)

Um CI Type (ou citype) é o tipo do ativo principal que você quer buscar.

Exemplos comuns: Servers, Team, Web Application, Relational Databases.

Quando você usa apenas citype, a consulta busca ativos somente desse tipo, sem obrigar a existência de relacionamento com outro ativo.

“Quero achar ativos do tipo A que estejam relacionados a ativos do tipo B (e possivelmente filtrar o B também).”

3) Estrutura geral de uma PAQL

Uma PAQL é um texto com um ou mais blocos:

ictypefilters{...}
relsfilters{...}
cifilters{...}
relatedcifilters{...}
returns{...}
orders{...}

Regras gerais importantes

  • Blocos são escritos como: nomeDoBloco{ ... }
  • Dentro de alguns blocos, você pode combinar condições usando a palavra and.
  • Listas são escritas como: ["Valor 1","Valor 2"]
  • Campos/atributos são referenciados como strings entre aspas no formato: "Grupo\Campo"

4) Blocos da PAQL

4.1) ictypefilters{...} — Tipos de ativos (principal e relacionado)

Define o tipo do ativo principal (citype) e, opcionalmente, o tipo do ativo relacionado (relatedcitype).

Sintaxe

ictypefilters{citype in ["Tipo A","Tipo B"]}

Ou com ativo relacionado:

ictypefilters{citype in ["Tipo A","Tipo B"] and relatedcitype in ["Tipo B"C"]}

Exemplos

ictypefilters{citype in ["Web Application"]}
ictypefilters{citype in ["Team"] and relatedcitype in ["Web Application"]}
Dica: se você informar relatedcitype , normalmente você também poderá usará relsfilters{...} e/ou relatedcifilters{...}.

4.2) relsfilters{...} — Quais relacionamentos considerar (entrada e saída)

Restringe por quais tipos de relacionamento os ativos devem estar ligados.

  • outrels in [...] (relações “de saída”)
  • inrels in [...] (relações “de entrada”)

Sintaxe

relsfilters{inrels in ["Nome da Relação"]}
relsfilters{outrels in ["Nome da Relação"]}
relsfilters{outrels in ["Relação A"] and inrels in ["Relação B"]}

Exemplos

relsfilters{inrels in ["Service Owner"]}
relsfilters{outrels in ["Service Owned"] and inrels in ["Service Owner"]}
relsfilters{outrels in ["Is Composed"] and inrels in ["Composes"]}

4.3) cifilters{...} — Filtros por atributos do ativo principal (A)

Filtra o ativo principal por campos/atributos.

Sintaxe

"Grupo\Campo" = "Valor"

Múltiplas condições:

cifilters{"Grupo\Campo 1" = "Valor 1" and "Grupo\Campo 2" = "Valor 2"}

Exemplos

cifilters{"General\Name" = "Windows 2016"}
cifilters{"General\Create Type" = "Manual"}

4.4) relatedcifilters{...} — Filtros por atributos do ativo relacionado (B)

Filtra o ativo relacionado por campos/atributos.

Sintaxe

relatedcifilters{"Grupo\Campo" = "Valor"}

Exemplos

relatedcifilters{"General\Name" = "CRM"}
relatedcifilters{"General\Name" = "C:"}

4.5) returns{...} — Quais campos retornar (colunas) e aliases

Define quais atributos serão devolvidos no resultado.

Sintaxe

returns{"Grupo\Campo" as Alias, "Grupo\Campo 2" as Alias2, "Grupo\Campo 3"}

Exemplos

returns{"General\Name" as Name}
returns{
  "Basic Network Addresses\Manage IP Addresses" as IP,
  "General\Name" as Name,
  "Basic Network Addresses\Hostname" as Hostname
}
Boa prática: use as para nomes curtos (ex.: Name, Hostname, IP).

4.6) orders{...} — Ordenação

Define a ordenação dos resultados, normalmente pelo alias definido em returns.

Sintaxe

orders{Alias}

Exemplos

orders{Name}Name,Hostname}
orders{Hostname}

5) Exemplos completos (prontos para uso)

Exemplo A — Web Application (sem relacionamentos)

ictypefilters{citype in ["Web Application"]}
returns{"General\Name" as Name}
orders{Name}

Exemplo B — Team relacionado a Web Application (filtrando a aplicação)

ictypefilters{citype in ["Team"] and relatedcitype in ["Web Application"]}
relsfilters{outrels in ["Service Owned"] and inrels in ["Service Owner"]}
relatedcifilters{"General\Name" = "CRM"}
returns{"General\Name" as Name}
orders{Name}

Exemplo C — Server relacionado a Windows Disk Volume (filtrando ambos)

ictypefilters{citype in ["Servers"] and relatedcitype in ["Windows Disk Volume"]}
relsfilters{outrels in ["Is Composed"] and inrels in ["Composes"]}
cifilters{"General\Name" = "Windows 2016"}
relatedcifilters{"General\Name" = "C:"}
returns{
  "Basic Network Addresses\Manage IP Addresses" as IP,
  "General\Name" as Name,
  "Basic Network Addresses\Hostname" as Hostname
}
orders{Hostname}

6) Checklist rápido para montar sua PAQL

  1. Escolha o tipo principal: ictypefilters{citype in ["..."]}
  2. Se existir um “lado relacionado”, adicione:
    • relatedcitype in ["..."]
    • relsfilters{...}
    • relatedcifilters{...} (se precisar filtrar o relacionado)
  3. Filtre o principal com cifilters{...} (se necessário)
  4. Defina colunas com returns{...}
  5. Ordene com orders{...} (normalmente pelo alias)