Harness Budgets API

Manage Budgets in bulk

Operations 20

POST /ccm/api/budgets/bulk/adjust-budget-amount Adjust Budget Amount in bulk #
POST /ccm/api/budgets/bulk/clone Clone Budgets in bulk #
POST /ccm/api/budgets/bulk/create-cost-bucket-budgets Bulk create Cost Bucket Budgets #
POST /ccm/api/budgets/bulk/delete Delete Budgets in bulk #
GET /ccm/api/budgets/bulk/check-job-status Check bulk budget update job status #
POST /ccm/api/budgets/bulk/manage-alerts Manage Budget Alerts in bulk #
GET /ccm/api/budgets/{id} Fetch Budget details #
PUT /ccm/api/budgets/{id} Update an existing budget #
POST /ccm/api/budgets/{id} Clone a budget #
DELETE /ccm/api/budgets/{id} Delete a budget #
POST /ccm/api/budgets/filter-values Return the list of filter values for the Budgets #
POST /ccm/api/budgets/v2/list Filter budgets with RBAC checks #
POST /ccm/api/budgets/v2/metrics Budget count metrics with RBAC checks #
GET /ccm/api/budgets/{id}/costDetails Fetch the cost details of a Budget #
GET /ccm/api/budgets/perspectiveBudgets List all the Budgets associated with a Perspective #
GET /ccm/api/budgets List all the Budgets #
POST /ccm/api/budgets Create a Budget #
GET /ccm/api/budgets/subscribe/list List alert thresholds for a budget #
POST /ccm/api/budgets/moveBudgets Move budgets to a folder #
POST /ccm/api/budgets/subscribe Update alert thresholds for a budget #

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/harness-budgets-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

harness-budgets-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Harness Budgets API
  version: '1.0'
  description: The Harness Software Delivery Platform uses OpenAPI Specification v3.0.
  contact:
    name: API Support
    email: contact@harness.io
    url: https://harness.io/
  x-logo:
    url: https://mma.prnewswire.com/media/779232/Harnes_logo_horizontal.jpg?p=facebook
    altText: Harness
  termsOfService: https://harness.io/terms-of-use/
servers:
- url: https://app.harness.io
  description: Harness host URL
- url: https://{vanity}
  description: Vanity URL
  variables:
    vanity:
      default: app.harness.io
security:
- x-api-key: []
tags:
- name: Budgets
  description: Manage Budgets in bulk
paths:
  /ccm/api/budgets/bulk/adjust-budget-amount:
    post:
      tags:
      - Budgets
      summary: Adjust Budget Amount in bulk
      description: Change the budget amount for the budgets in bulk
      operationId: adjustBudgetAmountOperation
      parameters:
      - name: accountIdentifier
        in: query
        description: Account Identifier for the Entity.
        required: true
        schema:
          type: string
      requestBody:
        description: Bulk operation details
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AdjustBudgetAmountRequest'
        required: true
      responses:
        '202':
          description: Bulk operation accepted
          content:
            application/json: {}
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Failure'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CcmError'
  /ccm/api/budgets/bulk/clone:
    post:
      tags:
      - Budgets
      summary: Clone Budgets in bulk
      description: Clone budgets in bulk with customizable alert handling options
      operationId: cloneBudgetsBulkOperation
      parameters:
      - name: accountIdentifier
        in: query
        description: Account Identifier for the Entity.
        required: true
        schema:
          type: string
      requestBody:
        description: Bulk clone operation details
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CloneBudgetRequest'
        required: true
      responses:
        '202':
          description: Bulk clone operation accepted
          content:
            application/json: {}
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Failure'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CcmError'
  /ccm/api/budgets/bulk/create-cost-bucket-budgets:
    post:
      tags:
      - Budgets
      summary: Bulk create Cost Bucket Budgets
      description: Create budgets for multiple cost buckets within a cost category
      operationId: createCostBucketBudgetsBulk
      parameters:
      - name: accountIdentifier
        in: query
        description: Account Identifier for the Entity.
        required: true
        schema:
          type: string
      requestBody:
        description: Bulk create cost bucket budgets request
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateCostBucketBudgetsRequest'
        required: true
      responses:
        '202':
          description: Bulk create operation accepted
          content:
            application/json: {}
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Failure'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CcmError'
  /ccm/api/budgets/bulk/delete:
    post:
      tags:
      - Budgets
      summary: Delete Budgets in bulk
      description: Delete budgets in bulk.
      operationId: deleteBudgetsBulkOperation
      parameters:
      - name: accountIdentifier
        in: query
        description: Account Identifier for the Entity.
        required: true
        schema:
          type: string
      requestBody:
        description: Bulk delete operation details
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/DeleteBudgetRequest'
        required: true
      responses:
        '202':
          description: Bulk delete operation accepted
          content:
            application/json: {}
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Failure'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CcmError'
  /ccm/api/budgets/bulk/check-job-status:
    get:
      tags:
      - Budgets
      summary: Check bulk budget update job status
      description: Checks the current status (RUNNING, COMPLETED, FAILED) of a bulk budget update job by jobId.
      operationId: checkBulkBudgetJobStatus
      parameters:
      - name: accountIdentifier
        in: query
        description: Account Identifier for the Entity.
        required: true
        schema:
          type: string
      responses:
        '200':
          description: Returns the status string of the bulk update job (RUNNING, COMPLETED, FAILED)
          content:
            application/json: {}
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Failure'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CcmError'
  /ccm/api/budgets/bulk/manage-alerts:
    post:
      tags:
      - Budgets
      summary: Manage Budget Alerts in bulk
      description: Manage alerts for budgets in bulk (delete, add, add/remove recipients)
      operationId: manageBudgetAlertsBulkOperation
      parameters:
      - name: accountIdentifier
        in: query
        description: Account Identifier for the Entity.
        required: true
        schema:
          type: string
      requestBody:
        description: Bulk manage alerts operation details
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ManageBudgetAlertsRequest'
        required: true
      responses:
        '202':
          description: Bulk manage alerts operation accepted
          content:
            application/json: {}
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Failure'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CcmError'
  /ccm/api/budgets/{id}:
    get:
      tags:
      - Budgets
      summary: Fetch Budget details
      description: Fetch details of a Budget for the given Budget ID.
      operationId: getBudget
      parameters:
      - name: accountIdentifier
        in: query
        description: Account Identifier for the Entity.
        required: true
        schema:
          type: string
      - name: id
        in: path
        description: Unique identifier for the budget
        required: true
        schema:
          type: string
      responses:
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Failure'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CcmError'
        default:
          description: Get a Budget by it's identifier
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResponseDTOBudget'
    put:
      tags:
      - Budgets
      summary: Update an existing budget
      description: Update an existing Budget for the given Budget ID.
      operationId: updateBudget
      parameters:
      - name: accountIdentifier
        in: query
        description: Account Identifier for the Entity.
        required: true
        schema:
          type: string
      - name: id
        in: path
        description: Unique identifier for the budget
        required: true
        schema:
          type: string
      requestBody:
        description: The Budget object
        content:
          application/json:
            schema:
              type: string
        required: true
      responses:
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Failure'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CcmError'
        default:
          description: Returns a generic string message when the operation is successful
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResponseDTOString'
    post:
      tags:
      - Budgets
      summary: Clone a budget
      description: Clone a Budget using the given Budget ID.
      operationId: cloneBudget
      parameters:
      - name: accountIdentifier
        in: query
        description: Account Identifier for the Entity.
        required: true
        schema:
          type: string
      - name: id
        in: path
        description: Unique identifier for the budget
        required: true
        schema:
          type: string
      - name: cloneName
        in: query
        description: Name of the new budget
        required: true
        schema:
          type: string
      responses:
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Failure'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CcmError'
        default:
          description: Returns the identifier string of the new Budget created using clone operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResponseDTOString'
    delete:
      tags:
      - Budgets
      summary: Delete a budget
      description: Delete a Budget for the given Budget ID.
      operationId: deleteBudget
      parameters:
      - name: accountIdentifier
        in: query
        description: Account Identifier for the Entity.
        required: true
        schema:
          type: string
      - name: id
        in: path
        description: Unique identifier for the budget
        required: true
        schema:
          type: string
      responses:
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Failure'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CcmError'
        default:
          description: Returns a text message whether the operation was successful
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResponseDTOString'
  /ccm/api/budgets/filter-values:
    post:
      tags:
      - Budgets
      summary: Return the list of filter values for the Budgets
      description: Returns the list of filter values for all the specified filters.
      operationId: budgetFilterValues
      parameters:
      - name: accountIdentifier
        in: query
        description: Account Identifier for the Entity.
        required: true
        schema:
          type: string
      requestBody:
        description: Budget Filter Values Body.
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/BudgetFilterValues'
        required: true
      responses:
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Failure'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CcmError'
  /ccm/api/budgets/v2/list:
    post:
      tags:
      - Budgets
      summary: Filter budgets with RBAC checks
      description: Returns a list of budgets based on filter criteria with folder-based RBAC checks
      operationId: getAccessibleBudgetSummaries
      parameters:
      - name: accountIdentifier
        in: query
        description: Account Identifier for the Entity.
        required: true
        schema:
          type: string
      - name: sortType
        in: query
        description: Field to sort results by
        schema:
          type: string
          enum:
          - BUDGET_AMOUNT
          - NAME
          - ACTUAL_COST
          - FORECASTED_COST
      - name: sortOrder
        in: query
        description: Sort order (ASCENDING or DESCENDING)
        schema:
          type: string
          enum:
          - ASCENDING
          - DESCENDING
      requestBody:
        description: Filter properties for budgets
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CCMBudgetFilterProperties'
        required: true
      responses:
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Failure'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CcmError'
  /ccm/api/budgets/v2/metrics:
    post:
      tags:
      - Budgets
      summary: Budget count metrics with RBAC checks
      description: Returns the total budget count (ignoring any budgetStatus selection) and the over-budget count for the given filter, with folder-based RBAC checks
      operationId: getBudgetSummaryMetrics
      parameters:
      - name: accountIdentifier
        in: query
        description: Account Identifier for the Entity.
        required: true
        schema:
          type: string
      requestBody:
        description: Filter properties for budgets
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CCMBudgetFilterProperties'
        required: true
      responses:
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Failure'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CcmError'
  /ccm/api/budgets/{id}/costDetails:
    get:
      tags:
      - Budgets
      summary: Fetch the cost details of a Budget
      description: Fetch the cost details of a Budget for the given Budget ID.
      operationId: getCostDetails
      parameters:
      - name: accountIdentifier
        in: query
        description: Account Identifier for the Entity.
        required: true
        schema:
          type: string
      - name: id
        in: path
        description: Unique identifier for the Budget
        required: true
        schema:
          type: string
      - name: breakdown
        in: query
        description: MONTHLY/YEARLY breakdown. The default value is YEARLY
        schema:
          type: string
          description: Whether the Yearly budget breakdown is yearly or monthly
          enum:
          - YEARLY
          - MONTHLY
      responses:
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Failure'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CcmError'
        default:
          description: Returns the cost data of a Budget
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResponseDTOBudgetData'
  /ccm/api/budgets/perspectiveBudgets:
    get:
      tags:
      - Budgets
      summary: List all the Budgets associated with a Perspective
      description: List all the Budgets associated for the given Perspective ID.
      operationId: listBudgetsForPerspective
      parameters:
      - name: accountIdentifier
        in: query
        description: Account Identifier for the Entity.
        required: true
        schema:
          type: string
      - name: perspectiveId
        in: query
        description: Unique identifier for the Perspective
        required: true
        schema:
          type: string
      responses:
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Failure'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CcmError'
        default:
          description: Returns the list of Budgets
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResponseDTOListBudget'
  /ccm/api/budgets:
    get:
      tags:
      - Budgets
      summary: List all the Budgets
      description: List all the Budgets.
      operationId: listBudgets
      parameters:
      - name: accountIdentifier
        in: query
        description: Account Identifier for the Entity.
        required: true
        schema:
          type: string
      - name: budgetSortType
        in: query
        description: Budget List Sort Type
        schema:
          type: string
          enum:
          - BUDGET_AMOUNT
          - NAME
          - ACTUAL_COST
          - FORECASTED_COST
      - name: sortOrder
        in: query
        description: Budget List Sort Order
        schema:
          type: string
          enum:
          - ASCENDING
          - DESCENDING
      responses:
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Failure'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CcmError'
        default:
          description: Returns the list of all Budgets
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResponseDTOListBudget'
    post:
      tags:
      - Budgets
      summary: Create a Budget
      description: Create a Budget to set and receive alerts when your costs exceed (or are forecasted to exceed) your budget amount.
      operationId: createBudget
      parameters:
      - name: accountIdentifier
        in: query
        description: Account Identifier for the Entity.
        required: true
        schema:
          type: string
      requestBody:
        description: Budget definition
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/Budget'
        required: true
      responses:
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Failure'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CcmError'
        default:
          description: Returns the ID string of the new Budget created
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResponseDTOString'
  /ccm/api/budgets/subscribe/list:
    get:
      tags:
      - Budgets
      summary: List alert thresholds for a budget
      description: List all the alert thresholds that have been set for the given Budget ID.
      operationId: listBudgetAlertThresholds
      parameters:
      - name: accountIdentifier
        in: query
        description: Account Identifier for the Entity.
        required: true
        schema:
          type: string
      - name: budgetId
        in: query
        description: Unique identifier for the budget
        required: true
        schema:
          type: string
      responses:
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Failure'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CcmError'
        default:
          description: Returns the list of alert thresholds for the budget
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResponseDTOListAlertThreshold'
  /ccm/api/budgets/moveBudgets:
    post:
      tags:
      - Budgets
      summary: Move budgets to a folder
      description: Move budgets to a different folder, overriding perspective folder inheritance.
      operationId: moveBudgets
      parameters:
      - name: accountIdentifier
        in: query
        description: Account Identifier for the Entity.
        required: true
        schema:
          type: string
      requestBody:
        description: Request body containing budgetIds and newFolderId
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/MoveBudgetsDTO'
        required: true
      responses:
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Failure'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CcmError'
        default:
          description: Returns number of budgets moved
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResponseDTOInteger'
  /ccm/api/budgets/subscribe:
    post:
      tags:
      - Budgets
      summary: Update alert thresholds for a budget
      description: Update the alert thresholds for the given Budget ID with the provided list of alert thresholds.
      operationId: updateBudgetAlertThresholds
      parameters:
      - name: accountIdentifier
        in: query
        description: Account Identifier for the Entity.
        required: true
        schema:
          type: string
      - name: budgetId
        in: query
        description: Unique identifier for the budget
        required: true
        schema:
          type: string
      requestBody:
        description: List of alert thresholds to set for the budget
        content:
          application/json:
            schema:
              type: array
              items:
                $ref: '#/components/schemas/AlertThreshold'
        required: true
      responses:
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Failure'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CcmError'
        default:
          description: Returns a success message when the alert thresholds are updated successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResponseDTOString'
components:
  schemas:
    CcmError:
      type: object
      properties:
        status:
          type: string
          enum:
          - SUCCESS
          - FAILURE
          - ERROR
        code:
          type: string
          enum:
          - DEFAULT_ERROR_CODE
          - INVALID_ARGUMENT
          - INVALID_EMAIL
          - DOMAIN_NOT_ALLOWED_TO_REGISTER
          - COMMNITY_EDITION_NOT_FOUND
          - DEPLOY_MODE_IS_NOT_ON_PREM
          - USER_ALREADY_REGISTERED
          - USER_INVITATION_DOES_NOT_EXIST
          - USER_DOES_NOT_EXIST
          - USER_INVITE_OPERATION_FAILED
          - USER_DISABLED
          - ACCOUNT_DOES_NOT_EXIST
          - INACTIVE_ACCOUNT
          - ACCOUNT_MIGRATED
          - ACCOUNT_MIGRATED_TO_NEXT_GEN
          - USER_DOMAIN_NOT_ALLOWED
          - MAX_FAILED_ATTEMPT_COUNT_EXCEEDED
          - RESOURCE_NOT_FOUND
          - INVALID_FORMAT
          - ROLE_DOES_NOT_EXIST
          - EMAIL_NOT_VERIFIED
          - EMAIL_VERIFICATION_TOKEN_NOT_FOUND
          - INVALID_TOKEN
          - REVOKED_TOKEN
          - INVALID_CAPTCHA_TOKEN
          - NOT_ACCOUNT_MGR_NOR_HAS_ALL_APP_ACCESS
          - EXPIRED_TOKEN
          - INVALID_AGENT_MTLS_AUTHORITY
          - TOKEN_ALREADY_REFRESHED_ONCE
          - ACCESS_DENIED
          - NG_ACCESS_DENIED
          - INVALID_CREDENTIAL
          - INVALID_CREDENTIALS_THIRD_PARTY
          - INVALID_KEY
          - INVALID_CONNECTOR_TYPE
          - INVALID_KEYPATH
          - INVALID_VARIABLE
          - UNKNOWN_HOST
          - UNREACHABLE_HOST
          - INVALID_PORT
          - SSH_SESSION_TIMEOUT
          - ALGORITHM_NEGOTIATION_ERROR
          - SOCKET_CONNECTION_ERROR
          - CONNECTION_ERROR
          - COULD_NOT_PROCESS_ERROR
          - SOCKET_CONNECTION_TIMEOUT
          - WINRM_COMMAND_EXECUTION_TIMEOUT
          - CONNECTION_TIMEOUT
          - SSH_CONNECTION_ERROR
          - USER_GROUP_ERROR
          - INVALID_EXECUTION_ID
          - ERROR_IN_GETTING_CHANNEL_STREAMS
          - UNEXPECTED
          - UNKNOWN_ERROR
          - UNKNOWN_EXECUTOR_TYPE_ERROR
          - DUPLICATE_STATE_NAMES
          - TRANSITION_NOT_LINKED
          - TRANSITION_TO_INCORRECT_STATE
          - TRANSITION_TYPE_NULL
          - STATES_WITH_DUP_TRANSITIONS
          - BARRIERS_NOT_RUNNING_CONCURRENTLY
          - NON_FORK_STATES
          - NON_REPEAT_STATES
          - INITIAL_STATE_NOT_DEFINED
          - FILE_INTEGRITY_CHECK_FAILED
          - INVALID_URL
          - FILE_DOWNLOAD_FAILED
          - PLATFORM_SOFTWARE_DELETE_ERROR
          - INVALID_CSV_FILE
          - INVALID_REQUEST
          - SCHEMA_VALIDATION_FAILED
          - FILTER_CREATION_ERROR
          - INVALID_YAML_ERROR
          - PLAN_CREATION_ERROR
          - INVALID_INFRA_STATE
          - PIPELINE_ALREADY_TRIGGERED
          - NON_EXISTING_PIPELINE
          - DUPLICATE_COMMAND_NAMES
          - INVALID_PIPELINE
          - COMMAND_DOES_NOT_EXIST
          - DUPLICATE_ARTIFACTSTREAM_NAMES
          - DUPLICATE_HOST_NAMES
          - STATE_NOT_FOR_TYPE
          - STATE_MACHINE_ISSUE
          - STATE_DISCONTINUE_FAILED
          - STATE_PAUSE_FAILED
          - PAUSE_ALL_ALREADY
          - RESUME_ALL_ALREADY
          - ROLLBACK_ALREADY
          - ABORT_ALL_ALREADY
          - EXPIRE_ALL_ALREADY
          - RETRY_FAILED
          - UNKNOWN_ARTIFACT_TYPE
          - UNKNOWN_STAGE_ELEMENT_WRAPPER_TYPE
          - INIT_TIMEOUT
          - LICENSE_EXPIRED
          - NOT_LICENSED
          - REQUEST_TIMEOUT
          - SCM_REQUEST_TIMEOUT
          - WORKFLOW_ALREADY_TRIGGERED
          - JENKINS_ERROR
          - INVALID_ARTIFACT_SOURCE
          - INVALID_ARTIFACT_SERVER
          - INVALID_CLOUD_PROVIDER
          - UPDATE_NOT_ALLOWED
          - DELETE_NOT_ALLOWED
          - APPDYNAMICS_CONFIGURATION_ERROR
          - APM_CONFIGURATION_ERROR
          - SPLUNK_CONFIGURATION_ERROR
          - ELK_CONFIGURATION_ERROR
          - LOGZ_CONFIGURATION_ERROR
          - SUMO_CONFIGURATION_ERROR
          - INSTANA_CONFIGURATION_ERROR
          - APPDYNAMICS_ERROR
          - STACKDRIVER_ERROR
          - STACKDRIVER_CONFIGURATION_ERROR
          - NEWRELIC_CONFIGURATION_ERROR
          - NEWRELIC_ERROR
          - DYNA_TRACE_CONFIGURATION_ERROR
          - DYNA_TRACE_ERROR
          - CLOUDWATCH_ERROR
          - CLOUDWATCH_CONFIGURATION_ERROR
          - PROMETHEUS_CONFIGURATION_ERROR
          - DATA_DOG_CONFIGURATION_ERROR
          - SERVICE_GUARD_CONFIGURATION_ERROR
          - ENCRYPTION_NOT_CONFIGURED
          - UNAVAILABLE_DELEGATES
          - WORKFLOW_EXECUTION_IN_PROGRESS
          - PIPELINE_EXECUTION_IN_PROGRESS
          - AWS_ACCESS_DENIED
          - AWS_CLUSTER_NOT_FOUND
          - AWS_SERVICE_NOT_FOUND
          - IMAGE_NOT_FOUND
          - ILLEGAL_ARGUMENT
          - IMAGE_TAG_NOT_FOUND
          - DELEGATE_NOT_AVAILABLE
          - INVALID_YAML_PAYLOAD
          - AUTHENTICATION_ERROR
          - AUTHORIZATION_ERROR
          - UNRECOGNIZED_YAML_FIELDS
          - COULD_NOT_MAP_BEFORE_YAML
          - MISSING_BEFORE_YAML
          - MISSING_YAML
          - NON_EMPTY_DELETIONS
          - GENERAL_YAML_ERROR
          - GENERAL_YAML_INFO
          - YAML_GIT_SYNC_ERROR
          - GIT_CONNECTION_ERROR
          - GIT_ERROR
          - ARTIFACT_SERVER_ERROR
          - ENCRYPT_DECRYPT_ERROR
          - SECRET_MANAGEMENT_ERROR
          - SECRET_NOT_FOUND
          - KMS_OPERATION_ERROR
          - GCP_KMS_OPERATION_ERROR
          - VAULT_OPERATION_ERROR
          - AWS_SECRETS_MANAGER_OPERATION_ERROR
          - AZURE_KEY_VAULT_OPERATION_ERROR
          - AZURE_KEY_VAULT_INTERRUPT_ERROR
          - UNSUPPORTED_OPERATION_EXCEPTION
          - FEATURE_UNAVAILABLE
          - GENERAL_ERROR
          - BASELINE_CONFIGURATION_ERROR
          - SAML_IDP_CONFIGURATION_NOT_AVAILABLE
          - INVALID_AUTHENTICATION_MECHANISM
          - INVALID_SAML_CONFIGURATION
          - INVALID_OAUTH_CONFIGURATION
          - INVALID_LDAP_CONFIGURATION
          - USER_GROUP_SYNC_FAILURE
          - USER_GROUP_ALREADY_EXIST
          - INVALID_TWO_FACTOR_AUTHENTICATION_CONFIGURATION
          - EXPLANATION
          - HINT
          - NOT_WHITELISTED_IP
          - INVALID_TOTP_TOKEN
          - EMAIL_FAILED
          - SSL_HANDSHAKE_FAILED
          - NO_APPS_ASSIGNED
          - INVALID_INFRA_CONFIGURATION
          - TEMPLATES_LINKED
          - USER_HAS_NO_PERMISSIONS
          - USER_NOT_AUTHORIZED
          - USER_ALREADY_PRESENT
          - EMAIL_ERROR
          - INVALID_USAGE_RESTRICTION
          - USAGE_RESTRICTION_ERROR
          - STATE_EXECUTION_INSTANCE_NOT_FOUND
          - DELEGATE_TASK_RETRY
          - KUBERNETES_API_TASK_EXCEPTION
          - KUBERNETES_TASK_EXCEPTION
          - KUBERNETES_YAML_ERROR
          - SAVE_FILE_INTO_AWS_STORAGE_FAILED
          - READ_FILE_FROM_AWS_STORAGE_FAILED
          - SAVE_FILE_INTO_GCP_STORAGE_FAILED
          - READ_FILE_FROM_GCP_STORAGE_FAILED
          - FILE_NOT_FOUND_ERROR
          - USAGE_LIMITS_EXCEEDED
          - EVENT_PUBLISH_FAILED
          - CUSTOM_APPROVAL_ERROR
          - JIRA_ERROR
          - EXPRESSION_EVALUATION_FAILED
          - KUBERNETES_VALUES_ERROR
          - KUBERNETES_CLUSTER_ERROR
          - INCORRECT_SIGN_IN_MECHANISM
          - OAUTH_LOGIN_FAILED
          - INVALID_TERRAFORM_TARGETS_REQUEST
          - TERRAFORM_EXECUTION_ERROR
          - FILE_READ_FAILED
          - FILE_SIZE_EXCEEDS_LIMIT
          - CLUSTER_NOT_FOUND
          - MARKETPLACE_TOKEN_NOT_FOUND
          - INVALID_MARKETPLACE_TOKEN
          - INVALID_TICKETING_SERVER
          - SERVI

# --- truncated at 32 KB (98 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/harness/refs/heads/main/openapi/harness-budgets-api-openapi.yml