Pular para o conteúdo principal

Endpoints de templates

Leitura do catálogo de templates curados — trechos XML prontos para usar como ponto de partida ao criar regras/decoders.

Catálogo é estático (mantido no repositório do backend) e apenas de leitura.

Tabela de endpoints

MétodoCaminhoAuth
GET/templatesSessão
GET/templates/{template_id}Sessão

GET /templates

Lista o catálogo completo + contagens por categoria.

Response 200 (TemplateCatalogResponse):

{
"templates": [
{
"id": "ssh-brute-force",
"title": "SSH brute force detection",
"description": "Detecta múltiplas tentativas de login SSH falhas em curto intervalo.",
"category": "authentication",
"kind": "rule",
"platform": ["linux", "macos"],
"mitre_ids": ["T1110"],
"tags": ["sshd", "brute-force"],
"xml": "<group name=\"authentication_failures\">\n <rule id=\"100010\" level=\"10\">\n <if_matched_sid>5716</if_matched_sid>\n <same_source_ip/>\n <frequency>5</frequency>\n <timeframe>120</timeframe>\n <description>SSH: multiple failed logins.</description>\n </rule>\n</group>",
"tips": [
"Ajuste `frequency` e `timeframe` conforme sua política de segurança.",
"Considere adicionar `<options>no_full_log</options>` se estiver gerando muito volume."
]
}
],
"categories": [
{ "id": "authentication", "count": 12 },
{ "id": "network", "count": 8 },
{ "id": "malware", "count": 5 }
],
"total": 25
}

Campos relevantes:

  • categoryauthentication, network, malware, compliance, ids, cloud, endpoint, generic.
  • kindrule, decoder, ou mixed.
  • platform[] — plataformas para as quais o template foi testado.
  • mitre_ids[] — referências MITRE ATT&CK.
  • tips[] — dicas contextuais para o usuário ajustar o template.

GET /templates/{template_id}

Retorna um único template.

Response 200: TemplateRecord (mesma estrutura mostrada em templates[] acima).

Erros:

  • 404 not_found — template não existe (corpo: {"detail": "template_not_found"}).

Uso típico

Cenário: integração em editor que quer oferecer exemplos para o usuário.

# Listar
curl -s "$RF_BASE/templates" \
-H "Authorization: Bearer $JWT" | jq '.templates[] | {id, title, category}'

# Trazer um específico e usar o xml num workspace
TEMPLATE_XML=$(curl -s "$RF_BASE/templates/ssh-brute-force" \
-H "Authorization: Bearer $JWT" | jq -r .xml)

curl -X POST "$RF_BASE/platform/projects/$PRJ/workspaces" \
-H "Authorization: Bearer $JWT" \
-H "Content-Type: application/json" \
-d "{\"name\":\"Do template\",\"rules_xml\":$(jq -Rs <<<"$TEMPLATE_XML"),\"decoders_xml\":\"<decoders></decoders>\",\"event_text\":\"\"}"

Estrutura completa do TemplateRecord

{
"id": "string",
"title": "string",
"description": "string",
"category": "authentication|network|malware|compliance|ids|cloud|endpoint|generic",
"kind": "rule|decoder|mixed",
"platform": ["string"],
"mitre_ids": ["string"],
"tags": ["string"],
"xml": "string",
"tips": ["string"]
}