{
  "$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-bill-scenario-commitment-modification-request-schema.json",
  "title": "BatchCreateBillScenarioCommitmentModificationRequest",
  "x-generated": "2026-11-11",
  "x-method": "derived",
  "x-generator": "derive-json-schema.py",
  "x-source": "openapi/amazon-billing-and-cost-management-bill-scenario-commitment-modification-api-openapi.yml#/components/schemas/BatchCreateBillScenarioCommitmentModificationRequest",
  "type": "object",
  "properties": {
    "billScenarioId": {
      "type": "string",
      "description": "The ID of the Bill Scenario for which you want to create the modeled commitment."
    },
    "commitmentModifications": {
      "type": "array",
      "items": {
        "$ref": "#/$defs/BatchCreateBillScenarioCommitmentModificationEntry"
      },
      "description": "List of commitments that you want to model in the Bill Scenario."
    },
    "clientToken": {
      "type": "string",
      "description": "A unique, case-sensitive identifier that you provide to ensure the idempotency of the request."
    }
  },
  "required": [
    "billScenarioId",
    "commitmentModifications"
  ],
  "$defs": {
    "AddReservedInstanceAction": {
      "type": "object",
      "properties": {
        "reservedInstancesOfferingId": {
          "type": "string",
          "description": "The ID of the Reserved Instance offering to add. For more information, see DescribeReservedInstancesOfferings."
        },
        "instanceCount": {
          "type": "integer",
          "description": "The number of instances to add for this Reserved Instance offering."
        }
      }
    },
    "AddSavingsPlanAction": {
      "type": "object",
      "properties": {
        "savingsPlanOfferingId": {
          "type": "string",
          "description": "The ID of the Savings Plan offering to add. For more information, see DescribeSavingsPlansOfferings."
        },
        "commitment": {
          "type": "number",
          "description": "The hourly commitment, in the same currency of the savingsPlanOfferingId. This is a value between 0.001 and 1 million. You cannot specify more than five digits after the decimal point."
        }
      }
    },
    "BatchCreateBillScenarioCommitmentModificationEntry": {
      "type": "object",
      "properties": {
        "key": {
          "type": "string",
          "description": "A unique identifier for this entry in the batch operation. This can be any valid string. This key is useful to identify errors associated with any commitment entry as any error is returned with this key."
        },
        "group": {
          "type": "string",
          "description": "An optional group identifier for the commitment modification."
        },
        "usageAccountId": {
          "type": "string",
          "description": "The Amazon Web Services account ID to which this commitment will be applied to."
        },
        "commitmentAction": {
          "$ref": "#/$defs/BillScenarioCommitmentModificationAction"
        }
      },
      "required": [
        "key",
        "usageAccountId",
        "commitmentAction"
      ]
    },
    "BillScenarioCommitmentModificationAction": {
      "type": "object",
      "properties": {
        "addReservedInstanceAction": {
          "$ref": "#/$defs/AddReservedInstanceAction"
        },
        "addSavingsPlanAction": {
          "$ref": "#/$defs/AddSavingsPlanAction"
        },
        "negateReservedInstanceAction": {
          "$ref": "#/$defs/NegateReservedInstanceAction"
        },
        "negateSavingsPlanAction": {
          "$ref": "#/$defs/NegateSavingsPlanAction"
        }
      },
      "description": "Exactly one member is set."
    },
    "NegateReservedInstanceAction": {
      "type": "object",
      "properties": {
        "reservedInstancesId": {
          "type": "string",
          "description": "The ID of the Reserved Instance to remove."
        }
      }
    },
    "NegateSavingsPlanAction": {
      "type": "object",
      "properties": {
        "savingsPlanId": {
          "type": "string",
          "description": "The ID of the Savings Plan to remove."
        }
      }
    }
  }
}