SG SealGrid Athena Docs

Reports

Athena reports turn the data you already collect into shareable tables. Use the no-code Basic report builder to pick a data source, choose columns, filter and sort — over your agents, installed software, and Windows services — or run one of the built-in reports for compliance posture and deployment results. Save reports for reuse, and export any result as CSV, HTML, JSON, or a printable page. Everything is available from the console, the REST API, and the PowerShell module.

Two kinds of report#

Athena has two paths to a report, and both produce the same tabular result shape:

KindWhat it isWhere it comes from
Basic builder reportA no-code definition: a data source + ordered columns + filters + sort. Runs in-memory using the same filter engine as dynamic collections.api/reports/builder/* and saved definitions under api/reports/definitions
Built-in reportA purpose-built report with fixed parameters — currently Compliance Posture and Deployment Results.GET api/reports to discover, POST api/reports/generate to run

Reading and running reports requires the Helpdesk role or above; creating, editing, and deleting saved reports requires the Operator or Admin role. Saved-report create, update, and delete are written to the audit log. See Roles & Permissions.

Every report is the same shape

Whichever path you use, the result is a title, a set of summary label/value pairs, and one or more tables (column headers plus string rows). That is why a single CSV, HTML, or JSON renderer can export any report.

The Basic report builder#

A Basic report is defined by a data source, an ordered list of column keys to project, optional filters, and an optional sort column. Three data sources are available:

Data sourceRowsUse it for
AgentsOne row per computer (the default). Selecting a child-list column — installed software or a Windows service — explodes the report to one row per item per computer.Fleet, hardware, and inventory reports; per-app or per-service listings.
SoftwareOne row per installed application per computer.Software inventory / license-style listings.
ServicesOne row per Windows service per computer.Service state across the fleet.

Ask the server which sources exist and which columns each offers, rather than hard-coding them. GET api/reports/builder/sources lists the available data sources, GET api/reports/builder/columns/{source} lists the selectable/filterable columns for one source, and GET api/reports/builder/schema returns every source with its full column catalog in a single call — handy for automation.

Column keys#

Columns are referenced by key. Single-value columns (for example MachineName, OperatingSystem, Status, Manufacturer, Model, SerialNumber) yield one value per computer. Child-list columns explode the report to one row per item; their keys use a dotted path, for example:

Child listExample column keys
Installed softwareInstalledSoftware.Name, InstalledSoftware.Version, InstalledSoftware.Publisher
Windows servicesServices.ServiceName, Services.DisplayName, Services.Status, Services.StartupType
DisksHardwareInfo.Disks.Name, HardwareInfo.Disks.TotalSizeGB, HardwareInfo.Disks.FreeSizeGB
Network interfacesNetworkInterfaces.InterfaceName, NetworkInterfaces.MacAddress, NetworkInterfaces.IpAddress

Filters reuse the dynamic-collections filter model, so the fields and operators are the same ones you already use to build a dynamic collection. Always confirm the exact keys for your server with GET api/reports/builder/columns/{source}.

Run an ad-hoc report#

Post a definition to POST api/reports/builder/run to run it without saving. With no format query parameter you get the structured JSON model; with ?format=csv, ?format=html, or ?format=json you get a file download in that format.

POST /api/reports/builder/run
{
  "name": "Windows software",
  "dataSource": "Agents",
  "columns": ["MachineName", "InstalledSoftware.Name", "InstalledSoftware.Version"],
  "sortColumn": "MachineName"
}

Selecting InstalledSoftware.Name from the Agents source explodes the result to one row per installed app per computer. To render a printable page (the "PDF" path — open it in a new tab and use the browser's Save as PDF), post the same definition to POST api/reports/builder/printable, which returns a standalone HTML document inline.

Saved reports#

Save a Basic definition so anyone with the right role can re-run it. Saved reports carry a name, optional description, and free-form tags for organizing them, plus the creator and created/updated timestamps.

Method & pathPurposeRole
GET api/reports/definitionsList saved reports (most-recently-updated first).Helpdesk+
GET api/reports/definitions/{id}Get one saved report.Helpdesk+
POST api/reports/definitionsCreate a saved report.Operator / Admin
PUT api/reports/definitions/{id}Update a saved report (null fields are left unchanged).Operator / Admin
DELETE api/reports/definitions/{id}Delete a saved report.Operator / Admin
POST api/reports/definitions/{id}/runRun a saved report; add ?format=csv|html|json to download.Helpdesk+
POST /api/reports/definitions
{
  "name": "Windows agents",
  "description": "All Windows machines and their OS build",
  "tags": ["Inventory", "Windows"],
  "dataSource": "Agents",
  "columns": ["MachineName", "OperatingSystem", "Status"],
  "filters": [
    { "fieldPath": "OperatingSystem", "operator": "Contains", "value": "Windows" }
  ],
  "sortColumn": "MachineName"
}

Built-in reports#

Call GET api/reports to discover the built-in reports and the parameters each accepts, then run one with POST api/reports/generate. Add ?format=csv to that call for a CSV download instead of the JSON model. The reports available today:

Report keyNameShowsParameters
compliance-postureCompliance PostureOverall compliant percentage for a baseline over a collection, a per-rule pass/fail breakdown, and the list of non-compliant agents.baselineId, collectionId (both GUID, required)
deployment-resultsDeployment ResultsPer-agent success / failure / pending for a single deployment, with exit code, error, and timing.deploymentId (GUID, required)
POST /api/reports/generate
{
  "reportKey": "compliance-posture",
  "parameters": {
    "baselineId": "550e8400-e29b-41d4-a716-446655440000",
    "collectionId": "550e8400-e29b-41d4-a716-446655440001"
  }
}

An unknown report key returns 404; a missing or invalid parameter returns 400.

Exporting#

Report results can be returned as a file download in several formats:

FormatHowResult
JSON modelNo format parameter.The structured result (summary + tables) as the API response.
CSV?format=csv on a builder/definition run, or on api/reports/generate.text/csv download.
HTML?format=html on a builder or saved-definition run.text/html download.
JSON file?format=json on a builder or saved-definition run.application/json download.
PrintablePOST api/reports/builder/printable.Standalone HTML shown inline — print or "Save as PDF" from the browser.

An unrecognized format value returns 400. The api/reports/generate endpoint supports csv only.

PowerShell#

The Athena PowerShell module covers the report builder and the saved-report library:

# Discover data sources and their columns
Get-AthenaReportSource
Get-AthenaReportSchema

# Run an ad-hoc per-app software report and return its rows
(Invoke-AthenaReport -DataSource Agents `
    -Columns MachineName,InstalledSoftware.Name).Tables[0].Rows

# Save a report, then list and run saved reports
New-AthenaReport -Name "Windows software" -DataSource Agents `
    -Columns MachineName,InstalledSoftware.Name -Tags Inventory,Windows

Get-AthenaReport
Get-AthenaReport -Tag Compliance
Get-AthenaReport -Tag Compliance | Invoke-AthenaReport

# Update and remove a saved report
Set-AthenaReport -Id $reportId -SortColumn MachineName
Remove-AthenaReport -Id $reportId
Which cmdlet for which job

Get-AthenaReportSource and Get-AthenaReportSchema discover what you can build; Invoke-AthenaReport runs a saved report by -Id or an ad-hoc one by -DataSource + -Columns; and New- / Set- / Remove-AthenaReport manage the saved-report library (Operator or Admin).