Intel471Ex.Reports (intel471_ex v0.2.0)

Copy Markdown

Functions for working with the Intel 471 Verity Reports API.

Service path: integrations/intel-report/v1

Covers: general reports, FINTel, breach alerts, geopolitical reports, info reports, malware reports, spot reports, and vulnerability reports.

Summary

Functions

Get a breach alert report by ID.

Stream breach alert reports matching filter criteria.

Download any report as PDF (raw binary).

Download a FINTel report attachment (raw binary).

Get a FINTel report by ID.

Stream FINTel reports matching filter criteria.

Download a geopolitical report attachment (raw binary).

Get a geopolitical report by ID.

Stream geopolitical reports matching filter criteria.

Download an info report attachment (raw binary).

Get an info report by ID.

Stream info reports matching filter criteria.

Download a malware report attachment (raw binary).

Get a malware report by ID.

Stream malware reports matching filter criteria.

Get a spot report by ID.

Stream spot reports matching filter criteria.

Stream reports matching filter criteria (cursor-paginated).

Get a vulnerability report by ID.

Download a vulnerability report as PDF (raw binary).

Stream vulnerability reports matching filter criteria.

Functions

breach_alert_detail(id, params \\ %{})

@spec breach_alert_detail(String.t(), map()) :: {:ok, map()} | {:error, any()}

Get a breach alert report by ID.

Parameters

  • id: The breach alert identifier
  • params: Optional params (e.g., %{include_inline_images: true})

Examples

{:ok, report} = Intel471Ex.Reports.breach_alert_detail("report-id")

breach_alert_stream(params \\ %{})

@spec breach_alert_stream(map()) :: {:ok, map()} | {:error, any()}

Stream breach alert reports matching filter criteria.

Parameters

  • params: A map of query parameters
    • :text_filter — Free text search
    • :girs — Filter by GIRs
    • :from / :until / :size / :cursor

Examples

{:ok, result} = Intel471Ex.Reports.breach_alert_stream(%{size: 10})

download_pdf(id)

@spec download_pdf(String.t()) :: {:ok, map()} | {:error, any()}

Download any report as PDF (raw binary).

Examples

{:ok, %{body: pdf}} = Intel471Ex.Reports.download_pdf("report-id")

fintel_attachment(report_id, attachment_id)

@spec fintel_attachment(String.t(), String.t()) :: {:ok, map()} | {:error, any()}

Download a FINTel report attachment (raw binary).

Parameters

  • report_id: The report identifier
  • attachment_id: The attachment identifier

Examples

{:ok, %{body: data}} = Intel471Ex.Reports.fintel_attachment("report-id", "attachment-id")

fintel_detail(id, params \\ %{})

@spec fintel_detail(String.t(), map()) :: {:ok, map()} | {:error, any()}

Get a FINTel report by ID.

Parameters

  • id: The report identifier
  • params: Optional params (e.g., %{include_inline_images: true})

Examples

{:ok, report} = Intel471Ex.Reports.fintel_detail("report-id")

fintel_stream(params \\ %{})

@spec fintel_stream(map()) :: {:ok, map()} | {:error, any()}

Stream FINTel reports matching filter criteria.

Parameters

  • params: A map of query parameters
    • :text_filter — Free text search
    • :girs — Filter by GIRs
    • :sub_type — Report sub-type(s), comma-separated
    • :from / :until / :size / :cursor

Examples

{:ok, result} = Intel471Ex.Reports.fintel_stream(%{text_filter: "malware", size: 10})

geopol_attachment(report_id, attachment_id)

@spec geopol_attachment(String.t(), String.t()) :: {:ok, map()} | {:error, any()}

Download a geopolitical report attachment (raw binary).

Examples

{:ok, %{body: data}} = Intel471Ex.Reports.geopol_attachment("report-id", "attachment-id")

geopol_detail(id, params \\ %{})

@spec geopol_detail(String.t(), map()) :: {:ok, map()} | {:error, any()}

Get a geopolitical report by ID.

Examples

{:ok, report} = Intel471Ex.Reports.geopol_detail("report-id")

geopol_stream(params \\ %{})

@spec geopol_stream(map()) :: {:ok, map()} | {:error, any()}

Stream geopolitical reports matching filter criteria.

Parameters

  • params: A map of query parameters
    • :country — Filter by country
    • :report_location_country — Filter by report location country
    • :text_filter — Free text search
    • :girs — Filter by GIRs
    • :sub_type — Report sub-type(s), comma-separated
    • :from / :until / :size / :cursor

Examples

{:ok, result} = Intel471Ex.Reports.geopol_stream(%{country: "US", size: 10})

info_attachment(report_id, attachment_id)

@spec info_attachment(String.t(), String.t()) :: {:ok, map()} | {:error, any()}

Download an info report attachment (raw binary).

Examples

{:ok, %{body: data}} = Intel471Ex.Reports.info_attachment("report-id", "attachment-id")

info_detail(id, params \\ %{})

@spec info_detail(String.t(), map()) :: {:ok, map()} | {:error, any()}

Get an info report by ID.

Examples

{:ok, report} = Intel471Ex.Reports.info_detail("report-id")

info_stream(params \\ %{})

@spec info_stream(map()) :: {:ok, map()} | {:error, any()}

Stream info reports matching filter criteria.

Parameters

  • params: A map of query parameters
    • :text_filter / :girs / :from / :until / :size / :cursor

Examples

{:ok, result} = Intel471Ex.Reports.info_stream(%{text_filter: "campaign", size: 10})

malware_attachment(report_id, attachment_id)

@spec malware_attachment(String.t(), String.t()) :: {:ok, map()} | {:error, any()}

Download a malware report attachment (raw binary).

Examples

{:ok, %{body: data}} = Intel471Ex.Reports.malware_attachment("report-id", "attachment-id")

malware_detail(id, params \\ %{})

@spec malware_detail(String.t(), map()) :: {:ok, map()} | {:error, any()}

Get a malware report by ID.

Examples

{:ok, report} = Intel471Ex.Reports.malware_detail("report-id")

malware_stream(params \\ %{})

@spec malware_stream(map()) :: {:ok, map()} | {:error, any()}

Stream malware reports matching filter criteria.

Parameters

  • params: A map of query parameters
    • :malware_family — Filter by malware family
    • :threat_id — Filter by threat ID
    • :threat_type — Filter by threat type
    • :text_filter / :girs / :from / :until / :size / :cursor

Examples

{:ok, result} = Intel471Ex.Reports.malware_stream(%{malware_family: "conti", size: 10})

spot_detail(id, params \\ %{})

@spec spot_detail(String.t(), map()) :: {:ok, map()} | {:error, any()}

Get a spot report by ID.

Examples

{:ok, report} = Intel471Ex.Reports.spot_detail("report-id")

spot_stream(params \\ %{})

@spec spot_stream(map()) :: {:ok, map()} | {:error, any()}

Stream spot reports matching filter criteria.

Parameters

  • params: A map of query parameters
    • :text_filter / :girs / :from / :until / :size / :cursor

Examples

{:ok, result} = Intel471Ex.Reports.spot_stream(%{text_filter: "incident", size: 10})

stream(params \\ %{})

@spec stream(map()) :: {:ok, map()} | {:error, any()}

Stream reports matching filter criteria (cursor-paginated).

Parameters

  • params: A map of query parameters
    • :text_filter — Free text search
    • :girs — Filter by General Intel Requirements
    • :type — Report type(s), comma-separated
    • :sub_type — Report sub-type(s), comma-separated
    • :from — Search data starting from given timestamp
    • :until — Search data ending before given timestamp
    • :size — Number of records per page
    • :cursor — Continue from cursor for pagination

Examples

{:ok, result} = Intel471Ex.Reports.stream(%{text_filter: "ransomware", size: 10})

vulnerability_detail(id)

@spec vulnerability_detail(String.t()) :: {:ok, map()} | {:error, any()}

Get a vulnerability report by ID.

Examples

{:ok, report} = Intel471Ex.Reports.vulnerability_detail("report-id")

vulnerability_download_pdf(id)

@spec vulnerability_download_pdf(String.t()) :: {:ok, map()} | {:error, any()}

Download a vulnerability report as PDF (raw binary).

Examples

{:ok, %{body: pdf}} = Intel471Ex.Reports.vulnerability_download_pdf("report-id")

vulnerability_stream(params \\ %{})

@spec vulnerability_stream(map()) :: {:ok, map()} | {:error, any()}

Stream vulnerability reports matching filter criteria.

Parameters

  • params: A map of query parameters
    • :status — Filter by status
    • :text_filter — Free text search
    • :girs — Filter by GIRs
    • :cve_type — Filter by CVE type
    • :cve_name — Filter by CVE name
    • :vendor_name — Filter by vendor name
    • :product_name — Filter by product name
    • :risk_level — Risk level(s), comma-separated
    • :patch_status — Patch status(es), comma-separated
    • :interest_level — Interest level(s), comma-separated
    • :activity_location — Activity location(s), comma-separated
    • :exploit_status — Exploit status(es), comma-separated
    • :from / :until / :size / :cursor

Examples

{:ok, result} = Intel471Ex.Reports.vulnerability_stream(%{cve_name: "CVE-2026-1234", size: 10})