# Generated by API Evangelist (build-phrasing.py). Our phrasing, not observed demand. overlay: 1.0.0 info: title: API Evangelist conversational phrasing for Microsoft Azure Reports API version: 1.0.0 extends: openapi/microsoft-azure-reports-api-openapi.yml actions: - target: $.info update: x-apievangelist-phrasing: method: generated generated: '2026-09-26' generator: build-phrasing.py label: Generated by API Evangelist operations: 14 - target: $.paths['/providers/Microsoft.ADHybridHealthService/services/{serviceName}/reports/badpassword/details/user'].get update: x-apievangelist-phrasing: intent: Get a user bad-password login attempt report effect: read questions: - Which users had bad password login attempts on my AD FS service? - Can I pull the bad password report from test data instead of customer data? instructions: - text: Get the bad password attempt report per user for service {service}. slots: service: path.serviceName - text: Show user bad password details for {service} using data source {source}. slots: service: path.serviceName source: query.dataSource method: generated generated: '2026-09-26' - target: $.paths['/providers/Microsoft.ADHybridHealthService/services/{serviceName}/reports/riskyIp/blobUris'].get update: x-apievangelist-phrasing: intent: List risky IP report download links effect: read questions: - Where can I download the Risky IP reports from the last 7 days? - Can I get links to all recent Risky IP reports for my AD Hybrid Health service? instructions: - text: List the Risky IP report download URIs for service {service}. slots: service: path.serviceName - text: Give me every Risky IP report blob link from the past week for {service}. slots: service: path.serviceName method: generated generated: '2026-09-26' - target: $.paths['/providers/Microsoft.ADHybridHealthService/services/{serviceName}/reports/riskyIp/generateBlobUri'].post update: x-apievangelist-phrasing: intent: Generate a new risky IP report effect: write questions: - How do I kick off a fresh Risky IP report for my service? - Does generating a new Risky IP report return a download URI? instructions: - text: Generate a new Risky IP report for service {service}. slots: service: path.serviceName - text: Start a fresh Risky IP report on {service} and return its URI. slots: service: path.serviceName method: generated generated: '2026-09-26' - target: $.paths['/providers/Microsoft.ADHybridHealthService/services/{serviceName}/ipAddressAggregates'].get update: x-apievangelist-phrasing: intent: List IP address aggregates for a service effect: read questions: - What IP address aggregates has Azure AD Connect Health recorded for my service? - Can I page through IP address aggregates with a continuation token? instructions: - text: List IP address aggregates for service {service}. slots: service: path.serviceName - text: Get the next page of IP address aggregates for {service} using token {token}. slots: service: path.serviceName token: query.skiptoken method: generated generated: '2026-09-26' - target: $.paths['/providers/Microsoft.ADHybridHealthService/services/{serviceName}/ipAddressAggregateSettings'].get update: x-apievangelist-phrasing: intent: Get IP address aggregate settings effect: read questions: - What thresholds are configured for IP address aggregation on my service? - Where do I check the IP address aggregate settings for AD Hybrid Health? instructions: - text: Show the IP address aggregate settings for service {service}. slots: service: path.serviceName - text: Get the IP aggregation threshold settings on {service}. slots: service: path.serviceName method: generated generated: '2026-09-26' - target: $.paths['/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/virtualMachines/{vmName}/providers/Microsoft.Automanage/configurationProfileAssignments/{configurationProfileAssignmentName}/reports/{reportName}'].get update: x-apievangelist-phrasing: intent: Get an Automanage configuration run report effect: read questions: - What did a specific Automanage configuration profile run report for my VM? - Can I open one report from a configuration profile assignment? instructions: - text: Get report {report} for assignment {assignment} on VM {vm}. slots: report: path.reportName assignment: path.configurationProfileAssignmentName vm: path.vmName - text: Show Automanage run report {report} of assignment {assignment} for virtual machine {vm}. slots: report: path.reportName assignment: path.configurationProfileAssignmentName vm: path.vmName method: generated generated: '2026-09-26' - target: $.paths['/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/virtualMachines/{vmName}/providers/Microsoft.Automanage/configurationProfileAssignments/{configurationProfileAssignmentName}/reports'].get update: x-apievangelist-phrasing: intent: List Automanage configuration run reports effect: read questions: - What Automanage reports exist for a VM's configuration profile assignment? - How can I see the history of Automanage runs on a virtual machine? instructions: - text: List reports for configuration profile assignment {assignment} on VM {vm}. slots: assignment: path.configurationProfileAssignmentName vm: path.vmName - text: Show all Automanage run reports on virtual machine {vm} for assignment {assignment}. slots: assignment: path.configurationProfileAssignmentName vm: path.vmName method: generated generated: '2026-09-26' - target: $.paths['/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/workspaces/{workspaceName}/reports/assets:snapshot'].post update: x-apievangelist-phrasing: intent: Snapshot asset metrics in an EASM workspace effect: read questions: - Can I get the latest asset snapshot for a metric in my Defender EASM workspace? - Which assets make up a metric right now in a given attack surface workspace? instructions: - text: Get the latest asset snapshot for metric {metric} in workspace {workspace}. slots: metric: requestBody.metric workspace: path.workspaceName - text: Show page {page} of the {metric} asset snapshot for workspace {workspace}. slots: page: requestBody.page metric: requestBody.metric workspace: path.workspaceName method: generated generated: '2026-09-26' - target: $.paths['/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/workspaces/{workspaceName}/reports/assets:summarize'].post update: x-apievangelist-phrasing: intent: Summarize assets in an EASM workspace effect: read questions: - How do I get an asset summary grouped by a facet for my Defender EASM workspace? - Can I summarize workspace assets by metric category? instructions: - text: Summarize assets in workspace {workspace} for metric categories {categories}. slots: workspace: path.workspaceName categories: requestBody.metricCategories - text: Summarize workspace {workspace} assets grouped by {groupBy}. slots: workspace: path.workspaceName groupBy: requestBody.groupBy method: generated generated: '2026-09-26' - target: $.paths['/reports/assets:getBillable'].post update: x-apievangelist-phrasing: intent: Get billable asset summary effect: read questions: - How many billable assets does my attack surface workspace have? - Where do I see the billable asset count for Defender EASM? instructions: - text: Get the billable assets summary for my workspace. - text: Show billable asset totals using API version {version}. slots: version: query.api-version method: generated generated: '2026-09-26' - target: $.paths['/reports/assets:getSnapshot'].post update: x-apievangelist-phrasing: intent: Get latest asset snapshot via data plane effect: read questions: - Can I pull the most recent asset snapshot for a metric from the EASM data-plane endpoint? - What assets sit behind a risk metric in the data-plane reports? instructions: - text: Get the data-plane asset snapshot for metric {metric}. slots: metric: requestBody.metric - text: Fetch page {page} of the data-plane snapshot for {metric}, {size} assets per page. slots: page: requestBody.page metric: requestBody.metric size: requestBody.size method: generated generated: '2026-09-26' - target: $.paths['/reports/assets:getSummary'].post update: x-apievangelist-phrasing: intent: Get asset summary via data plane effect: read questions: - Can I get risk reporting summaries by metric from the EASM data-plane endpoint? - How do I filter a data-plane asset summary? instructions: - text: Get the data-plane asset summary for metrics {metrics}. slots: metrics: requestBody.metrics - text: Summarize data-plane assets with filters {filters} segmented by {segmentBy}. slots: filters: requestBody.filters segmentBy: requestBody.segmentBy method: generated generated: '2026-09-26' - target: $.paths['/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/NetworkExperimentProfiles/{profileName}/Experiments/{experimentName}/LatencyScorecard'].get update: x-apievangelist-phrasing: intent: Get a network experiment latency scorecard effect: read questions: - How did endpoint latency compare in my Front Door network experiment? - Can I get a latency scorecard for one country only? instructions: - text: Get the latency scorecard for experiment {experiment} in profile {profile}, group {group}, interval {interval}. slots: experiment: path.experimentName profile: path.profileName group: path.resourceGroupName interval: query.aggregationInterval - text: Show {country} latency scorecard for experiment {experiment} in profile {profile}, group {group}, interval {interval}. slots: country: query.country experiment: path.experimentName profile: path.profileName group: path.resourceGroupName interval: query.aggregationInterval method: generated generated: '2026-09-26' - target: $.paths['/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/NetworkExperimentProfiles/{profileName}/Experiments/{experimentName}/Timeseries'].get update: x-apievangelist-phrasing: intent: Get a network experiment timeseries effect: read questions: - Can I chart latency or measurement counts over time for a network experiment? - What timeseries types can I pull for a specific experiment endpoint? instructions: - text: Get the {type} timeseries for experiment {experiment} in profile {profile}, group {group} from {start} to {end} at {interval}. slots: type: query.timeseriesType experiment: path.experimentName profile: path.profileName group: path.resourceGroupName start: query.startDateTimeUTC end: query.endDateTimeUTC interval: query.aggregationInterval - text: Show experiment {experiment} timeseries for endpoint {endpoint} (profile {profile}, group {group}). slots: experiment: path.experimentName endpoint: query.endpoint profile: path.profileName group: path.resourceGroupName method: generated generated: '2026-09-26'