@lap v0.3
# Machine-readable API spec. Each @endpoint block is one API call.
@api AWS Budgets
@version 2016-10-20
@auth AWS SigV4
@endpoints 26
@hint download_for_search
@toc root(26)

@endpoint POST /
@required {AccountId: str, Budget: Budget}
@optional {NotificationsWithSubscribers: [NotificationWithSubscribers], ResourceTags: [ResourceTag]}

@endpoint POST /
@required {AccountId: str, BudgetName: str, NotificationType: str, ActionType: str, ActionThreshold: ActionThreshold, Definition: Definition, ExecutionRoleArn: str, ApprovalModel: str, Subscribers: [Subscriber]}
@optional {ResourceTags: [ResourceTag]}
@returns(200) {AccountId: str, BudgetName: str, ActionId: str}

@endpoint POST /
@required {AccountId: str, BudgetName: str, Notification: Notification, Subscribers: [Subscriber]}

@endpoint POST /
@required {AccountId: str, BudgetName: str, Notification: Notification, Subscriber: Subscriber}

@endpoint POST /
@required {AccountId: str, BudgetName: str}

@endpoint POST /
@required {AccountId: str, BudgetName: str, ActionId: str}
@returns(200) {AccountId: str, BudgetName: str, Action: Action{ActionId: str, BudgetName: str, NotificationType: str, ActionType: str, ActionThreshold: ActionThreshold{ActionThresholdValue: num(f64), ActionThresholdType: str}, Definition: Definition{IamActionDefinition: IamActionDefinition?{PolicyArn: str, Roles: [str]?, Groups: [str]?, Users: [str]?}, ScpActionDefinition: ScpActionDefinition?{PolicyId: str, TargetIds: [str]}, SsmActionDefinition: SsmActionDefinition?{ActionSubType: str, Region: str, InstanceIds: [str]}}, ExecutionRoleArn: str, ApprovalModel: str, Status: str, Subscribers: [Subscriber]}}

@endpoint POST /
@required {AccountId: str, BudgetName: str, Notification: Notification}

@endpoint POST /
@required {AccountId: str, BudgetName: str, Notification: Notification, Subscriber: Subscriber}

@endpoint POST /
@required {AccountId: str, BudgetName: str}
@returns(200) {Budget: Budget?{BudgetName: str, BudgetLimit: Spend?{Amount: str, Unit: str}, PlannedBudgetLimits: map<str,Spend>?, CostFilters: map<str,[str]>?, CostTypes: CostTypes?{IncludeTax: bool?, IncludeSubscription: bool?, UseBlended: bool?, IncludeRefund: bool?, IncludeCredit: bool?, IncludeUpfront: bool?, IncludeRecurring: bool?, IncludeOtherSubscription: bool?, IncludeSupport: bool?, IncludeDiscount: bool?, UseAmortized: bool?}, TimeUnit: str, TimePeriod: TimePeriod?{Start: str(timestamp)?, End: str(timestamp)?}, CalculatedSpend: CalculatedSpend?{ActualSpend: Spend{Amount: str, Unit: str}, ForecastedSpend: Spend?{Amount: str, Unit: str}}, BudgetType: str, LastUpdatedTime: str(timestamp)?, AutoAdjustData: AutoAdjustData?{AutoAdjustType: str, HistoricalOptions: HistoricalOptions?{BudgetAdjustmentPeriod: int, LookBackAvailablePeriods: int?}, LastAutoAdjustTime: str(timestamp)?}}}

@endpoint POST /
@required {AccountId: str, BudgetName: str, ActionId: str}
@returns(200) {AccountId: str, BudgetName: str, Action: Action{ActionId: str, BudgetName: str, NotificationType: str, ActionType: str, ActionThreshold: ActionThreshold{ActionThresholdValue: num(f64), ActionThresholdType: str}, Definition: Definition{IamActionDefinition: IamActionDefinition?{PolicyArn: str, Roles: [str]?, Groups: [str]?, Users: [str]?}, ScpActionDefinition: ScpActionDefinition?{PolicyId: str, TargetIds: [str]}, SsmActionDefinition: SsmActionDefinition?{ActionSubType: str, Region: str, InstanceIds: [str]}}, ExecutionRoleArn: str, ApprovalModel: str, Status: str, Subscribers: [Subscriber]}}

@endpoint POST /
@required {AccountId: str, BudgetName: str, ActionId: str}
@optional {TimePeriod: TimePeriod, MaxResults: int, NextToken: str}
@returns(200) {ActionHistories: [ActionHistory], NextToken: str?}

@endpoint POST /
@required {AccountId: str}
@optional {MaxResults: int, NextToken: str}
@returns(200) {Actions: [Action], NextToken: str?}

@endpoint POST /
@required {AccountId: str, BudgetName: str}
@optional {MaxResults: int, NextToken: str}
@returns(200) {Actions: [Action], NextToken: str?}

@endpoint POST /
@required {AccountId: str}
@optional {MaxResults: int, NextToken: str}
@returns(200) {BudgetNotificationsForAccount: [BudgetNotificationsForAccount]?, NextToken: str?}

@endpoint POST /
@required {AccountId: str, BudgetName: str}
@optional {TimePeriod: TimePeriod, MaxResults: int, NextToken: str}
@returns(200) {BudgetPerformanceHistory: BudgetPerformanceHistory?{BudgetName: str?, BudgetType: str?, CostFilters: map<str,[str]>?, CostTypes: CostTypes?{IncludeTax: bool?, IncludeSubscription: bool?, UseBlended: bool?, IncludeRefund: bool?, IncludeCredit: bool?, IncludeUpfront: bool?, IncludeRecurring: bool?, IncludeOtherSubscription: bool?, IncludeSupport: bool?, IncludeDiscount: bool?, UseAmortized: bool?}, TimeUnit: str?, BudgetedAndActualAmountsList: [BudgetedAndActualAmounts]?}, NextToken: str?}

@endpoint POST /
@required {AccountId: str}
@optional {MaxResults: int, NextToken: str}
@returns(200) {Budgets: [Budget]?, NextToken: str?}

@endpoint POST /
@required {AccountId: str, BudgetName: str}
@optional {MaxResults: int, NextToken: str}
@returns(200) {Notifications: [Notification]?, NextToken: str?}

@endpoint POST /
@required {AccountId: str, BudgetName: str, Notification: Notification}
@optional {MaxResults: int, NextToken: str}
@returns(200) {Subscribers: [Subscriber]?, NextToken: str?}

@endpoint POST /
@required {AccountId: str, BudgetName: str, ActionId: str, ExecutionType: str}
@returns(200) {AccountId: str, BudgetName: str, ActionId: str, ExecutionType: str}

@endpoint POST /
@required {ResourceARN: str}
@returns(200) {ResourceTags: [ResourceTag]?}

@endpoint POST /
@required {ResourceARN: str, ResourceTags: [ResourceTag]}

@endpoint POST /
@required {ResourceARN: str, ResourceTagKeys: [str]}

@endpoint POST /
@required {AccountId: str, NewBudget: Budget}

@endpoint POST /
@required {AccountId: str, BudgetName: str, ActionId: str}
@optional {NotificationType: str, ActionThreshold: ActionThreshold, Definition: Definition, ExecutionRoleArn: str, ApprovalModel: str, Subscribers: [Subscriber]}
@returns(200) {AccountId: str, BudgetName: str, OldAction: Action{ActionId: str, BudgetName: str, NotificationType: str, ActionType: str, ActionThreshold: ActionThreshold{ActionThresholdValue: num(f64), ActionThresholdType: str}, Definition: Definition{IamActionDefinition: IamActionDefinition?{PolicyArn: str, Roles: [str]?, Groups: [str]?, Users: [str]?}, ScpActionDefinition: ScpActionDefinition?{PolicyId: str, TargetIds: [str]}, SsmActionDefinition: SsmActionDefinition?{ActionSubType: str, Region: str, InstanceIds: [str]}}, ExecutionRoleArn: str, ApprovalModel: str, Status: str, Subscribers: [Subscriber]}, NewAction: Action{ActionId: str, BudgetName: str, NotificationType: str, ActionType: str, ActionThreshold: ActionThreshold{ActionThresholdValue: num(f64), ActionThresholdType: str}, Definition: Definition{IamActionDefinition: IamActionDefinition?{PolicyArn: str, Roles: [str]?, Groups: [str]?, Users: [str]?}, ScpActionDefinition: ScpActionDefinition?{PolicyId: str, TargetIds: [str]}, SsmActionDefinition: SsmActionDefinition?{ActionSubType: str, Region: str, InstanceIds: [str]}}, ExecutionRoleArn: str, ApprovalModel: str, Status: str, Subscribers: [Subscriber]}}

@endpoint POST /
@required {AccountId: str, BudgetName: str, OldNotification: Notification, NewNotification: Notification}

@endpoint POST /
@required {AccountId: str, BudgetName: str, Notification: Notification, OldSubscriber: Subscriber, NewSubscriber: Subscriber}

@end
