name: "ServiceNow Tickets → OCSF"
description: "Maps a ServiceNow ticket (Table API, results_path = result) to OCSF finding fields. Reference fields (assigned_to, caller_id, cmdb_ci, …) are {value, link} objects in raw mode and {value, display_value} objects when the fetch uses sysparm_display_value=all — both path variants are listed and absent ones are skipped safely."
field_mappings:
  title: "short_description"
  severity: "priority = '1' ? 5 : (priority = '2' ? 4 : (priority = '3' ? 3 : 2))"
  description: "description"
# results_path = result; source_path is JSONata over ONE ticket object.
# Paths absent from a given ticket are skipped at ingestion, so extra entries are safe.
ocsf:
  # ── Finding ───────────────────────────────────────────────────────
  - { source_path: "sys_id",            ocsf_field: "finding_info.uid" }
  - { source_path: "number",            ocsf_field: "finding_info.uid_alt" }
  - { source_path: "short_description", ocsf_field: "finding_info.title" }
  - { source_path: "description",       ocsf_field: "finding_info.desc" }
  - { source_path: "opened_at",         ocsf_field: "finding_info.first_seen_time" }
  - { source_path: "sys_created_on",    ocsf_field: "finding_info.created_time" }
  - { source_path: "sys_updated_on",    ocsf_field: "finding_info.modified_time" }
  - { source_path: "category",          ocsf_field: "finding_info.analytic.category" }
  - { source_path: "subcategory",       ocsf_field: "finding_info.types" }
  - { source_path: "state",             ocsf_field: "status" }
  - { source_path: "close_code",        ocsf_field: "disposition" }
  - { source_path: "close_notes",       ocsf_field: "comment" }
  # ── People ────────────────────────────────────────────────────────
  - { source_path: "sys_created_by",              ocsf_field: "actor.user.name" }
  - { source_path: "caller_id.display_value",     ocsf_field: "user.name" }
  - { source_path: "assigned_to.display_value",   ocsf_field: "assignee.name" }
  # ── Affected CI ───────────────────────────────────────────────────
  - { source_path: "cmdb_ci.display_value",       ocsf_field: "device.hostname" }
