# Generated by API Evangelist (build-phrasing.py). Our phrasing, not observed demand. overlay: 1.0.0 info: title: API Evangelist conversational phrasing for Harness Recommendations API version: 1.0.0 extends: openapi/harness-recommendations-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: 12 - target: $.paths['/ccm/api/recommendation/overview/stats/applied'].post update: x-apievangelist-phrasing: intent: Get savings from applied recommendations by resource effect: read questions: - How much have we saved from cost recommendations we already applied, per resource type? - Which resource types delivered the biggest savings after applying recommendations? instructions: - text: Show applied recommendation savings by resource type for account {account}. slots: account: query.accountIdentifier - text: Get applied savings by resource type over the last {days} days. slots: days: requestBody.daysBack method: generated generated: '2026-09-26' - target: $.paths['/ccm/api/recommendation/overview/change-inference-status'].post update: x-apievangelist-phrasing: intent: Verify or reject an inferred recommendation effect: write questions: - Can I mark an inferred cost recommendation as verified or rejected? - Is there a way to leave a comment when rejecting an inferred recommendation? instructions: - text: Set inference status of recommendation {rec} to {status}. slots: rec: requestBody.recommendationId status: requestBody.verificationStatus - text: Reject inferred recommendation {rec} with status {status} and comment {comment}. slots: rec: requestBody.recommendationId status: requestBody.verificationStatus comment: requestBody.comment method: generated generated: '2026-09-26' - target: $.paths['/ccm/api/recommendation/overview/change-state'].post update: x-apievangelist-phrasing: intent: Mark a recommendation as applied or open effect: write questions: - How do I mark a cost recommendation as applied? - Can I record the savings I actually got when applying a recommendation? instructions: - text: Mark recommendation {rec} as {state}. slots: rec: query.recommendationId state: query.state - text: Set recommendation {rec} to {state} with applied savings {savings}. slots: rec: query.recommendationId state: query.state savings: requestBody.appliedSavings method: generated generated: '2026-09-26' - target: $.paths['/ccm/api/recommendation/overview/count'].post update: x-apievangelist-phrasing: intent: Count cost recommendations effect: read questions: - How many cost recommendations do we have right now? - Can I count only recommendations above a minimum saving? instructions: - text: Count recommendations for account {account}. slots: account: query.accountIdentifier - text: Count recommendations saving at least {min}. slots: min: requestBody.minSaving method: generated generated: '2026-09-26' - target: $.paths['/ccm/api/recommendation/overview/filter-values'].post update: x-apievangelist-phrasing: intent: List values for recommendation filters effect: read questions: - What values can I pick for each recommendation filter column? - Which clusters or namespaces show up as recommendation filter values? instructions: - text: Get recommendation filter values for columns {columns}. slots: columns: requestBody.columns - text: List distinct recommendation filter values in account {account}. slots: account: query.accountIdentifier method: generated generated: '2026-09-26' - target: $.paths['/ccm/api/recommendation/overview/supported-filters'].get update: x-apievangelist-phrasing: intent: List supported recommendation filter fields effect: read questions: - Which fields am I allowed to filter recommendations on? - What filter field IDs does the recommendations API support? instructions: - text: List supported recommendation filter fields for account {account}. slots: account: query.accountIdentifier - text: Show which filter IDs recommendations accept in account {account}. slots: account: query.accountIdentifier method: generated generated: '2026-09-26' - target: $.paths['/ccm/api/recommendation/overview/iacm'].post update: x-apievangelist-phrasing: intent: Get recommendations for IaCM-managed resources effect: read questions: - Can I get cost recommendations for resources managed by Terraform in IaCM? - Which recommendations apply to cloud resources identified by their ARNs? instructions: - text: Get recommendations for IaCM resources {resources}. slots: resources: requestBody.resources - text: Find recommendations in state {states} for IaCM resources {resources}. slots: states: requestBody.states resources: requestBody.resources method: generated generated: '2026-09-26' - target: $.paths['/ccm/api/recommendation/overview/list'].post update: x-apievangelist-phrasing: intent: List cost recommendations effect: read questions: - What cost-saving recommendations are open for my cloud resources? - Can I list recommendations sorted by potential savings? - Which recommendations cost more than a given amount to leave in place? instructions: - text: List recommendations for account {account}. slots: account: query.accountIdentifier - text: List recommendations with minimum cost {cost}, sorted by {sort}. slots: cost: requestBody.minCost sort: requestBody.sortBy - text: Show {limit} recommendations including ignored ones set to {ignored}. slots: limit: requestBody.limit ignored: requestBody.includeIgnoredRecommendation method: generated generated: '2026-09-26' - target: $.paths['/ccm/api/recommendation/overview/override-savings'].put update: x-apievangelist-phrasing: intent: Override a recommendation's savings figure effect: write questions: - Can I correct the savings amount shown on a recommendation? - Is it possible to override estimated savings with my own number? instructions: - text: Override savings on recommendation {rec} to {amount}. slots: rec: query.recommendationId amount: query.overriddenSavings - text: Set recommendation {rec} savings to {amount}. slots: rec: query.recommendationId amount: query.overriddenSavings method: generated generated: '2026-09-26' - target: $.paths['/ccm/api/recommendation/overview/realized-savings'].post update: x-apievangelist-phrasing: intent: Get realized savings over time effect: read questions: - How have realized savings from applied recommendations grown over time? - Can I see realized savings aggregated by week or month? instructions: - text: Show realized savings as a time series aggregated by {period}. slots: period: query.timeAggregation - text: Get the realized savings timeline for account {account}. slots: account: query.accountIdentifier method: generated generated: '2026-09-26' - target: $.paths['/ccm/api/recommendation/overview/resource-type/stats'].post update: x-apievangelist-phrasing: intent: Get recommendation stats by resource type effect: read questions: - How are open recommendations spread across resource types? - Which resource type has the most potential savings in open recommendations? instructions: - text: Break down recommendation stats by resource type for account {account}. slots: account: query.accountIdentifier - text: Group recommendation statistics by resource type for the last {days} days. slots: days: requestBody.daysBack method: generated generated: '2026-09-26' - target: $.paths['/ccm/api/recommendation/overview/stats'].post update: x-apievangelist-phrasing: intent: Get overall recommendation statistics effect: read questions: - What are the total potential savings across all my recommendations? - Can I get summary statistics for recommendations matching a filter? instructions: - text: Get overall recommendation statistics for account {account}. slots: account: query.accountIdentifier - text: Summarize recommendation stats with minimum saving {min}. slots: min: requestBody.minSaving method: generated generated: '2026-09-26'