ZTAPParseFields
Parses ZTAP event fields to display as key/value pairs in a dynamic table.
python · Zero Trust Analytics Platform
Source
from CommonServerPython import * from typing import Any import traceback from collections import defaultdict """ STANDALONE FUNCTION """ def parse_fields(events, full, max_fields, max_value_length) -> str: """Parses events from the raw trigger events field and returns a section of the events in key/value tables in the input (events). """ if not events: return "No trigger events found" headers = ["Key", "Value", "Order"] product_indexes: defaultdict = defaultdict(int) output = "" for event in events: trigger = "(*)" if event["ata_trigger"] else "" product = event["product"] index = product_indexes[product] datetime_created = event["datetime_created"] table_name = f"## {trigger} {product} {index} ({datetime_created})\n" fields = [] for index, field in enumerate(event["fields"]): if not full and index >= max_fields: break label = field["label"] key = field["key"] value = field["value"] if not full and len(str(value)) > max_value_length: value = str(value)[:max_value_length] + "..." fields.append( { "Key": f"{label} ({key})", "Value": value, "Order": field["order"], } ) output += tableToMarkdown(table_name, fields, headers=headers) product_indexes[product] += 1 return output """ COMMAND FUNCTION """ def parse_fields_command(args: dict[str, Any]) -> CommandResults: incident = demisto.incident() custom_fields = incident.get("CustomFields") events = custom_fields.get("ztaptriggers") max_fields = args.get("max_fields", 50) max_value_length = args.get("max_value_length", 512) full = args.get("full", False) # Call the standalone function and get the raw response result = parse_fields(events, full, max_fields, max_value_length) return CommandResults( outputs_prefix="ZTAPParseFields", outputs_key_field="", outputs=[result], readable_output=result, ) """ MAIN FUNCTION """ def main(): try: return_results(parse_fields_command(demisto.args())) except Exception as ex: demisto.error(traceback.format_exc()) # print the traceback return_error(f"Failed to execute BaseScript. Error: {str(ex)}") """ ENTRY POINT """ if __name__ in ("__main__", "__builtin__", "builtins"): main()
README
Parses ZTAP event fields to display as key/value pairs in
a dynamic table.
Script Data
| Name | Description |
|---|---|
| Script Type | python3 |
| Tags | ztap, dynamic-section |
| Cortex XSOAR Version | 6.0.0 |
Inputs
| Argument Name | Description |
|---|---|
| max_fields | Maximum number of fields to display |
| max_value_length | Maximum number of characters to display per field |
| full | Do not truncate output |
Outputs
There are no outputs for this script.