import * as core from "@terrascript/core"; export interface ActionThresholdArgs extends core.SchemaArgs { actionThresholdType: string | core.StringOut; actionThresholdValue: number | core.NumberOut; } export class ActionThreshold extends core.Schema { @core.attr(String) public actionThresholdType!: string | core.StringOut; @core.attr(Number) public actionThresholdValue!: number | core.NumberOut; } export interface SubscriberArgs extends core.SchemaArgs { address: string | core.StringOut; subscriptionType: string | core.StringOut; } export class Subscriber extends core.Schema { @core.attr(String) public address!: string | core.StringOut; @core.attr(String) public subscriptionType!: string | core.StringOut; } export interface IamActionDefinitionArgs extends core.SchemaArgs { groups?: core.Array | core.ArrayOut; policyArn: string | core.StringOut; roles?: core.Array | core.ArrayOut; users?: core.Array | core.ArrayOut; } export class IamActionDefinition extends core.Schema { @core.attr(String, { kind: "array" }) public groups?: core.Array | core.ArrayOut; @core.attr(String) public policyArn!: string | core.StringOut; @core.attr(String, { kind: "array" }) public roles?: core.Array | core.ArrayOut; @core.attr(String, { kind: "array" }) public users?: core.Array | core.ArrayOut; } export interface SsmActionDefinitionArgs extends core.SchemaArgs { actionSubType: string | core.StringOut; instanceIds: core.Array | core.ArrayOut; region: string | core.StringOut; } export class SsmActionDefinition extends core.Schema { @core.attr(String) public actionSubType!: string | core.StringOut; @core.attr(String, { kind: "array" }) public instanceIds!: core.Array | core.ArrayOut; @core.attr(String) public region!: string | core.StringOut; } export interface ScpActionDefinitionArgs extends core.SchemaArgs { policyId: string | core.StringOut; targetIds: core.Array | core.ArrayOut; } export class ScpActionDefinition extends core.Schema { @core.attr(String) public policyId!: string | core.StringOut; @core.attr(String, { kind: "array" }) public targetIds!: core.Array | core.ArrayOut; } export interface DefinitionArgs extends core.SchemaArgs { iamActionDefinition?: IamActionDefinition; scpActionDefinition?: ScpActionDefinition; ssmActionDefinition?: SsmActionDefinition; } export class Definition extends core.Schema { @core.attr(IamActionDefinition) public iamActionDefinition?: IamActionDefinition; @core.attr(ScpActionDefinition) public scpActionDefinition?: ScpActionDefinition; @core.attr(SsmActionDefinition) public ssmActionDefinition?: SsmActionDefinition; } export interface BudgetActionArgs extends core.ResourceArgs { /** * (Optional) The ID of the target account for budget. Will use current user's account_id by default if * omitted. */ accountId?: string | core.StringOut; /** * (Required) The trigger threshold of the action. See [Action Threshold](#action-threshold). */ actionThreshold: ActionThreshold; /** * (Required) The type of action. This defines the type of tasks that can be carried out by this action * . This field also determines the format for definition. Valid values are `APPLY_IAM_POLICY`, `APPLY_ * SCP_POLICY`, and `RUN_SSM_DOCUMENTS`. */ actionType: string | core.StringOut; /** * (Required) This specifies if the action needs manual or automatic approval. Valid values are `AUTOMA * TIC` and `MANUAL`. */ approvalModel: string | core.StringOut; /** * (Required) The name of a budget. */ budgetName: string | core.StringOut; /** * (Required) Specifies all of the type-specific parameters. See [Definition](#definition). */ definition: Definition; /** * (Required) The role passed for action execution and reversion. Roles and actions must be in the same * account. */ executionRoleArn: string | core.StringOut; /** * (Required) The type of a notification. Valid values are `ACTUAL` or `FORECASTED`. */ notificationType: string | core.StringOut; /** * (Required) A list of subscribers. See [Subscriber](#subscriber). */ subscriber: core.Array | core.ArrayOut; } export class BudgetAction extends core.Resource { /** * (Optional) The ID of the target account for budget. Will use current user's account_id by default if * omitted. */ @core.attr(String, { computed: true }) public accountId?: string | core.StringOut; /** * The id of the budget action. */ @core.attr(String, { computed: true }) public actionId!: string | core.StringOut; /** * (Required) The trigger threshold of the action. See [Action Threshold](#action-threshold). */ @core.attr(ActionThreshold) public actionThreshold!: ActionThreshold; /** * (Required) The type of action. This defines the type of tasks that can be carried out by this action * . This field also determines the format for definition. Valid values are `APPLY_IAM_POLICY`, `APPLY_ * SCP_POLICY`, and `RUN_SSM_DOCUMENTS`. */ @core.attr(String) public actionType!: string | core.StringOut; /** * (Required) This specifies if the action needs manual or automatic approval. Valid values are `AUTOMA * TIC` and `MANUAL`. */ @core.attr(String) public approvalModel!: string | core.StringOut; /** * The ARN of the budget action. */ @core.attr(String, { computed: true }) public arn!: string | core.StringOut; /** * (Required) The name of a budget. */ @core.attr(String) public budgetName!: string | core.StringOut; /** * (Required) Specifies all of the type-specific parameters. See [Definition](#definition). */ @core.attr(Definition) public definition!: Definition; /** * (Required) The role passed for action execution and reversion. Roles and actions must be in the same * account. */ @core.attr(String) public executionRoleArn!: string | core.StringOut; /** * ID of resource. */ @core.attr(String, { computed: true }) public id!: string | core.StringOut; /** * (Required) The type of a notification. Valid values are `ACTUAL` or `FORECASTED`. */ @core.attr(String) public notificationType!: string | core.StringOut; /** * The status of the budget action. */ @core.attr(String, { computed: true }) public status!: string | core.StringOut; /** * (Required) A list of subscribers. See [Subscriber](#subscriber). */ @core.attr(Subscriber, { kind: "array" }) public subscriber!: core.Array | core.ArrayOut; constructor(name: string, args?: BudgetActionArgs) { super(name, "aws_budgets_budget_action", args); } public override getNamespace(): string { return "aws_budgets"; } }