{
  "version": "2.0",
  "service": "All public APIs for AWS Budgets",
  "operations": {
    "CreateBudget": "Create a new budget",
    "CreateNotification": "Create a new Notification with subscribers for a budget",
    "CreateSubscriber": "Create a new Subscriber for a notification",
    "DeleteBudget": "Delete a budget and related notifications",
    "DeleteNotification": "Delete a notification and related subscribers",
    "DeleteSubscriber": "Delete a Subscriber for a notification",
    "DescribeBudget": "Get a single budget",
    "DescribeBudgets": "Get all budgets for an account",
    "DescribeNotificationsForBudget": "Get notifications of a budget",
    "DescribeSubscribersForNotification": "Get subscribers of a notification",
    "UpdateBudget": "Update the information of a budget already created",
    "UpdateNotification": "Update the information about a notification already created",
    "UpdateSubscriber": "Update a subscriber"
  },
  "shapes": {
    "AccountId": {
      "base": "Account Id of the customer. It should be a 12 digit number.",
      "refs": {
        "CreateBudgetRequest$AccountId": null,
        "CreateNotificationRequest$AccountId": null,
        "CreateSubscriberRequest$AccountId": null,
        "DeleteBudgetRequest$AccountId": null,
        "DeleteNotificationRequest$AccountId": null,
        "DeleteSubscriberRequest$AccountId": null,
        "DescribeBudgetRequest$AccountId": null,
        "DescribeBudgetsRequest$AccountId": null,
        "DescribeNotificationsForBudgetRequest$AccountId": null,
        "DescribeSubscribersForNotificationRequest$AccountId": null,
        "UpdateBudgetRequest$AccountId": null,
        "UpdateNotificationRequest$AccountId": null,
        "UpdateSubscriberRequest$AccountId": null
      }
    },
    "Budget": {
      "base": "AWS Budget model",
      "refs": {
        "Budgets$member": null,
        "CreateBudgetRequest$Budget": null,
        "DescribeBudgetResponse$Budget": null,
        "UpdateBudgetRequest$NewBudget": null
      }
    },
    "BudgetName": {
      "base": "A string represents the budget name. No \":\" character is allowed.",
      "refs": {
        "Budget$BudgetName": null,
        "CreateNotificationRequest$BudgetName": null,
        "CreateSubscriberRequest$BudgetName": null,
        "DeleteBudgetRequest$BudgetName": null,
        "DeleteNotificationRequest$BudgetName": null,
        "DeleteSubscriberRequest$BudgetName": null,
        "DescribeBudgetRequest$BudgetName": null,
        "DescribeNotificationsForBudgetRequest$BudgetName": null,
        "DescribeSubscribersForNotificationRequest$BudgetName": null,
        "UpdateNotificationRequest$BudgetName": null,
        "UpdateSubscriberRequest$BudgetName": null
      }
    },
    "BudgetType": {
      "base": "The type of a budget. Can be COST or USAGE.",
      "refs": {
        "Budget$BudgetType": null
      }
    },
    "Budgets": {
      "base": "A list of budgets",
      "refs": {
        "DescribeBudgetsResponse$Budgets": null
      }
    },
    "CalculatedSpend": {
      "base": "A structure holds the actual and forecasted spend for a budget.",
      "refs": {
        "Budget$CalculatedSpend": null
      }
    },
    "ComparisonOperator": {
      "base": "The comparison operator of a notification. Currently we support less than, equal to and greater than.",
      "refs": {
        "Notification$ComparisonOperator": null
      }
    },
    "CostFilters": {
      "base": "A map represents the cost filters applied to the budget.",
      "refs": {
        "Budget$CostFilters": null
      }
    },
    "CostTypes": {
      "base": "This includes the options for getting the cost of a budget.",
      "refs": {
        "Budget$CostTypes": null
      }
    },
    "CreateBudgetRequest": {
      "base": "Request of CreateBudget",
      "refs": {
      }
    },
    "CreateBudgetResponse": {
      "base": "Response of CreateBudget",
      "refs": {
      }
    },
    "CreateNotificationRequest": {
      "base": "Request of CreateNotification",
      "refs": {
      }
    },
    "CreateNotificationResponse": {
      "base": "Response of CreateNotification",
      "refs": {
      }
    },
    "CreateSubscriberRequest": {
      "base": "Request of CreateSubscriber",
      "refs": {
      }
    },
    "CreateSubscriberResponse": {
      "base": "Response of CreateSubscriber",
      "refs": {
      }
    },
    "CreationLimitExceededException": {
      "base": "The exception is thrown when customer tries to create a record (e.g. budget), but the number this record already exceeds the limitation.",
      "refs": {
      }
    },
    "DeleteBudgetRequest": {
      "base": "Request of DeleteBudget",
      "refs": {
      }
    },
    "DeleteBudgetResponse": {
      "base": "Response of DeleteBudget",
      "refs": {
      }
    },
    "DeleteNotificationRequest": {
      "base": "Request of DeleteNotification",
      "refs": {
      }
    },
    "DeleteNotificationResponse": {
      "base": "Response of DeleteNotification",
      "refs": {
      }
    },
    "DeleteSubscriberRequest": {
      "base": "Request of DeleteSubscriber",
      "refs": {
      }
    },
    "DeleteSubscriberResponse": {
      "base": "Response of DeleteSubscriber",
      "refs": {
      }
    },
    "DescribeBudgetRequest": {
      "base": "Request of DescribeBudget",
      "refs": {
      }
    },
    "DescribeBudgetResponse": {
      "base": "Response of DescribeBudget",
      "refs": {
      }
    },
    "DescribeBudgetsRequest": {
      "base": "Request of DescribeBudgets",
      "refs": {
      }
    },
    "DescribeBudgetsResponse": {
      "base": "Response of DescribeBudgets",
      "refs": {
      }
    },
    "DescribeNotificationsForBudgetRequest": {
      "base": "Request of DescribeNotificationsForBudget",
      "refs": {
      }
    },
    "DescribeNotificationsForBudgetResponse": {
      "base": "Response of GetNotificationsForBudget",
      "refs": {
      }
    },
    "DescribeSubscribersForNotificationRequest": {
      "base": "Request of DescribeSubscribersForNotification",
      "refs": {
      }
    },
    "DescribeSubscribersForNotificationResponse": {
      "base": "Response of DescribeSubscribersForNotification",
      "refs": {
      }
    },
    "DimensionValues": {
      "base": null,
      "refs": {
        "CostFilters$value": null
      }
    },
    "DuplicateRecordException": {
      "base": "The exception is thrown when customer tries to create a record (e.g. budget) that already exists.",
      "refs": {
      }
    },
    "ExpiredNextTokenException": {
      "base": "This exception is thrown if the paging token is expired - past its TTL",
      "refs": {
      }
    },
    "GenericBoolean": {
      "base": "A generic boolean value.",
      "refs": {
        "CostTypes$IncludeTax": null,
        "CostTypes$IncludeSubscription": null,
        "CostTypes$UseBlended": null
      }
    },
    "GenericString": {
      "base": "A generic String.",
      "refs": {
        "CostFilters$key": null,
        "DescribeBudgetsRequest$NextToken": null,
        "DescribeBudgetsResponse$NextToken": null,
        "DescribeNotificationsForBudgetRequest$NextToken": null,
        "DescribeNotificationsForBudgetResponse$NextToken": null,
        "DescribeSubscribersForNotificationRequest$NextToken": null,
        "DescribeSubscribersForNotificationResponse$NextToken": null,
        "DimensionValues$member": null,
        "Spend$Unit": null,
        "Subscriber$Address": null
      }
    },
    "GenericTimestamp": {
      "base": "A generic timestamp. In Java it is transformed to a Date object.",
      "refs": {
        "TimePeriod$Start": null,
        "TimePeriod$End": null
      }
    },
    "InternalErrorException": {
      "base": "This exception is thrown on an unknown internal failure.",
      "refs": {
      }
    },
    "InvalidNextTokenException": {
      "base": "This exception is thrown if paging token signature didn't match the token, or the paging token isn't for this request",
      "refs": {
      }
    },
    "InvalidParameterException": {
      "base": "This exception is thrown if any request is given an invalid parameter. E.g., if a required Date field is null.",
      "refs": {
      }
    },
    "MaxResults": {
      "base": "An integer to represent how many entries should a pagianted response contains. Maxium is set to 100.",
      "refs": {
        "DescribeBudgetsRequest$MaxResults": null,
        "DescribeNotificationsForBudgetRequest$MaxResults": null,
        "DescribeSubscribersForNotificationRequest$MaxResults": null
      }
    },
    "NotFoundException": {
      "base": "This exception is thrown if a requested entity is not found. E.g., if a budget id doesn't exist for an account ID.",
      "refs": {
      }
    },
    "Notification": {
      "base": "Notification model. Each budget may contain multiple notifications with different settings.",
      "refs": {
        "CreateNotificationRequest$Notification": null,
        "CreateSubscriberRequest$Notification": null,
        "DeleteNotificationRequest$Notification": null,
        "DeleteSubscriberRequest$Notification": null,
        "DescribeSubscribersForNotificationRequest$Notification": null,
        "NotificationWithSubscribers$Notification": null,
        "Notifications$member": null,
        "UpdateNotificationRequest$OldNotification": null,
        "UpdateNotificationRequest$NewNotification": null,
        "UpdateSubscriberRequest$Notification": null
      }
    },
    "NotificationThreshold": {
      "base": "The threshold of the a notification. It should be a number between 0 and 100.",
      "refs": {
        "Notification$Threshold": null
      }
    },
    "NotificationType": {
      "base": "The type of a notification. It should be ACTUAL or FORECASTED.",
      "refs": {
        "Notification$NotificationType": null
      }
    },
    "NotificationWithSubscribers": {
      "base": "A structure to relate notification and a list of subscribers who belong to the notification.",
      "refs": {
        "NotificationWithSubscribersList$member": null
      }
    },
    "NotificationWithSubscribersList": {
      "base": "A list of Notifications, each with a list of subscribers.",
      "refs": {
        "CreateBudgetRequest$NotificationsWithSubscribers": null
      }
    },
    "Notifications": {
      "base": "A list of notifications.",
      "refs": {
        "DescribeNotificationsForBudgetResponse$Notifications": null
      }
    },
    "NumericValue": {
      "base": "A string to represent NumericValue.",
      "refs": {
        "Spend$Amount": null
      }
    },
    "Spend": {
      "base": "A structure represent either a cost spend or usage spend. Contains an amount and a unit.",
      "refs": {
        "Budget$BudgetLimit": null,
        "CalculatedSpend$ActualSpend": null,
        "CalculatedSpend$ForecastedSpend": null
      }
    },
    "Subscriber": {
      "base": "Subscriber model. Each notification may contain multiple subscribers with different addresses.",
      "refs": {
        "CreateSubscriberRequest$Subscriber": null,
        "DeleteSubscriberRequest$Subscriber": null,
        "Subscribers$member": null,
        "UpdateSubscriberRequest$OldSubscriber": null,
        "UpdateSubscriberRequest$NewSubscriber": null
      }
    },
    "Subscribers": {
      "base": "A list of subscribers.",
      "refs": {
        "CreateNotificationRequest$Subscribers": null,
        "DescribeSubscribersForNotificationResponse$Subscribers": null,
        "NotificationWithSubscribers$Subscribers": null
      }
    },
    "SubscriptionType": {
      "base": "The subscription type of the subscriber. It can be SMS or EMAIL.",
      "refs": {
        "Subscriber$SubscriptionType": null
      }
    },
    "TimePeriod": {
      "base": "A time period indicated the start date and end date of a budget.",
      "refs": {
        "Budget$TimePeriod": null
      }
    },
    "TimeUnit": {
      "base": "The time unit of the budget. e.g. weekly, monthly, etc.",
      "refs": {
        "Budget$TimeUnit": null
      }
    },
    "UpdateBudgetRequest": {
      "base": "Request of UpdateBudget",
      "refs": {
      }
    },
    "UpdateBudgetResponse": {
      "base": "Response of UpdateBudget",
      "refs": {
      }
    },
    "UpdateNotificationRequest": {
      "base": "Request of UpdateNotification",
      "refs": {
      }
    },
    "UpdateNotificationResponse": {
      "base": "Response of UpdateNotification",
      "refs": {
      }
    },
    "UpdateSubscriberRequest": {
      "base": "Request of UpdateSubscriber",
      "refs": {
      }
    },
    "UpdateSubscriberResponse": {
      "base": "Response of UpdateSubscriber",
      "refs": {
      }
    },
    "errorMessage": {
      "base": "The error message the exception carries.",
      "refs": {
        "CreationLimitExceededException$Message": null,
        "DuplicateRecordException$Message": null,
        "ExpiredNextTokenException$Message": null,
        "InternalErrorException$Message": null,
        "InvalidNextTokenException$Message": null,
        "InvalidParameterException$Message": null,
        "NotFoundException$Message": null
      }
    }
  }
}
