Skip to content

Reports

LiMon Intelligence reports turn monitored license data into live web views, PDF artifacts, and scheduled report runs. They are meant for estate review, application ownership, site comparisons, savings analysis, audit preparation, and finance-oriented allocation workflows.

Reports use the same DB-backed model configured in the Admin UI: servers, applications, feature mappings, sites, AD/LDAP enrichment, privacy settings, and cost data. When those inputs are incomplete, reports still run, but sections that depend on business context may show gaps or unallocated rows.

LiMon Intelligence overview with report cards for savings, audit, estate, application, site, and chargeback analysis
The Intelligence overview groups the available report families and their live/PDF entry points.

Report Types

Report Web view PDF Useful for
Estate Sub Yes Yes Estate-wide application usage across all applications defined in LiMon.
Application Sub Yes Yes A selected application, including related features, users, utilization, and demand.
Site Sub Yes Yes A selected site/location, with rollups based on site assignments.
Savings (money) Sub Yes Yes Underused capacity, unused features, renewal exposure, vendor summary, and cost-savings opportunities. Requires useful application/feature cost data for best results.
Audit Defense Sub Yes Yes Compliance posture over a selected period, including capacity, denials, overdraft signals, expiring licenses, and audit-risk indicators.
Chargeback Pro Sub Yes CSV Department allocation and finance export. Requires advanced analytics, cost data, and department context from AD/LDAP or maintained mappings.

PDF-capable report types are estate, app, site, money, and audit. Chargeback is intentionally a live view plus JSON/CSV export rather than part of the shared PDF artifact path.

Live Web Views

Live report views are the interactive version of each report. They are lighter than PDF generation and are the best place to inspect current report data before producing or regenerating a PDF.

The examples below show partial contents of the Audit Defense live view: the top-level compliance posture, denial pressure, application compliance portfolio, and priority actions that help prepare evidence for audit conversations.

Partial Audit Defense live view showing period controls, compliance posture summary, risk counters, compliance breakdown, and denial pressure chart
Audit Defense live view excerpt showing the compliance posture summary and top denial pressure.
Partial Audit Defense live view showing application compliance portfolio rows and priority action findings
Audit Defense live view excerpt showing application-level compliance status and priority actions.

Open a live report from the Intelligence overview, choose the report family, and select the relevant application, site, period, or privacy option when the report needs one. The live page is also where users can check whether an existing PDF is available before generating another artifact.

PDF Generation

PDF generation is asynchronous. When a user clicks Generate PDF or Regenerate, LiMon queues a durable job and a report worker renders the PDF outside the web request. Repeated requests for the same exact report attach to the same live job, and the newest successful exact-match artifact is surfaced by default.

PDF Artifact Actions Generate PDF Download existing Regenerate Future screenshot: artifact lookup, generation progress, and download action
Placeholder for PDF generation and artifact controls.

If an exact matching PDF already exists, the report page can offer Download existing instead of forcing a new generation. Use Regenerate when the underlying data or settings have changed and a fresh artifact is needed.

Scheduling

Schedules use the same durable queue as manual PDF generation. The scheduler checks due schedules periodically, queues the matching report, and can send email when SMTP and recipients are configured.

LiMon report schedules page showing configured report schedules and scheduling controls
Report schedules define recurring PDF generation, optional email delivery, and quick run-now actions.

Use schedules for recurring review packs such as monthly estate reviews, quarterly audit preparation, or yearly savings analysis. Valid cadences are monthly, quarterly, and yearly. Scheduled email delivery depends on SMTP being configured and on recipients being set for the schedule.

Settings And Storage

Report settings are managed from the Admin UI/API, with defaults.yml providing shipped defaults. The most visible operational settings are:

Setting Default Notes
reports.output.directory /opt/limon/reports/intelligence Source of truth for generated PDF artifacts. Use an absolute path.
reports.retention_days 90 Old PDF files and superseded artifact rows are cleaned up after the retention window.
reports.money.default_period_months 12 Default Savings analysis window.
reports.money.currency EUR Single configured currency used by money-oriented report output.
reports.audit.default_period_months 12 Default Audit Defense analysis window.
privacy.mask_usernames_default false Default privacy mode for reports and related API payloads.

API For Automation

Most users generate and schedule reports from the frontend. Use the API when you need automation, scripting, integration with another portal, or external report retrieval.

All protected report calls require the API key header:

X-API-KEY: <api-key>

Live-view endpoints:

Endpoint Notes
GET /api/v1/reports/view/estate Optional mask_usernames=true.
GET /api/v1/reports/view/app?app_name=<name> app_name is required. Optional mask_usernames=true.
GET /api/v1/reports/view/site?site_name=<name> site_name is required. Optional mask_usernames=true.
GET /api/v1/reports/view/money?period_months=12&safety_margin=0.10 period_months and safety_margin are optional; configured defaults apply when omitted.
GET /api/v1/reports/view/audit?period_months=12 period_months is optional; configured defaults apply when omitted.
GET /api/v1/reports/view/chargeback?period=quarter Also accepts period_months=1, 3, 6, or 12.
GET /api/v1/reports/chargeback?format=csv&period=quarter Finance-oriented CSV export. Use format=json for API consumers.

Generate a PDF:

curl -X POST "http://your-limon-host/api/v1/reports/generate" \
  -H "X-API-KEY: <api-key>" \
  -H "Content-Type: application/json" \
  -d '{
    "type": "money",
    "params": {
      "period_months": 12,
      "safety_margin": 0.10
    }
  }'

Poll the queued job:

curl "http://your-limon-host/api/v1/reports/status/<command_id>" \
  -H "X-API-KEY: <api-key>"

Resolve an existing exact-match artifact before generating another one:

curl "http://your-limon-host/api/v1/reports/artifact?type=money&period_months=12&safety_margin=0.10" \
  -H "X-API-KEY: <api-key>"

Download the returned PDF artifact:

curl -o report.pdf "http://your-limon-host/api/v1/reports/download/<filename>" \
  -H "X-API-KEY: <api-key>"

Useful params values:

Report type Params
estate {} for PDF generation. Live views also accept mask_usernames=true as a query parameter.
app {"app_name": "MATLAB"}. Live views also accept mask_usernames=true as a query parameter.
site {"site_name": "US-NYC"}. Live views also accept mask_usernames=true as a query parameter.
money Optional period_months, safety_margin.
audit Optional period_months.

Create a monthly Estate PDF schedule:

curl -X POST "http://your-limon-host/api/v1/reports/schedules" \
  -H "X-API-KEY: <api-key>" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "Monthly Estate Review",
    "report_type": "estate",
    "report_params": {},
    "cadence": "monthly",
    "run_time": "06:30",
    "day_of_month": 1,
    "enabled": true,
    "email_enabled": true,
    "email_recipients": "[email protected]"
  }'

Schedule endpoints:

Method Endpoint Purpose
GET /api/v1/reports/schedules List schedules and SMTP readiness.
POST /api/v1/reports/schedules Create a schedule.
PUT /api/v1/reports/schedules/<id> Update a schedule.
DELETE /api/v1/reports/schedules/<id> Delete a schedule.
POST /api/v1/reports/schedules/<id>/run-now Queue the schedule immediately.

For a broader endpoint inventory, see the API Reference.