import * as core from "@terrascript/core"; export interface PolicyTypesArgs extends core.SchemaArgs { status: string | core.StringOut; type: string | core.StringOut; } export class PolicyTypes extends core.Schema { @core.attr(String, { computed: true }) public status!: string | core.StringOut; @core.attr(String, { computed: true }) public type!: string | core.StringOut; } export interface RootsArgs extends core.SchemaArgs { arn: string | core.StringOut; id: string | core.StringOut; name: string | core.StringOut; policyTypes: core.Array | core.ArrayOut; } export class Roots extends core.Schema { @core.attr(String, { computed: true }) public arn!: string | core.StringOut; @core.attr(String, { computed: true }) public id!: string | core.StringOut; @core.attr(String, { computed: true }) public name!: string | core.StringOut; @core.attr(PolicyTypes, { computed: true, kind: "array" }) public policyTypes!: core.Array | core.ArrayOut; } export interface AccountsArgs extends core.SchemaArgs { arn: string | core.StringOut; email: string | core.StringOut; id: string | core.StringOut; name: string | core.StringOut; status: string | core.StringOut; } export class Accounts extends core.Schema { @core.attr(String, { computed: true }) public arn!: string | core.StringOut; @core.attr(String, { computed: true }) public email!: string | core.StringOut; @core.attr(String, { computed: true }) public id!: string | core.StringOut; @core.attr(String, { computed: true }) public name!: string | core.StringOut; @core.attr(String, { computed: true }) public status!: string | core.StringOut; } export interface NonMasterAccountsArgs extends core.SchemaArgs { arn: string | core.StringOut; email: string | core.StringOut; id: string | core.StringOut; name: string | core.StringOut; status: string | core.StringOut; } export class NonMasterAccounts extends core.Schema { @core.attr(String, { computed: true }) public arn!: string | core.StringOut; @core.attr(String, { computed: true }) public email!: string | core.StringOut; @core.attr(String, { computed: true }) public id!: string | core.StringOut; @core.attr(String, { computed: true }) public name!: string | core.StringOut; @core.attr(String, { computed: true }) public status!: string | core.StringOut; } export interface OrganizationArgs extends core.ResourceArgs { /** * (Optional) List of AWS service principal names for which you want to enable integration with your or * ganization. This is typically in the form of a URL, such as service-abbreviation.amazonaws.com. Orga * nization must have `feature_set` set to `ALL`. For additional information, see the [AWS Organization * s User Guide](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_integrate_services.htm * l). */ awsServiceAccessPrincipals?: | core.Array | core.ArrayOut; /** * (Optional) List of Organizations policy types to enable in the Organization Root. Organization must * have `feature_set` set to `ALL`. For additional information about valid policy types (e.g., `AISERVI * CES_OPT_OUT_POLICY`, `BACKUP_POLICY`, `SERVICE_CONTROL_POLICY`, and `TAG_POLICY`), see the [AWS Orga * nizations API Reference](https://docs.aws.amazon.com/organizations/latest/APIReference/API_EnablePol * icyType.html). */ enabledPolicyTypes?: core.Array | core.ArrayOut; /** * (Optional) Specify "ALL" (default) or "CONSOLIDATED_BILLING". */ featureSet?: string | core.StringOut; } export class Organization extends core.Resource { /** * List of organization accounts including the master account. For a list excluding the master account, * see the `non_master_accounts` attribute. All elements have these attributes: */ @core.attr(Accounts, { computed: true, kind: "array" }) public accounts!: core.Array | core.ArrayOut; /** * ARN of the account */ @core.attr(String, { computed: true }) public arn!: string | core.StringOut; /** * (Optional) List of AWS service principal names for which you want to enable integration with your or * ganization. This is typically in the form of a URL, such as service-abbreviation.amazonaws.com. Orga * nization must have `feature_set` set to `ALL`. For additional information, see the [AWS Organization * s User Guide](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_integrate_services.htm * l). */ @core.attr(String, { kind: "array" }) public awsServiceAccessPrincipals?: | core.Array | core.ArrayOut; /** * (Optional) List of Organizations policy types to enable in the Organization Root. Organization must * have `feature_set` set to `ALL`. For additional information about valid policy types (e.g., `AISERVI * CES_OPT_OUT_POLICY`, `BACKUP_POLICY`, `SERVICE_CONTROL_POLICY`, and `TAG_POLICY`), see the [AWS Orga * nizations API Reference](https://docs.aws.amazon.com/organizations/latest/APIReference/API_EnablePol * icyType.html). */ @core.attr(String, { kind: "array" }) public enabledPolicyTypes?: | core.Array | core.ArrayOut; /** * (Optional) Specify "ALL" (default) or "CONSOLIDATED_BILLING". */ @core.attr(String) public featureSet?: string | core.StringOut; /** * Identifier of the account */ @core.attr(String, { computed: true }) public id!: string | core.StringOut; /** * ARN of the master account */ @core.attr(String, { computed: true }) public masterAccountArn!: string | core.StringOut; /** * Email address of the master account */ @core.attr(String, { computed: true }) public masterAccountEmail!: string | core.StringOut; /** * Identifier of the master account */ @core.attr(String, { computed: true }) public masterAccountId!: string | core.StringOut; /** * List of organization accounts excluding the master account. For a list including the master account, * see the `accounts` attribute. All elements have these attributes: */ @core.attr(NonMasterAccounts, { computed: true, kind: "array" }) public nonMasterAccounts!: | core.Array | core.ArrayOut; /** * List of organization roots. All elements have these attributes: */ @core.attr(Roots, { computed: true, kind: "array" }) public roots!: core.Array | core.ArrayOut; constructor(name: string, args?: OrganizationArgs) { super(name, "aws_organizations_organization", args); } public override getNamespace(): string { return "aws_organizations"; } }