Reports API
The /reports endpoint lists and runs report templates, manages persisted (stored) reports, and manages scheduled report triggers. It is mounted under /opennms/rest/reports and uses application/json (report downloads stream the rendered output, e.g. application/pdf, text/csv).
Write operations (running, delivering, scheduling, deleting) require one of ROLE_REST, ROLE_ADMIN, or ROLE_REPORT_DESIGNER; read operations also allow ROLE_USER/ROLE_MOBILE.
GETs (reading data)
| Resource | Description |
|---|---|
|
Lists all available report templates from the active repositories. Returns |
|
Returns details for one report template (formats, parameters, categories, default timezones). Optional |
|
Lists persisted (stored) report instances. Paginated (sends a |
|
Lists scheduled report triggers. Paginated; |
|
Returns details of one scheduled trigger (parameters, delivery options, cron expression). |
|
Downloads (or re-renders) a persisted report. Query parameters |
POSTs (running, delivering, scheduling)
POST consumes application/json.
| Resource | Description |
|---|---|
|
Runs the report template |
|
Delivers a report (runs it immediately and applies delivery options such as email, webhook, or persist). Returns |
|
Creates a new cron-scheduled report. Returns |
PUT (modifying data)
PUT consumes application/json.
| Resource | Description |
|---|---|
|
Updates an existing scheduled trigger’s parameters, delivery options, and cron expression. Returns |
DELETEs (Removing Data)
| Resource | Description |
|---|---|
|
Deletes all persisted reports. Returns |
|
Deletes one persisted report by catalog ID. |
|
Deletes all scheduled report triggers. Returns |
|
Deletes one scheduled trigger by name. |
Request body
The body for running, delivering, and scheduling reports is a JSON object:
-
id(String): the report template ID (forPOST /reports/{id}the path value is used). -
format(String): output format, matched case-insensitively against theReportFormatenum (PDF,SVG,CSV,HTML, …). -
cronExpression(String): for scheduling/updating a scheduled report only. -
parameters(array): report parameters, each{ "name", "type", "value", … }wheretypeis one ofstring,integer,float,double,timezone, ordate. -
deliveryOptions(object):instanceId(String, required),sendMail(boolean),mailTo(String, required whensendMailis true),webhook(boolean),webhookUrl(String),persist(boolean),format(String).
Validation errors return 400 Bad Request with { "message": …, "context": … }.
Examples using cURL
curl -u admin:admin "http://127.0.0.1:8980/opennms/rest/reports"
curl -u admin:admin -H 'Content-Type: application/json' \
-d '{"format":"PDF","parameters":[{"name":"startDate","type":"date","date":"2026-06-01"}]}' \
-o report.pdf \
"http://127.0.0.1:8980/opennms/rest/reports/local_Early-Morning-Report"
curl -u admin:admin -H 'Content-Type: application/json' \
-d '{
"id":"local_Early-Morning-Report",
"format":"PDF",
"cronExpression":"0 0 6 * * ?",
"parameters":[],
"deliveryOptions":{"instanceId":"morning","sendMail":true,"mailTo":"ops@example.com","persist":true,"format":"PDF"}
}' \
"http://127.0.0.1:8980/opennms/rest/reports/scheduled"