{
  "$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-create-notification-request-schema.json",
  "title": "CreateNotificationRequest",
  "x-generated": "2026-11-11",
  "x-method": "derived",
  "x-generator": "derive-json-schema.py",
  "x-source": "openapi/amazon-billing-and-cost-management-notifications-api-openapi.yml#/components/schemas/CreateNotificationRequest",
  "type": "object",
  "properties": {
    "AccountId": {
      "type": "string",
      "description": "The accountId that is associated with the budget that you want to create a notification for."
    },
    "BudgetName": {
      "type": "string",
      "description": "The name of the budget that you want Amazon Web Services to notify you about. Budget names must be unique within an account."
    },
    "Notification": {
      "$ref": "#/$defs/Notification"
    },
    "Subscribers": {
      "type": "array",
      "items": {
        "$ref": "#/$defs/BudgetsSubscriber"
      },
      "description": "A list of subscribers that you want to associate with the notification. Each notification can have one SNS subscriber and up to 10 email subscribers."
    }
  },
  "required": [
    "AccountId",
    "BudgetName",
    "Notification",
    "Subscribers"
  ],
  "$defs": {
    "BudgetsSubscriber": {
      "type": "object",
      "properties": {
        "SubscriptionType": {
          "type": "string",
          "enum": [
            "SNS",
            "EMAIL"
          ],
          "description": "The type of notification that Amazon Web Services sends to a subscriber."
        },
        "Address": {
          "type": "string",
          "description": "The address that Amazon Web Services sends budget notifications to, either an SNS topic or an email. When you create a subscriber, the value of Address can't contain line breaks."
        }
      },
      "required": [
        "SubscriptionType",
        "Address"
      ]
    },
    "Notification": {
      "type": "object",
      "properties": {
        "NotificationType": {
          "type": "string",
          "enum": [
            "ACTUAL",
            "FORECASTED"
          ],
          "description": "Specifies whether the notification is for how much you have spent (ACTUAL) or for how much that you're forecasted to spend (FORECASTED)."
        },
        "ComparisonOperator": {
          "type": "string",
          "enum": [
            "GREATER_THAN",
            "LESS_THAN",
            "EQUAL_TO"
          ],
          "description": "The comparison that's used for this notification."
        },
        "Threshold": {
          "type": "number",
          "description": "The threshold that's associated with a notification. Thresholds are always a percentage, and many customers find value being alerted between 50% - 200% of the budgeted amount. The maximum limit for your threshold is 1,000,000% above the budgeted amount."
        },
        "ThresholdType": {
          "type": "string",
          "enum": [
            "PERCENTAGE",
            "ABSOLUTE_VALUE"
          ],
          "description": "The type of threshold for a notification. For ABSOLUTE_VALUE thresholds, Amazon Web Services notifies you when you go over or are forecasted to go over your total cost threshold. For PERCENTAGE thresholds, Amazon Web Services notifies you when you go over or are forecasted to go over a certain percentage of your forecasted spend. For example, if you have a budget for 200 dollars and you have a PERCENTAGE threshold of 80%, Amazon Web Services notifies you when you go over 160 dollars."
        },
        "NotificationState": {
          "type": "string",
          "enum": [
            "OK",
            "ALARM"
          ],
          "description": "Specifies whether this notification is in alarm. If a budget notification is in the ALARM state, you passed the set threshold for the budget."
        }
      },
      "required": [
        "NotificationType",
        "ComparisonOperator",
        "Threshold"
      ]
    }
  }
}