{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://raw.githubusercontent.com/api-evangelist/harness/main/json-schema/harness-manage-budget-alerts-request-schema.json",
  "title": "ManageBudgetAlertsRequest",
  "x-generated": "2026-10-04",
  "x-method": "derived",
  "x-generator": "derive-json-schema.py",
  "x-source": "openapi/harness-budgets-api-openapi.yml#/components/schemas/ManageBudgetAlertsRequest",
  "required": [
    "action",
    "budgetIds"
  ],
  "type": "object",
  "properties": {
    "budgetIds": {
      "type": "array",
      "description": "List of budget IDs to perform action on.",
      "items": {
        "type": "string",
        "description": "List of budget IDs to perform action on."
      }
    },
    "action": {
      "type": "string",
      "description": "Action to perform on the budgets.",
      "enum": [
        "DELETE_ALL_ALERTS",
        "ADD_ALERTS",
        "ADD_RECIPIENTS",
        "REMOVE_RECIPIENTS"
      ]
    },
    "emailRecipients": {
      "type": "array",
      "description": "List of email recipients. Required for ADD_RECIPIENTS or REMOVE_RECIPIENTS.",
      "items": {
        "type": "string",
        "description": "List of email recipients. Required for ADD_RECIPIENTS or REMOVE_RECIPIENTS."
      }
    },
    "slackRecipients": {
      "type": "array",
      "description": "List of Slack recipients. Required for ADD_RECIPIENTS or REMOVE_RECIPIENTS.",
      "items": {
        "type": "string",
        "description": "List of Slack recipients. Required for ADD_RECIPIENTS or REMOVE_RECIPIENTS."
      }
    },
    "alertThresholds": {
      "type": "array",
      "description": "List of alert thresholds. Required for ADD_ALERTS.",
      "items": {
        "$ref": "#/$defs/AlertThreshold"
      }
    }
  },
  "$defs": {
    "AlertThreshold": {
      "type": "object",
      "properties": {
        "percentage": {
          "type": "number",
          "format": "double"
        },
        "basedOn": {
          "type": "string",
          "description": "Whether the alert is based on Actual cost or next 30 days Forecasted Cost",
          "enum": [
            "ACTUAL_COST",
            "FORECASTED_COST",
            "PARTIAL_COST",
            "YEARLY_ACTUAL_COST",
            "YEARLY_FORECASTED_COST"
          ]
        },
        "emailAddresses": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "userGroupIds": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "slackWebhooks": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "alertsSent": {
          "type": "integer",
          "format": "int32"
        },
        "crossedAt": {
          "type": "integer",
          "format": "int64"
        }
      },
      "description": "A description of a single Alert"
    }
  }
}