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étodo | Caminho | Auth |
|---|---|---|
| GET | /templates | Sessã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:
category—authentication,network,malware,compliance,ids,cloud,endpoint,generic.kind—rule,decoder, oumixed.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"]
}
Links relacionados
- Endpoints de análise — validar o template antes de usar.
- Endpoints de projetos — anexar o XML em um workspace ou versão.
- Endpoints do assistente IA — complementa templates curados com geração automática de casos de teste.