{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://raw.githubusercontent.com/api-evangelist/harness/main/json-schema/harness-create-cost-bucket-budgets-request-schema.json",
  "title": "CreateCostBucketBudgetsRequest",
  "x-generated": "2026-10-04",
  "x-method": "derived",
  "x-generator": "derive-json-schema.py",
  "x-source": "openapi/harness-budgets-api-openapi.yml#/components/schemas/CreateCostBucketBudgetsRequest",
  "required": [
    "costBucketIds",
    "costCategoryId",
    "period",
    "type"
  ],
  "type": "object",
  "properties": {
    "costCategoryId": {
      "type": "string"
    },
    "costBucketIds": {
      "maxItems": 20,
      "minItems": 1,
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "period": {
      "type": "string",
      "enum": [
        "DAILY",
        "WEEKLY",
        "MONTHLY",
        "QUARTERLY",
        "YEARLY"
      ]
    },
    "type": {
      "type": "string",
      "description": "Whether the Budget is based on a specified amount or based on previous month's actual spend",
      "enum": [
        "SPECIFIED_AMOUNT",
        "PREVIOUS_MONTH_SPEND",
        "PREVIOUS_PERIOD_SPEND"
      ]
    },
    "budgetAmount": {
      "type": "number",
      "format": "double"
    },
    "growthRate": {
      "type": "number",
      "format": "double"
    },
    "startTime": {
      "type": "integer",
      "format": "int64"
    },
    "alertThresholds": {
      "type": "array",
      "items": {
        "$ref": "#/$defs/AlertThreshold"
      }
    },
    "budgetMonthlyBreakdown": {
      "$ref": "#/$defs/BudgetMonthlyBreakdown"
    },
    "namePrefix": {
      "type": "string"
    },
    "folderId": {
      "type": "string"
    },
    "disableCurrencyWarning": {
      "type": "boolean"
    }
  },
  "$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"
    },
    "BudgetMonthlyBreakdown": {
      "type": "object",
      "properties": {
        "budgetBreakdown": {
          "type": "string",
          "description": "Whether the Yearly budget breakdown is yearly or monthly",
          "enum": [
            "YEARLY",
            "MONTHLY"
          ]
        },
        "budgetMonthlyAmount": {
          "type": "array",
          "description": "Budgeted monthly amount for yearly budget",
          "items": {
            "$ref": "#/$defs/ValueDataPoint"
          }
        },
        "actualMonthlyCost": {
          "type": "array",
          "description": "Actual monthly cost for yearly budget",
          "items": {
            "type": "number",
            "description": "Actual monthly cost for yearly budget",
            "format": "double"
          }
        },
        "forecastMonthlyCost": {
          "type": "array",
          "description": "Forecasted monthly cost for yearly budget",
          "items": {
            "type": "number",
            "description": "Forecasted monthly cost for yearly budget",
            "format": "double"
          }
        },
        "yearlyLastPeriodCost": {
          "type": "array",
          "description": "Yearly monthly cost for last year budget",
          "items": {
            "type": "number",
            "description": "Yearly monthly cost for last year budget",
            "format": "double"
          }
        },
        "forecastCostConfigured": {
          "type": "boolean",
          "description": "Indicates whether forecast cost has been ingested by the user"
        }
      },
      "description": "The budget monthly breakdown of a Yearly Budget"
    },
    "ValueDataPoint": {
      "type": "object",
      "properties": {
        "time": {
          "type": "integer",
          "format": "int64"
        },
        "value": {
          "type": "number",
          "format": "double"
        }
      }
    }
  }
}