GET /api/opportunities
Returns a paginated, sortable list of optimization opportunities across the estate. Each finding carries confidence scoring, full valuation lineage, pricing data, and actionability classification. Authentication:reader
Query parameters
Response
Example
GET /api/opportunities/export
Streams the filtered opportunity list as a CSV or XLSX file. Accepts the same filter and sort parameters asGET /api/opportunities and can return up to 50,000 rows with full valuation and pricing lineage columns.
Authentication: reader
Additional parameter
XLSX exports include a Metadata sheet with generation timestamp, analytics read mode, active snapshot version, and applied filters.
The export includes all core response fields plus extended valuation and pricing lineage:
valuationBasis, valuationCostSnapshotId, valuationCostType, valuationPeriodStart, valuationPeriodEnd, valuationMethodVersion, valuationComputedAt, currentCostBasis, targetPriceBasis, targetPriceSnapshotId, targetPriceStatus, targetHoursPerMonth, targetPriceEffectiveStart, reappearedAfterRemediation, and confidenceMethodVersion.
GET /api/evidence/opportunity
Returns a deterministic evidence pack for a single opportunity finding. The pack contains the full opportunity record, VM telemetry (when available), right-sizing recommendation data, and a narrative summary — everything needed to author a change request without additional API calls. Authentication:reader
Query parameters
When
format=markdown, the response is a text/markdown file download (flux-opportunity-change-request.md). When format=json, the full evidence pack is returned as a JSON object.
Returns 404 if no opportunity with the given ID exists.
Example
GET /api/evidence/cost-anomaly
Returns a deterministic evidence pack for a single cost anomaly finding. The pack includes the anomaly record, baseline evidence, and the previous-week contributor breakdown at service and resource scope. Authentication:reader
Query parameters
All four identity parameters are required — they uniquely address a single anomaly evaluation.
When
format=markdown, the response is a text/markdown file download (flux-cost-anomaly-change-request.md). When format=json, the pack is returned as a JSON object that includes a contributors array at the top level.
Returns 404 if no matching anomaly is found.
Example
GET /api/recommendations/quality
Returns Advisor recommendation quality metadata — Azure Advisor ID resolution, semantic-action classification, resource-resolution results, and the actionability reconciliation that feeds theactionability field on each opportunity.
Authentication: reader
No query parameters.
Use this endpoint to diagnose why a specific recommendation was classified as evidence_needed or governance_review rather than actionable_now, or to audit the Advisor-to-Flux-Signals semantic-action mapping.