Skip to main content

Documentation Index

Fetch the complete documentation index at: https://mintlify.com/admbe/FluxOp/llms.txt

Use this file to discover all available pages before exploring further.

The opportunities endpoints expose the unified Azure Advisor recommendations and Flux Signals findings queue with filtering, rich valuation and pricing lineage, evidence packs, and tabular export. Evidence pack endpoints return deterministic, self-contained Markdown or JSON packages that contain everything needed to open a change request — opportunity context, telemetry, right-sizing data, and cost baseline evidence — without additional API calls.

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

ParameterTypeDefaultDescription
searchstring""Free-text search against resource name, ID, type, title, and reason.
resourceIdstring""Filter to a single resource ID (exact match).
resourceTypestring""Filter by Azure resource type.
subscriptionIdstring""Filter to a single subscription GUID.
regionstring""Filter by Azure region.
sourcestring""Filter by finding source (e.g. advisor, flux).
categorystring""Filter by opportunity category (e.g. Cost, Performance).
confidencestring""Filter by confidence tier.
actionabilitystring""Filter by actionability class: actionable_now, portfolio_review, evidence_needed, or governance_review. Empty returns all classes.
includeGovernancebooleanfalseWhen true, includes governance-category findings in the result set.
sortstring"impact"Sort key: impact, savings, valuation, cost, confidence, updated, or resource.
directionstring"desc"Sort direction: asc or desc.
limitinteger250Page size. Must be between 1 and 2000.
offsetinteger0Zero-based row offset for pagination.

Response

{
  "items": [ /* array of opportunity records */ ],
  "total": 214
}
Key fields on each item:
FieldTypeDescription
sourcestring"advisor" or "flux" (Flux Signals).
categorystringOpportunity category (e.g. Cost, HighAvailability).
impactstringAzure Advisor impact level or Flux Signal severity.
confidencestringConfidence tier based on corroboration and evidence age.
titlestringShort finding title.
reasonstringOne-to-two sentence evidence-grounded rationale.
resourceNamestringAzure resource display name.
resourceIdstringFull Azure resource ID.
resourceTypestringAzure resource type.
subscriptionNamestringFriendly subscription name.
subscriptionIdstringSubscription GUID.
resourceGroupstringResource group name.
regionstringAzure region.
currentSkustringCurrent resource size or SKU.
recommendedSkustringRecommended target SKU, if applicable.
estimatedMonthlySavingsnumber | nullEstimated monthly savings in savingsCurrency.
annualSavingsAmountnumber | nullAnnualised savings projection.
actualMonthlyCostnumber | nullObserved monthly cost run-rate for the resource.
savingsCurrencystringISO 4217 currency code for savings figures.
isCorroboratedbooleanWhether this finding is corroborated by an independent signal (e.g. Advisor + Flux telemetry).
confidenceScorenumberNumeric 0–100 confidence score.
ageDaysintegerDays since the finding was first observed.
consecutiveCountintegerNumber of consecutive observation cycles the finding has persisted.
actionabilitystringactionable_now, portfolio_review, evidence_needed, or governance_review.
actionabilityReasonstringExplanation of the actionability classification.
valuationStatusstringCompleteness of the valuation computation.
monthlyGrossSavingsnumber | nullGross monthly savings before risk adjustment.
monthlyRiskAdjustedSavingsnumber | nullRisk-adjusted monthly savings.
valuationCurrencystringCurrency for valuation fields.
valuationSourcestringSource model for the valuation.
valuationBasisstringBasis description (e.g. retail price, cost snapshot).
currentMonthlyCostRunRatenumber | nullCurrent monthly cost run-rate from the cost snapshot.
targetMonthlyRetailCostnumber | nullProjected monthly retail cost at the recommended target.
targetHourlyPricenumber | nullHourly retail price for the recommended target SKU.
targetMeterIdstringAzure meter ID for the target SKU.
targetMeterNamestringMeter display name.
targetProductNamestringProduct name for the target SKU.
priceOperatingSystemstringOS qualifier used in price lookup.
priceLicenseModelstringLicense model qualifier (e.g. Windows_Server, Linux).

Example

curl "https://your-flux-host/api/opportunities?actionability=actionable_now&sort=savings&direction=desc&limit=25" \
  -H "Cookie: AppServiceAuthSession=<token>"

GET /api/opportunities/export

Streams the filtered opportunity list as a CSV or XLSX file. Accepts the same filter and sort parameters as GET /api/opportunities and can return up to 50,000 rows with full valuation and pricing lineage columns. Authentication: reader

Additional parameter

ParameterTypeDefaultDescription
formatstring"csv"csv or xlsx.
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.
curl "https://your-flux-host/api/opportunities/export?format=xlsx&actionability=actionable_now" \
  -H "Cookie: AppServiceAuthSession=<token>" \
  -o flux-opportunities.xlsx

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

ParameterTypeRequiredDescription
opportunityIdstringThe id field from an opportunity record.
formatstringOutput format: markdown (default) or json.
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

# Download a Markdown change-request pack
curl "https://your-flux-host/api/evidence/opportunity?opportunityId=<id>&format=markdown" \
  -H "Cookie: AppServiceAuthSession=<token>" \
  -o change-request.md

# Retrieve as JSON
curl "https://your-flux-host/api/evidence/opportunity?opportunityId=<id>&format=json" \
  -H "Cookie: AppServiceAuthSession=<token>"

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.
ParameterTypeRequiredDescription
runIdstringEvaluation run ID from the anomaly record.
costTypestring"ActualCost" or "AmortizedCost".
scopeTypestring"subscription", "service", or "resource".
scopeIdstringThe scope identifier for the anomaly.
formatstringOutput format: markdown (default) or json.
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

curl "https://your-flux-host/api/evidence/cost-anomaly?runId=20240610T0412Z&costType=AmortizedCost&scopeType=subscription&scopeId=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx&format=json" \
  -H "Cookie: AppServiceAuthSession=<token>"

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 the actionability 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.

Build docs developers (and LLMs) love