Harness · OpenAPI Overlay 1.0.0
API Evangelist conversational phrasing for Harness Budgets API
21 actions
21 updates
phrasing
extends
openapi/harness-budgets-api-openapi.yml
Generated by API Evangelist
Written by API Evangelist tooling for Harness's API. It is a proposal applied on top of the contract, not a document Harness publishes.
What the actions change
x-apievangelist-phrasing
Targets 21 · first 16 shown; the file carries all of them
$.info
$.paths['/ccm/api/budgets/bulk/adjust-budget-amount'].post
$.paths['/ccm/api/budgets/bulk/clone'].post
$.paths['/ccm/api/budgets/bulk/create-cost-bucket-budgets'].post
$.paths['/ccm/api/budgets/bulk/delete'].post
$.paths['/ccm/api/budgets/bulk/check-job-status'].get
$.paths['/ccm/api/budgets/bulk/manage-alerts'].post
$.paths['/ccm/api/budgets/{id}'].get
$.paths['/ccm/api/budgets/{id}'].put
$.paths['/ccm/api/budgets/{id}'].post
$.paths['/ccm/api/budgets/{id}'].delete
$.paths['/ccm/api/budgets/filter-values'].post
$.paths['/ccm/api/budgets/v2/list'].post
$.paths['/ccm/api/budgets/v2/metrics'].post
$.paths['/ccm/api/budgets/{id}/costDetails'].get
$.paths['/ccm/api/budgets/perspectiveBudgets'].get
OpenAPI Overlay
# Generated by API Evangelist (build-phrasing.py). Our phrasing, not observed demand.
overlay: 1.0.0
info:
title: API Evangelist conversational phrasing for Harness Budgets API
version: 1.0.0
extends: openapi/harness-budgets-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: 20
- target: $.paths['/ccm/api/budgets/bulk/adjust-budget-amount'].post
update:
x-apievangelist-phrasing:
intent: Adjust the amount of many budgets at once
effect: write
questions:
- Can I raise several cloud cost budgets by a percentage in one request?
- How do I bulk change the amount on a set of Harness budgets?
- Is the bulk adjustment a fixed amount or a percentage of each budget?
instructions:
- text: Increase budgets {budgetIds} by {adjustmentValue} using adjustment type {adjustBudgetBulkRequestType}.
slots:
budgetIds: requestBody.budgetIds
adjustmentValue: requestBody.adjustmentValue
adjustBudgetBulkRequestType: requestBody.adjustBudgetBulkRequestType
- text: Bulk adjust the amount of budgets {budgetIds} by {adjustmentValue}.
slots:
budgetIds: requestBody.budgetIds
adjustmentValue: requestBody.adjustmentValue
method: generated
generated: '2026-09-26'
- target: $.paths['/ccm/api/budgets/bulk/clone'].post
update:
x-apievangelist-phrasing:
intent: Clone several budgets in bulk
effect: write
questions:
- Can I duplicate a batch of budgets and decide how their alerts are copied?
- What suffix gets added to budgets I clone in bulk?
- When bulk cloning budgets, can I send the copied alerts to new email or Slack recipients?
instructions:
- text: Clone budgets {budgetIds} in bulk with alert mode {alertMode}.
slots:
budgetIds: requestBody.budgetIds
alertMode: requestBody.alertMode
- text: Bulk clone budgets {budgetIds}, add suffix {suffix} to the copies and handle alerts with {alertMode}.
slots:
budgetIds: requestBody.budgetIds
suffix: requestBody.suffix
alertMode: requestBody.alertMode
- text: Clone budgets {budgetIds} and route the copied alert thresholds to {emailRecipients} using alert mode {alertMode}.
slots:
budgetIds: requestBody.budgetIds
emailRecipients: requestBody.emailRecipients
alertMode: requestBody.alertMode
method: generated
generated: '2026-09-26'
- target: $.paths['/ccm/api/budgets/bulk/create-cost-bucket-budgets'].post
update:
x-apievangelist-phrasing:
intent: Create budgets for many cost buckets at once
effect: write
questions:
- How do I create a budget for every cost bucket in a cost category in one call?
- Can bulk cost bucket budgets be set up with a growth rate instead of a fixed amount?
- Which period and type do I need when creating cost bucket budgets in bulk?
instructions:
- text: Create {period} budgets of {budgetAmount} for cost buckets {costBucketIds} in cost category {costCategoryId}, type {type}.
slots:
period: requestBody.period
budgetAmount: requestBody.budgetAmount
costBucketIds: requestBody.costBucketIds
costCategoryId: requestBody.costCategoryId
type: requestBody.type
- text: Bulk create cost bucket budgets for category {costCategoryId} buckets {costBucketIds} with name prefix {namePrefix}, period {period}, type {type}.
slots:
costCategoryId: requestBody.costCategoryId
costBucketIds: requestBody.costBucketIds
namePrefix: requestBody.namePrefix
period: requestBody.period
type: requestBody.type
method: generated
generated: '2026-09-26'
- target: $.paths['/ccm/api/budgets/bulk/delete'].post
update:
x-apievangelist-phrasing:
intent: Delete several budgets at once
effect: destructive
questions:
- Can I delete a whole list of cost budgets in a single request?
- What happens if I bulk delete budgets in Harness Cloud Cost Management?
instructions:
- text: Delete budgets {budgetIds} in bulk.
slots:
budgetIds: requestBody.budgetIds
- text: 'Remove all of these budgets at once: {budgetIds}.'
slots:
budgetIds: requestBody.budgetIds
method: generated
generated: '2026-09-26'
- target: $.paths['/ccm/api/budgets/bulk/check-job-status'].get
update:
x-apievangelist-phrasing:
intent: Check the status of a bulk budget job
effect: read
questions:
- Has my bulk budget update job finished yet?
- Can I tell whether a bulk budget job is running, completed or failed?
instructions:
- text: Check whether the bulk budget update job in account {accountIdentifier} is still running.
slots:
accountIdentifier: query.accountIdentifier
- text: Show the status of the latest bulk budget job.
method: generated
generated: '2026-09-26'
- target: $.paths['/ccm/api/budgets/bulk/manage-alerts'].post
update:
x-apievangelist-phrasing:
intent: Manage alerts on many budgets at once
effect: write
questions:
- Can I add or remove alert recipients across many budgets in one go?
- How do I delete the alerts on a batch of budgets?
- Which alert actions are supported for bulk budget alert management?
instructions:
- text: Apply alert action {action} to budgets {budgetIds}.
slots:
action: requestBody.action
budgetIds: requestBody.budgetIds
- text: Add email recipients {emailRecipients} to the alerts on budgets {budgetIds} using action {action}.
slots:
emailRecipients: requestBody.emailRecipients
budgetIds: requestBody.budgetIds
action: requestBody.action
- text: Add alert thresholds {alertThresholds} to budgets {budgetIds} with action {action}.
slots:
alertThresholds: requestBody.alertThresholds
budgetIds: requestBody.budgetIds
action: requestBody.action
method: generated
generated: '2026-09-26'
- target: $.paths['/ccm/api/budgets/{id}'].get
update:
x-apievangelist-phrasing:
intent: Get a budget's details
effect: read
questions:
- What amount, period and thresholds are set on one specific budget?
- How can I look up a single cost budget by its ID?
instructions:
- text: Show the details of budget {id}.
slots:
id: path.id
- text: Fetch budget {id} so I can review its configuration.
slots:
id: path.id
method: generated
generated: '2026-09-26'
- target: $.paths['/ccm/api/budgets/{id}'].put
update:
x-apievangelist-phrasing:
intent: Update an existing budget
effect: write
questions:
- How do I edit a budget I already created?
- Can I change an existing budget's settings by its ID?
instructions:
- text: Update budget {id} with the new settings.
slots:
id: path.id
- text: Save changes to existing budget {id}.
slots:
id: path.id
method: generated
generated: '2026-09-26'
- target: $.paths['/ccm/api/budgets/{id}'].post
update:
x-apievangelist-phrasing:
intent: Clone a single budget under a new name
effect: write
questions:
- Can I copy one budget and give the copy its own name?
- How do I duplicate a single existing budget?
instructions:
- text: Clone budget {id} as {cloneName}.
slots:
id: path.id
cloneName: query.cloneName
- text: Make a copy of budget {id} named {cloneName}.
slots:
id: path.id
cloneName: query.cloneName
method: generated
generated: '2026-09-26'
- target: $.paths['/ccm/api/budgets/{id}'].delete
update:
x-apievangelist-phrasing:
intent: Delete a single budget
effect: destructive
questions:
- How do I remove one budget by its ID?
- Is deleting a single budget permanent?
instructions:
- text: Delete budget {id}.
slots:
id: path.id
- text: Remove the budget with ID {id}.
slots:
id: path.id
method: generated
generated: '2026-09-26'
- target: $.paths['/ccm/api/budgets/filter-values'].post
update:
x-apievangelist-phrasing:
intent: Get the available filter values for budgets
effect: read
questions:
- Which values can I filter my budget list by for a given column?
- What filter options exist for budgets, like periods or creators?
instructions:
- text: List the filter values available for budget columns {columns}.
slots:
columns: requestBody.columns
- text: Show every value I can pick in the budget filters.
method: generated
generated: '2026-09-26'
- target: $.paths['/ccm/api/budgets/v2/list'].post
update:
x-apievangelist-phrasing:
intent: Filter the budgets I have access to
effect: read
questions:
- Which of my budgets are over budget or at risk?
- Can I search budgets by name and filter them by folder or amount range?
- What budgets exist for a given cost category and bucket?
instructions:
- text: Find budgets with status {budgetStatus} that I can access.
slots:
budgetStatus: requestBody.budgetStatus
- text: Search the budgets I can see for names containing {searchKey}.
slots:
searchKey: requestBody.searchKey
- text: List budgets in folders {folderIds} between {minBudgetAmount} and {maxBudgetAmount}.
slots:
folderIds: requestBody.folderIds
minBudgetAmount: requestBody.minBudgetAmount
maxBudgetAmount: requestBody.maxBudgetAmount
method: generated
generated: '2026-09-26'
- target: $.paths['/ccm/api/budgets/v2/metrics'].post
update:
x-apievangelist-phrasing:
intent: Count total and over-budget budgets
effect: read
questions:
- How many budgets do I have, and how many are over budget?
- What's the over-budget count for budgets in a particular folder?
instructions:
- text: Count my budgets and how many are over budget.
- text: Give me the total and over-budget counts for budgets in folders {folderIds}.
slots:
folderIds: requestBody.folderIds
method: generated
generated: '2026-09-26'
- target: $.paths['/ccm/api/budgets/{id}/costDetails'].get
update:
x-apievangelist-phrasing:
intent: Get the cost details of a budget
effect: read
questions:
- How much has been spent against a specific budget so far?
- Can I see a budget's actual versus forecast cost month by month?
instructions:
- text: Show the cost details for budget {id}.
slots:
id: path.id
- text: Break down budget {id} costs by {breakdown}.
slots:
id: path.id
breakdown: query.breakdown
method: generated
generated: '2026-09-26'
- target: $.paths['/ccm/api/budgets/perspectiveBudgets'].get
update:
x-apievangelist-phrasing:
intent: List the budgets tied to a perspective
effect: read
questions:
- Which budgets are attached to a particular cost perspective?
- Does this perspective have any budgets set on it?
instructions:
- text: List the budgets for perspective {perspectiveId}.
slots:
perspectiveId: query.perspectiveId
- text: Show every budget linked to perspective {perspectiveId}.
slots:
perspectiveId: query.perspectiveId
method: generated
generated: '2026-09-26'
- target: $.paths['/ccm/api/budgets'].get
update:
x-apievangelist-phrasing:
intent: List all budgets in the account
effect: read
questions:
- What cloud cost budgets are defined in my Harness account?
- Can I sort the full budget list by a field and order?
instructions:
- text: List all my budgets.
- text: List every budget sorted by {budgetSortType} in {sortOrder} order.
slots:
budgetSortType: query.budgetSortType
sortOrder: query.sortOrder
method: generated
generated: '2026-09-26'
- target: $.paths['/ccm/api/budgets'].post
update:
x-apievangelist-phrasing:
intent: Create a cost budget with alerts
effect: write
questions:
- How do I get alerted when cloud spend exceeds or is forecast to exceed a budget?
- Can a new budget notify a user group or Slack when a threshold is crossed?
- What does a yearly budget with a monthly breakdown look like when creating one?
instructions:
- text: Create a {period} budget named {name} for {budgetAmount}.
slots:
period: requestBody.period
name: requestBody.name
budgetAmount: requestBody.budgetAmount
- text: Create budget {name} for account {accountId} and email {emailAddresses} when thresholds {alertThresholds} are hit.
slots:
name: requestBody.name
accountId: requestBody.accountId
emailAddresses: requestBody.emailAddresses
alertThresholds: requestBody.alertThresholds
method: generated
generated: '2026-09-26'
- target: $.paths['/ccm/api/budgets/subscribe/list'].get
update:
x-apievangelist-phrasing:
intent: List the alert thresholds on a budget
effect: read
questions:
- What alert thresholds are configured on this budget?
- At what percentages will a budget send me alerts?
instructions:
- text: List the alert thresholds for budget {budgetId}.
slots:
budgetId: query.budgetId
- text: Show when budget {budgetId} will alert.
slots:
budgetId: query.budgetId
method: generated
generated: '2026-09-26'
- target: $.paths['/ccm/api/budgets/moveBudgets'].post
update:
x-apievangelist-phrasing:
intent: Move budgets into another folder
effect: write
questions:
- Can I move budgets to a different folder than their perspective's?
- How do I reorganize budgets into a new folder?
instructions:
- text: Move budgets {budgetIds} to folder {newFolderId}.
slots:
budgetIds: requestBody.budgetIds
newFolderId: requestBody.newFolderId
- text: Put budgets {budgetIds} in folder {newFolderId}, overriding the perspective folder.
slots:
budgetIds: requestBody.budgetIds
newFolderId: requestBody.newFolderId
method: generated
generated: '2026-09-26'
- target: $.paths['/ccm/api/budgets/subscribe'].post
update:
x-apievangelist-phrasing:
intent: Replace the alert thresholds on a budget
effect: write
questions:
- How do I change the alert percentages on one budget?
- Can I overwrite a budget's alert thresholds with a new list?
instructions:
- text: Update the alert thresholds on budget {budgetId}.
slots:
budgetId: query.budgetId
- text: Set new alert thresholds for budget {budgetId}.
slots:
budgetId: query.budgetId
method: generated
generated: '2026-09-26'