{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://artifacts.apis.io/amazon-billing-and-cost-management/json-schema/amazon-billing-and-cost-management-batch-create-workload-estimate-usage-request-schema.json",
  "title": "BatchCreateWorkloadEstimateUsageRequest",
  "x-generated": "2026-11-11",
  "x-method": "derived",
  "x-generator": "derive-json-schema.py",
  "x-source": "openapi/amazon-billing-and-cost-management-workload-estimate-usage-api-openapi.yml#/components/schemas/BatchCreateWorkloadEstimateUsageRequest",
  "type": "object",
  "properties": {
    "workloadEstimateId": {
      "type": "string",
      "description": "The ID of the Workload estimate for which you want to create the modeled usage."
    },
    "usage": {
      "type": "array",
      "items": {
        "$ref": "#/$defs/BatchCreateWorkloadEstimateUsageEntry"
      },
      "description": "List of usage that you want to model in the Workload estimate."
    },
    "clientToken": {
      "type": "string",
      "description": "A unique, case-sensitive identifier that you provide to ensure the idempotency of the request."
    }
  },
  "required": [
    "workloadEstimateId",
    "usage"
  ],
  "$defs": {
    "BatchCreateWorkloadEstimateUsageEntry": {
      "type": "object",
      "properties": {
        "serviceCode": {
          "type": "string",
          "description": "The Amazon Web Services service code for this usage estimate."
        },
        "usageType": {
          "type": "string",
          "description": "The type of usage being estimated."
        },
        "operation": {
          "type": "string",
          "description": "The specific operation associated with this usage estimate."
        },
        "key": {
          "type": "string",
          "description": "A unique identifier for this entry in the batch operation."
        },
        "group": {
          "type": "string",
          "description": "An optional group identifier for the usage estimate."
        },
        "usageAccountId": {
          "type": "string",
          "description": "The Amazon Web Services account ID associated with this usage estimate."
        },
        "amount": {
          "type": "number",
          "description": "The estimated usage amount."
        },
        "historicalUsage": {
          "$ref": "#/$defs/HistoricalUsageEntity"
        }
      },
      "required": [
        "serviceCode",
        "usageType",
        "operation",
        "key",
        "usageAccountId",
        "amount"
      ]
    },
    "BcmPricingCalculatorExpression": {
      "type": "object",
      "properties": {
        "and": {
          "type": "array",
          "items": {
            "$ref": "#/$defs/BcmPricingCalculatorExpression"
          },
          "description": "A list of expressions to be combined with AND logic."
        },
        "or": {
          "type": "array",
          "items": {
            "$ref": "#/$defs/BcmPricingCalculatorExpression"
          },
          "description": "A list of expressions to be combined with OR logic."
        },
        "not": {
          "$ref": "#/$defs/BcmPricingCalculatorExpression"
        },
        "costCategories": {
          "$ref": "#/$defs/ExpressionFilter"
        },
        "dimensions": {
          "$ref": "#/$defs/ExpressionFilter"
        },
        "tags": {
          "$ref": "#/$defs/ExpressionFilter"
        }
      }
    },
    "BillInterval": {
      "type": "object",
      "properties": {
        "start": {
          "type": "string",
          "description": "The start date and time of the interval."
        },
        "end": {
          "type": "string",
          "description": "The end date and time of the interval."
        }
      }
    },
    "ExpressionFilter": {
      "type": "object",
      "properties": {
        "key": {
          "type": "string",
          "description": "The key or attribute to filter on."
        },
        "matchOptions": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The match options for the filter (e.g., equals, contains)."
        },
        "values": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The values to match against."
        }
      }
    },
    "HistoricalUsageEntity": {
      "type": "object",
      "properties": {
        "serviceCode": {
          "type": "string",
          "description": "The Amazon Web Services service code associated with the usage."
        },
        "usageType": {
          "type": "string",
          "description": "The type of usage."
        },
        "operation": {
          "type": "string",
          "description": "The specific operation associated with the usage."
        },
        "location": {
          "type": "string",
          "description": "The location associated with the usage."
        },
        "usageAccountId": {
          "type": "string",
          "description": "The Amazon Web Services account ID associated with the usage."
        },
        "billInterval": {
          "$ref": "#/$defs/BillInterval"
        },
        "filterExpression": {
          "$ref": "#/$defs/BcmPricingCalculatorExpression"
        }
      },
      "required": [
        "serviceCode",
        "usageType",
        "operation",
        "usageAccountId",
        "billInterval",
        "filterExpression"
      ]
    }
  }
}