// Code generated by smithy-go-codegen DO NOT EDIT.

package types

import (
	smithydocument "github.com/aws/smithy-go/document"
	"time"
)

// An object that contains details about when a principal in the reported
// Organizations entity last attempted to access an Amazon Web Services service. A
// principal can be an IAM user, an IAM role, or the Amazon Web Services account
// root user within the reported Organizations entity.
//
// This data type is a response element in the [GetOrganizationsAccessReport] operation.
//
// [GetOrganizationsAccessReport]: https://docs.aws.amazon.com/IAM/latest/APIReference/API_GetOrganizationsAccessReport.html
type AccessDetail struct {

	// The name of the service in which access was attempted.
	//
	// This member is required.
	ServiceName *string

	// The namespace of the service in which access was attempted.
	//
	// To learn the service namespace of a service, see [Actions, resources, and condition keys for Amazon Web Services services] in the Service Authorization
	// Reference. Choose the name of the service to view details for that service. In
	// the first paragraph, find the service prefix. For example, (service prefix: a4b)
	// . For more information about service namespaces, see [Amazon Web Services service namespaces]in the Amazon Web Services
	// General Reference.
	//
	// [Amazon Web Services service namespaces]: https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html#genref-aws-service-namespaces
	// [Actions, resources, and condition keys for Amazon Web Services services]: https://docs.aws.amazon.com/service-authorization/latest/reference/reference_policies_actions-resources-contextkeys.html
	//
	// This member is required.
	ServiceNamespace *string

	// The path of the Organizations entity (root, organizational unit, or account)
	// from which an authenticated principal last attempted to access the service.
	// Amazon Web Services does not report unauthenticated requests.
	//
	// This field is null if no principals (IAM users, IAM roles, or root user) in the
	// reported Organizations entity attempted to access the service within the [tracking period].
	//
	// [tracking period]: https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_access-advisor.html#service-last-accessed-reporting-period
	EntityPath *string

	// The date and time, in [ISO 8601 date-time format], when an authenticated principal most recently attempted
	// to access the service. Amazon Web Services does not report unauthenticated
	// requests.
	//
	// This field is null if no principals in the reported Organizations entity
	// attempted to access the service within the [tracking period].
	//
	// [tracking period]: https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_access-advisor.html#service-last-accessed-reporting-period
	// [ISO 8601 date-time format]: http://www.iso.org/iso/iso8601
	LastAuthenticatedTime *time.Time

	// The Region where the last service access attempt occurred.
	//
	// This field is null if no principals in the reported Organizations entity
	// attempted to access the service within the [tracking period].
	//
	// [tracking period]: https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_access-advisor.html#service-last-accessed-reporting-period
	Region *string

	// The number of accounts with authenticated principals (root user, IAM users, and
	// IAM roles) that attempted to access the service in the tracking period.
	TotalAuthenticatedEntities *int32

	noSmithyDocumentSerde
}

// Contains information about an Amazon Web Services access key.
//
// This data type is used as a response element in the [CreateAccessKey] and [ListAccessKeys] operations.
//
// The SecretAccessKey value is returned only in response to [CreateAccessKey]. You can get a
// secret access key only when you first create an access key; you cannot recover
// the secret access key later. If you lose a secret access key, you must create a
// new access key.
//
// [CreateAccessKey]: https://docs.aws.amazon.com/IAM/latest/APIReference/API_CreateAccessKey.html
// [ListAccessKeys]: https://docs.aws.amazon.com/IAM/latest/APIReference/API_ListAccessKeys.html
type AccessKey struct {

	// The ID for this access key.
	//
	// This member is required.
	AccessKeyId *string

	// The secret key used to sign requests.
	//
	// This member is required.
	SecretAccessKey *string

	// The status of the access key. Active means that the key is valid for API calls,
	// while Inactive means it is not.
	//
	// This member is required.
	Status StatusType

	// The name of the IAM user that the access key is associated with.
	//
	// This member is required.
	UserName *string

	// The date when the access key was created.
	CreateDate *time.Time

	noSmithyDocumentSerde
}

// Contains information about the last time an Amazon Web Services access key was
// used since IAM began tracking this information on April 22, 2015.
//
// This data type is used as a response element in the [GetAccessKeyLastUsed] operation.
//
// [GetAccessKeyLastUsed]: https://docs.aws.amazon.com/IAM/latest/APIReference/API_GetAccessKeyLastUsed.html
type AccessKeyLastUsed struct {

	// The Amazon Web Services Region where this access key was most recently used.
	// The value for this field is "N/A" in the following situations:
	//
	//   - The user does not have an access key.
	//
	//   - An access key exists but has not been used since IAM began tracking this
	//   information.
	//
	//   - There is no sign-in data associated with the user.
	//
	// For more information about Amazon Web Services Regions, see [Regions and endpoints] in the Amazon Web
	// Services General Reference.
	//
	// [Regions and endpoints]: https://docs.aws.amazon.com/general/latest/gr/rande.html
	//
	// This member is required.
	Region *string

	// The name of the Amazon Web Services service with which this access key was most
	// recently used. The value of this field is "N/A" in the following situations:
	//
	//   - The user does not have an access key.
	//
	//   - An access key exists but has not been used since IAM started tracking this
	//   information.
	//
	//   - There is no sign-in data associated with the user.
	//
	// This member is required.
	ServiceName *string

	// The date and time, in [ISO 8601 date-time format], when the access key was most recently used. This field
	// is null in the following situations:
	//
	//   - The user does not have an access key.
	//
	//   - An access key exists but has not been used since IAM began tracking this
	//   information.
	//
	//   - There is no sign-in data associated with the user.
	//
	// [ISO 8601 date-time format]: http://www.iso.org/iso/iso8601
	LastUsedDate *time.Time

	noSmithyDocumentSerde
}

// Contains information about an Amazon Web Services access key, without its
// secret key.
//
// This data type is used as a response element in the [ListAccessKeys] operation.
//
// [ListAccessKeys]: https://docs.aws.amazon.com/IAM/latest/APIReference/API_ListAccessKeys.html
type AccessKeyMetadata struct {

	// The ID for this access key.
	AccessKeyId *string

	// The date when the access key was created.
	CreateDate *time.Time

	// The status of the access key. Active means that the key is valid for API calls;
	// Inactive means it is not.
	Status StatusType

	// The name of the IAM user that the key is associated with.
	UserName *string

	noSmithyDocumentSerde
}

// Contains information about an attached permissions boundary.
//
// An attached permissions boundary is a managed policy that has been attached to
// a user or role to set the permissions boundary.
//
// For more information about permissions boundaries, see [Permissions boundaries for IAM identities] in the IAM User Guide.
//
// [Permissions boundaries for IAM identities]: https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_boundaries.html
type AttachedPermissionsBoundary struct {

	//  The ARN of the policy used to set the permissions boundary for the user or
	// role.
	PermissionsBoundaryArn *string

	//  The permissions boundary usage type that indicates what type of IAM resource
	// is used as the permissions boundary for an entity. This data type can only have
	// a value of Policy .
	PermissionsBoundaryType PermissionsBoundaryAttachmentType

	noSmithyDocumentSerde
}

// Contains information about an attached policy.
//
// An attached policy is a managed policy that has been attached to a user, group,
// or role. This data type is used as a response element in the [ListAttachedGroupPolicies], [ListAttachedRolePolicies], [ListAttachedUserPolicies], and [GetAccountAuthorizationDetails]
// operations.
//
// For more information about managed policies, refer to [Managed policies and inline policies] in the IAM User Guide.
//
// [ListAttachedUserPolicies]: https://docs.aws.amazon.com/IAM/latest/APIReference/API_ListAttachedUserPolicies.html
// [ListAttachedGroupPolicies]: https://docs.aws.amazon.com/IAM/latest/APIReference/API_ListAttachedGroupPolicies.html
// [ListAttachedRolePolicies]: https://docs.aws.amazon.com/IAM/latest/APIReference/API_ListAttachedRolePolicies.html
// [GetAccountAuthorizationDetails]: https://docs.aws.amazon.com/IAM/latest/APIReference/API_GetAccountAuthorizationDetails.html
// [Managed policies and inline policies]: https://docs.aws.amazon.com/IAM/latest/UserGuide/policies-managed-vs-inline.html
type AttachedPolicy struct {

	// The Amazon Resource Name (ARN). ARNs are unique identifiers for Amazon Web
	// Services resources.
	//
	// For more information about ARNs, go to [Amazon Resource Names (ARNs)] in the Amazon Web Services General
	// Reference.
	//
	// [Amazon Resource Names (ARNs)]: https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html
	PolicyArn *string

	// The friendly name of the attached policy.
	PolicyName *string

	noSmithyDocumentSerde
}

// Contains information about a condition context key. It includes the name of the
// key and specifies the value (or values, if the context key supports multiple
// values) to use in the simulation. This information is used when evaluating the
// Condition elements of the input policies.
//
// This data type is used as an input parameter to [SimulateCustomPolicy] and [SimulatePrincipalPolicy].
//
// [SimulatePrincipalPolicy]: https://docs.aws.amazon.com/IAM/latest/APIReference/API_SimulatePrincipalPolicy.html
// [SimulateCustomPolicy]: https://docs.aws.amazon.com/IAM/latest/APIReference/API_SimulateCustomPolicy.html
type ContextEntry struct {

	// The full name of a condition context key, including the service prefix. For
	// example, aws:SourceIp or s3:VersionId .
	ContextKeyName *string

	// The data type of the value (or values) specified in the ContextKeyValues
	// parameter.
	ContextKeyType ContextKeyTypeEnum

	// The value (or values, if the condition context key supports multiple values) to
	// provide to the simulation when the key is referenced by a Condition element in
	// an input policy.
	ContextKeyValues []string

	noSmithyDocumentSerde
}

// Contains information about the permissions being delegated in a delegation
// request.
type DelegationPermission struct {

	// A list of policy parameters that define the scope and constraints of the
	// delegated permissions.
	Parameters []PolicyParameter

	// This ARN maps to a pre-registered policy content for this partner. See the partner onboarding documentation to
	// understand how to create a delegation template.
	PolicyTemplateArn *string

	noSmithyDocumentSerde
}

// Contains information about a delegation request, including its status,
// permissions, and associated metadata.
type DelegationRequest struct {

	// The Amazon Resource Name (ARN). ARNs are unique identifiers for Amazon Web
	// Services resources.
	//
	// For more information about ARNs, go to [Amazon Resource Names (ARNs)] in the Amazon Web Services General
	// Reference.
	//
	// [Amazon Resource Names (ARNs)]: https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html
	ApproverId *string

	// Creation date (timestamp) of this delegation request.
	CreateDate *time.Time

	// The unique identifier for the delegation request.
	DelegationRequestId *string

	// Description of the delegation request. This is a message that is provided by
	// the Amazon Web Services partner that filed the delegation request.
	Description *string

	// The expiry time of this delegation request
	//
	// See the [Understanding the Request Lifecycle] for details on the life time of a delegation request at each state.
	//
	// [Understanding the Request Lifecycle]: https://docs.aws.amazon.com/IAM/latest/UserGuide/temporary-delegation-building-integration.html#temporary-delegation-request-lifecycle
	ExpirationTime *time.Time

	// Notes added to this delegation request, if this request was updated via the [UpdateDelegationRequest]
	// API.
	//
	// [UpdateDelegationRequest]: https://docs.aws.amazon.com/IAM/latest/APIReference/API_UpdateDelegationRequest.html
	Notes *string

	// A flag indicating whether the [SendDelegationToken] must be called by the owner of this delegation
	// request. This is set by the requesting partner.
	//
	// [SendDelegationToken]: https://docs.aws.amazon.com/IAM/latest/APIReference/API_SendDelegationToken.html
	OnlySendByOwner bool

	// Amazon Web Services account ID of the owner of the delegation request.
	OwnerAccountId *string

	// ARN of the owner of this delegation request.
	OwnerId *string

	// JSON content of the associated permission policy of this delegation request.
	PermissionPolicy *string

	// Contains information about the permissions being delegated in a delegation
	// request.
	Permissions *DelegationPermission

	// A URL to be redirected to once the delegation request is approved. Partners
	// provide this URL when creating the delegation request.
	RedirectUrl *string

	// Reasons for rejecting this delegation request, if this request was rejected.
	// See also [RejectDelegationRequest]API documentation.
	//
	// [RejectDelegationRequest]: https://docs.aws.amazon.com/IAM/latest/APIReference/API_RejectDelegationRequest.html
	RejectionReason *string

	// A custom message that is added to the delegation request by the partner.
	//
	// This element is different from the Description element such that this is a
	// request specific message injected by the partner. The Description is typically
	// a generic explanation of what the delegation request is targeted to do.
	RequestMessage *string

	// Identity of the requestor of this delegation request. This will be an Amazon
	// Web Services account ID.
	RequestorId *string

	// A friendly name of the requestor.
	RequestorName *string

	// If the PermissionPolicy includes role creation permissions, this element will
	// include the list of permissions boundary policies associated with the role
	// creation. See [Permissions boundaries for IAM entities]for more details about IAM permission boundaries.
	//
	// [Permissions boundaries for IAM entities]: https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_boundaries.html
	RolePermissionRestrictionArns []string

	// The life-time of the requested session credential.
	SessionDuration *int32

	// The state of this delegation request.
	//
	// See the [Understanding the Request Lifecycle] for an explanation of how these states are transitioned.
	//
	// [Understanding the Request Lifecycle]: https://docs.aws.amazon.com/IAM/latest/UserGuide/temporary-delegation-building-integration.html#temporary-delegation-request-lifecycle
	State StateType

	// Last updated timestamp of the request.
	UpdatedTime *time.Time

	noSmithyDocumentSerde
}

// The reason that the service-linked role deletion failed.
//
// This data type is used as a response element in the [GetServiceLinkedRoleDeletionStatus] operation.
//
// [GetServiceLinkedRoleDeletionStatus]: https://docs.aws.amazon.com/IAM/latest/APIReference/API_GetServiceLinkedRoleDeletionStatus.html
type DeletionTaskFailureReasonType struct {

	// A short description of the reason that the service-linked role deletion failed.
	Reason *string

	// A list of objects that contains details about the service-linked role deletion
	// failure, if that information is returned by the service. If the service-linked
	// role has active sessions or if any resources that were used by the role have not
	// been deleted from the linked service, the role can't be deleted. This parameter
	// includes a list of the resources that are associated with the role and the
	// Region in which the resources are being used.
	RoleUsageList []RoleUsageType

	noSmithyDocumentSerde
}

// An object that contains details about when the IAM entities (users or roles)
// were last used in an attempt to access the specified Amazon Web Services
// service.
//
// This data type is a response element in the [GetServiceLastAccessedDetailsWithEntities] operation.
//
// [GetServiceLastAccessedDetailsWithEntities]: https://docs.aws.amazon.com/IAM/latest/APIReference/API_GetServiceLastAccessedDetailsWithEntities.html
type EntityDetails struct {

	// The EntityInfo object that contains details about the entity (user or role).
	//
	// This member is required.
	EntityInfo *EntityInfo

	// The date and time, in [ISO 8601 date-time format], when the authenticated entity last attempted to access
	// Amazon Web Services. Amazon Web Services does not report unauthenticated
	// requests.
	//
	// This field is null if no IAM entities attempted to access the service within
	// the [tracking period].
	//
	// [tracking period]: https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_access-advisor.html#service-last-accessed-reporting-period
	// [ISO 8601 date-time format]: http://www.iso.org/iso/iso8601
	LastAuthenticated *time.Time

	noSmithyDocumentSerde
}

// Contains details about the specified entity (user or role).
//
// This data type is an element of the [EntityDetails] object.
//
// [EntityDetails]: https://docs.aws.amazon.com/IAM/latest/APIReference/API_EntityDetails.html
type EntityInfo struct {

	// The Amazon Resource Name (ARN). ARNs are unique identifiers for Amazon Web
	// Services resources.
	//
	// For more information about ARNs, go to [Amazon Resource Names (ARNs)] in the Amazon Web Services General
	// Reference.
	//
	// [Amazon Resource Names (ARNs)]: https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html
	//
	// This member is required.
	Arn *string

	// The identifier of the entity (user or role).
	//
	// This member is required.
	Id *string

	// The name of the entity (user or role).
	//
	// This member is required.
	Name *string

	// The type of entity (user or role).
	//
	// This member is required.
	Type PolicyOwnerEntityType

	// The path to the entity (user or role). For more information about paths, see [IAM identifiers]
	// in the IAM User Guide.
	//
	// [IAM identifiers]: https://docs.aws.amazon.com/IAM/latest/UserGuide/Using_Identifiers.html
	Path *string

	noSmithyDocumentSerde
}

// Contains information about the reason that the operation failed.
//
// This data type is used as a response element in the [GetOrganizationsAccessReport], [GetServiceLastAccessedDetails], and [GetServiceLastAccessedDetailsWithEntities] operations.
//
// [GetServiceLastAccessedDetails]: https://docs.aws.amazon.com/IAM/latest/APIReference/API_GetServiceLastAccessedDetails.html
// [GetOrganizationsAccessReport]: https://docs.aws.amazon.com/IAM/latest/APIReference/API_GetOrganizationsAccessReport.html
// [GetServiceLastAccessedDetailsWithEntities]: https://docs.aws.amazon.com/IAM/latest/APIReference/API_GetServiceLastAccessedDetailsWithEntities.html
type ErrorDetails struct {

	// The error code associated with the operation failure.
	//
	// This member is required.
	Code *string

	// Detailed information about the reason that the operation failed.
	//
	// This member is required.
	Message *string

	noSmithyDocumentSerde
}

// Contains the results of a simulation.
//
// This data type is used by the return parameter of [SimulateCustomPolicy] and [SimulatePrincipalPolicy].
//
// [SimulatePrincipalPolicy]: https://docs.aws.amazon.com/IAM/latest/APIReference/API_SimulatePrincipalPolicy.html
// [SimulateCustomPolicy]: https://docs.aws.amazon.com/IAM/latest/APIReference/API_SimulateCustomPolicy.html
type EvaluationResult struct {

	// The name of the API operation tested on the indicated resource.
	//
	// This member is required.
	EvalActionName *string

	// The result of the simulation.
	//
	// This member is required.
	EvalDecision PolicyEvaluationDecisionType

	// Additional details about the results of the cross-account evaluation decision.
	// This parameter is populated for only cross-account simulations. It contains a
	// brief summary of how each policy type contributes to the final evaluation
	// decision.
	//
	// If the simulation evaluates policies within the same account and includes a
	// resource ARN, then the parameter is present but the response is empty. If the
	// simulation evaluates policies within the same account and specifies all
	// resources ( * ), then the parameter is not returned.
	//
	// When you make a cross-account request, Amazon Web Services evaluates the
	// request in the trusting account and the trusted account. The request is allowed
	// only if both evaluations return true . For more information about how policies
	// are evaluated, see [Evaluating policies within a single account].
	//
	// If an Organizations SCP included in the evaluation denies access, the
	// simulation ends. In this case, policy evaluation does not proceed any further
	// and this parameter is not returned.
	//
	// [Evaluating policies within a single account]: https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_evaluation-logic.html#policy-eval-basics
	EvalDecisionDetails map[string]PolicyEvaluationDecisionType

	// The ARN of the resource that the indicated API operation was tested on.
	EvalResourceName *string

	// A list of the statements in the input policies that determine the result for
	// this scenario. Remember that even if multiple statements allow the operation on
	// the resource, if only one statement denies that operation, then the explicit
	// deny overrides any allow. In addition, the deny statement is the only entry
	// included in the result.
	MatchedStatements []Statement

	// A list of context keys that are required by the included input policies but
	// that were not provided by one of the input parameters. This list is used when
	// the resource in a simulation is "*", either explicitly, or when the ResourceArns
	// parameter blank. If you include a list of resources, then any missing context
	// values are instead included under the ResourceSpecificResults section. To
	// discover the context keys used by a set of policies, you can call [GetContextKeysForCustomPolicy]or [GetContextKeysForPrincipalPolicy].
	//
	// [GetContextKeysForPrincipalPolicy]: https://docs.aws.amazon.com/IAM/latest/APIReference/API_GetContextKeysForPrincipalPolicy.html
	// [GetContextKeysForCustomPolicy]: https://docs.aws.amazon.com/IAM/latest/APIReference/API_GetContextKeysForCustomPolicy.html
	MissingContextValues []string

	// A structure that details how Organizations and its service control policies
	// affect the results of the simulation. Only applies if the simulated user's
	// account is part of an organization.
	OrganizationsDecisionDetail *OrganizationsDecisionDetail

	// Contains information about the effect that a permissions boundary has on a
	// policy simulation when the boundary is applied to an IAM entity.
	PermissionsBoundaryDecisionDetail *PermissionsBoundaryDecisionDetail

	// The individual results of the simulation of the API operation specified in
	// EvalActionName on each resource.
	ResourceSpecificResults []ResourceSpecificResult

	noSmithyDocumentSerde
}

// Contains information about an IAM group entity.
//
// This data type is used as a response element in the following operations:
//
// [CreateGroup]
//
// [GetGroup]
//
// [ListGroups]
//
// [GetGroup]: https://docs.aws.amazon.com/IAM/latest/APIReference/API_GetGroup.html
// [CreateGroup]: https://docs.aws.amazon.com/IAM/latest/APIReference/API_CreateGroup.html
// [ListGroups]: https://docs.aws.amazon.com/IAM/latest/APIReference/API_ListGroups.html
type Group struct {

	//  The Amazon Resource Name (ARN) specifying the group. For more information
	// about ARNs and how to use them in policies, see [IAM identifiers]in the IAM User Guide.
	//
	// [IAM identifiers]: https://docs.aws.amazon.com/IAM/latest/UserGuide/Using_Identifiers.html
	//
	// This member is required.
	Arn *string

	// The date and time, in [ISO 8601 date-time format], when the group was created.
	//
	// [ISO 8601 date-time format]: http://www.iso.org/iso/iso8601
	//
	// This member is required.
	CreateDate *time.Time

	//  The stable and unique string identifying the group. For more information about
	// IDs, see [IAM identifiers]in the IAM User Guide.
	//
	// [IAM identifiers]: https://docs.aws.amazon.com/IAM/latest/UserGuide/Using_Identifiers.html
	//
	// This member is required.
	GroupId *string

	// The friendly name that identifies the group.
	//
	// This member is required.
	GroupName *string

	// The path to the group. For more information about paths, see [IAM identifiers] in the IAM User
	// Guide.
	//
	// [IAM identifiers]: https://docs.aws.amazon.com/IAM/latest/UserGuide/Using_Identifiers.html
	//
	// This member is required.
	Path *string

	noSmithyDocumentSerde
}

// Contains information about an IAM group, including all of the group's policies.
//
// This data type is used as a response element in the [GetAccountAuthorizationDetails] operation.
//
// [GetAccountAuthorizationDetails]: https://docs.aws.amazon.com/IAM/latest/APIReference/API_GetAccountAuthorizationDetails.html
type GroupDetail struct {

	// The Amazon Resource Name (ARN). ARNs are unique identifiers for Amazon Web
	// Services resources.
	//
	// For more information about ARNs, go to [Amazon Resource Names (ARNs)] in the Amazon Web Services General
	// Reference.
	//
	// [Amazon Resource Names (ARNs)]: https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html
	Arn *string

	// A list of the managed policies attached to the group.
	AttachedManagedPolicies []AttachedPolicy

	// The date and time, in [ISO 8601 date-time format], when the group was created.
	//
	// [ISO 8601 date-time format]: http://www.iso.org/iso/iso8601
	CreateDate *time.Time

	// The stable and unique string identifying the group. For more information about
	// IDs, see [IAM identifiers]in the IAM User Guide.
	//
	// [IAM identifiers]: https://docs.aws.amazon.com/IAM/latest/UserGuide/Using_Identifiers.html
	GroupId *string

	// The friendly name that identifies the group.
	GroupName *string

	// A list of the inline policies embedded in the group.
	GroupPolicyList []PolicyDetail

	// The path to the group. For more information about paths, see [IAM identifiers] in the IAM User
	// Guide.
	//
	// [IAM identifiers]: https://docs.aws.amazon.com/IAM/latest/UserGuide/Using_Identifiers.html
	Path *string

	noSmithyDocumentSerde
}

// Contains information about an instance profile.
//
// This data type is used as a response element in the following operations:
//
// [CreateInstanceProfile]
//
// [GetInstanceProfile]
//
// [ListInstanceProfiles]
//
// [ListInstanceProfilesForRole]
//
// [ListInstanceProfilesForRole]: https://docs.aws.amazon.com/IAM/latest/APIReference/API_ListInstanceProfilesForRole.html
// [GetInstanceProfile]: https://docs.aws.amazon.com/IAM/latest/APIReference/API_GetInstanceProfile.html
// [CreateInstanceProfile]: https://docs.aws.amazon.com/IAM/latest/APIReference/API_CreateInstanceProfile.html
// [ListInstanceProfiles]: https://docs.aws.amazon.com/IAM/latest/APIReference/API_ListInstanceProfiles.html
type InstanceProfile struct {

	//  The Amazon Resource Name (ARN) specifying the instance profile. For more
	// information about ARNs and how to use them in policies, see [IAM identifiers]in the IAM User
	// Guide.
	//
	// [IAM identifiers]: https://docs.aws.amazon.com/IAM/latest/UserGuide/Using_Identifiers.html
	//
	// This member is required.
	Arn *string

	// The date when the instance profile was created.
	//
	// This member is required.
	CreateDate *time.Time

	//  The stable and unique string identifying the instance profile. For more
	// information about IDs, see [IAM identifiers]in the IAM User Guide.
	//
	// [IAM identifiers]: https://docs.aws.amazon.com/IAM/latest/UserGuide/Using_Identifiers.html
	//
	// This member is required.
	InstanceProfileId *string

	// The name identifying the instance profile.
	//
	// This member is required.
	InstanceProfileName *string

	//  The path to the instance profile. For more information about paths, see [IAM identifiers] in
	// the IAM User Guide.
	//
	// [IAM identifiers]: https://docs.aws.amazon.com/IAM/latest/UserGuide/Using_Identifiers.html
	//
	// This member is required.
	Path *string

	// The role associated with the instance profile.
	//
	// This member is required.
	Roles []Role

	// A list of tags that are attached to the instance profile. For more information
	// about tagging, see [Tagging IAM resources]in the IAM User Guide.
	//
	// [Tagging IAM resources]: https://docs.aws.amazon.com/IAM/latest/UserGuide/id_tags.html
	Tags []Tag

	noSmithyDocumentSerde
}

// Contains details about the permissions policies that are attached to the
// specified identity (user, group, or role).
//
// This data type is used as a response element in the [ListPoliciesGrantingServiceAccess] operation.
//
// [ListPoliciesGrantingServiceAccess]: https://docs.aws.amazon.com/IAM/latest/APIReference/API_ListPoliciesGrantingServiceAccess.html
type ListPoliciesGrantingServiceAccessEntry struct {

	// The PoliciesGrantingServiceAccess object that contains details about the policy.
	Policies []PolicyGrantingServiceAccess

	// The namespace of the service that was accessed.
	//
	// To learn the service namespace of a service, see [Actions, resources, and condition keys for Amazon Web Services services] in the Service Authorization
	// Reference. Choose the name of the service to view details for that service. In
	// the first paragraph, find the service prefix. For example, (service prefix: a4b)
	// . For more information about service namespaces, see [Amazon Web Services service namespaces]in the Amazon Web Services
	// General Reference.
	//
	// [Amazon Web Services service namespaces]: https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html#genref-aws-service-namespaces
	// [Actions, resources, and condition keys for Amazon Web Services services]: https://docs.aws.amazon.com/service-authorization/latest/reference/reference_policies_actions-resources-contextkeys.html
	ServiceNamespace *string

	noSmithyDocumentSerde
}

// Contains the user name and password create date for a user.
//
// This data type is used as a response element in the [CreateLoginProfile] and [GetLoginProfile] operations.
//
// [GetLoginProfile]: https://docs.aws.amazon.com/IAM/latest/APIReference/API_GetLoginProfile.html
// [CreateLoginProfile]: https://docs.aws.amazon.com/IAM/latest/APIReference/API_CreateLoginProfile.html
type LoginProfile struct {

	// The date when the password for the user was created.
	//
	// This member is required.
	CreateDate *time.Time

	// The name of the user, which can be used for signing in to the Amazon Web
	// Services Management Console.
	//
	// This member is required.
	UserName *string

	// Specifies whether the user is required to set a new password on next sign-in.
	PasswordResetRequired bool

	noSmithyDocumentSerde
}

// Contains information about a managed policy, including the policy's ARN,
// versions, and the number of principal entities (users, groups, and roles) that
// the policy is attached to.
//
// This data type is used as a response element in the [GetAccountAuthorizationDetails] operation.
//
// For more information about managed policies, see [Managed policies and inline policies] in the IAM User Guide.
//
// [GetAccountAuthorizationDetails]: https://docs.aws.amazon.com/IAM/latest/APIReference/API_GetAccountAuthorizationDetails.html
// [Managed policies and inline policies]: https://docs.aws.amazon.com/IAM/latest/UserGuide/policies-managed-vs-inline.html
type ManagedPolicyDetail struct {

	// The Amazon Resource Name (ARN). ARNs are unique identifiers for Amazon Web
	// Services resources.
	//
	// For more information about ARNs, go to [Amazon Resource Names (ARNs)] in the Amazon Web Services General
	// Reference.
	//
	// [Amazon Resource Names (ARNs)]: https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html
	Arn *string

	// The number of principal entities (users, groups, and roles) that the policy is
	// attached to.
	AttachmentCount *int32

	// The date and time, in [ISO 8601 date-time format], when the policy was created.
	//
	// [ISO 8601 date-time format]: http://www.iso.org/iso/iso8601
	CreateDate *time.Time

	// The identifier for the version of the policy that is set as the default
	// (operative) version.
	//
	// For more information about policy versions, see [Versioning for managed policies] in the IAM User Guide.
	//
	// [Versioning for managed policies]: https://docs.aws.amazon.com/IAM/latest/UserGuide/policies-managed-versions.html
	DefaultVersionId *string

	// A friendly description of the policy.
	Description *string

	// Specifies whether the policy can be attached to an IAM user, group, or role.
	IsAttachable bool

	// The path to the policy.
	//
	// For more information about paths, see [IAM identifiers] in the IAM User Guide.
	//
	// [IAM identifiers]: https://docs.aws.amazon.com/IAM/latest/UserGuide/Using_Identifiers.html
	Path *string

	// The number of entities (users and roles) for which the policy is used as the
	// permissions boundary.
	//
	// For more information about permissions boundaries, see [Permissions boundaries for IAM identities] in the IAM User Guide.
	//
	// [Permissions boundaries for IAM identities]: https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_boundaries.html
	PermissionsBoundaryUsageCount *int32

	// The stable and unique string identifying the policy.
	//
	// For more information about IDs, see [IAM identifiers] in the IAM User Guide.
	//
	// [IAM identifiers]: https://docs.aws.amazon.com/IAM/latest/UserGuide/Using_Identifiers.html
	PolicyId *string

	// The friendly name (not ARN) identifying the policy.
	PolicyName *string

	// A list containing information about the versions of the policy.
	PolicyVersionList []PolicyVersion

	// The date and time, in [ISO 8601 date-time format], when the policy was last updated.
	//
	// When a policy has only one version, this field contains the date and time when
	// the policy was created. When a policy has more than one version, this field
	// contains the date and time when the most recent policy version was created.
	//
	// [ISO 8601 date-time format]: http://www.iso.org/iso/iso8601
	UpdateDate *time.Time

	noSmithyDocumentSerde
}

// Contains information about an MFA device.
//
// This data type is used as a response element in the [ListMFADevices] operation.
//
// [ListMFADevices]: https://docs.aws.amazon.com/IAM/latest/APIReference/API_ListMFADevices.html
type MFADevice struct {

	// The date when the MFA device was enabled for the user.
	//
	// This member is required.
	EnableDate *time.Time

	// The serial number that uniquely identifies the MFA device. For virtual MFA
	// devices, the serial number is the device ARN.
	//
	// This member is required.
	SerialNumber *string

	// The user with whom the MFA device is associated.
	//
	// This member is required.
	UserName *string

	noSmithyDocumentSerde
}

// Contains the Amazon Resource Name (ARN) for an IAM OpenID Connect provider.
type OpenIDConnectProviderListEntry struct {

	// The Amazon Resource Name (ARN). ARNs are unique identifiers for Amazon Web
	// Services resources.
	//
	// For more information about ARNs, go to [Amazon Resource Names (ARNs)] in the Amazon Web Services General
	// Reference.
	//
	// [Amazon Resource Names (ARNs)]: https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html
	Arn *string

	noSmithyDocumentSerde
}

// Contains information about the effect that Organizations has on a policy
// simulation.
type OrganizationsDecisionDetail struct {

	// Specifies whether the simulated operation is allowed by the Organizations
	// service control policies that impact the simulated user's account.
	AllowedByOrganizations bool

	noSmithyDocumentSerde
}

// Contains information about the account password policy.
//
// This data type is used as a response element in the [GetAccountPasswordPolicy] operation.
//
// [GetAccountPasswordPolicy]: https://docs.aws.amazon.com/IAM/latest/APIReference/API_GetAccountPasswordPolicy.html
type PasswordPolicy struct {

	// Specifies whether IAM users are allowed to change their own password. Gives IAM
	// users permissions to iam:ChangePassword for only their user and to the
	// iam:GetAccountPasswordPolicy action. This option does not attach a permissions
	// policy to each user, rather the permissions are applied at the account-level for
	// all users by IAM.
	AllowUsersToChangePassword bool

	// Indicates whether passwords in the account expire. Returns true if
	// MaxPasswordAge contains a value greater than 0. Returns false if MaxPasswordAge
	// is 0 or not present.
	ExpirePasswords bool

	// Specifies whether IAM users are prevented from setting a new password via the
	// Amazon Web Services Management Console after their password has expired. The IAM
	// user cannot access the console until an administrator resets the password. IAM
	// users with iam:ChangePassword permission and active access keys can reset their
	// own expired console password using the CLI or API.
	HardExpiry *bool

	// The number of days that an IAM user password is valid.
	MaxPasswordAge *int32

	// Minimum length to require for IAM user passwords.
	MinimumPasswordLength *int32

	// Specifies the number of previous passwords that IAM users are prevented from
	// reusing.
	PasswordReusePrevention *int32

	// Specifies whether IAM user passwords must contain at least one lowercase
	// character (a to z).
	RequireLowercaseCharacters bool

	// Specifies whether IAM user passwords must contain at least one numeric
	// character (0 to 9).
	RequireNumbers bool

	// Specifies whether IAM user passwords must contain at least one of the following
	// symbols:
	//
	// ! @ # $ % ^ & * ( ) _ + - = [ ] { } | '
	RequireSymbols bool

	// Specifies whether IAM user passwords must contain at least one uppercase
	// character (A to Z).
	RequireUppercaseCharacters bool

	noSmithyDocumentSerde
}

// Contains information about the effect that a permissions boundary has on a
// policy simulation when the boundary is applied to an IAM entity.
type PermissionsBoundaryDecisionDetail struct {

	// Specifies whether an action is allowed by a permissions boundary that is
	// applied to an IAM entity (user or role). A value of true means that the
	// permissions boundary does not deny the action. This means that the policy
	// includes an Allow statement that matches the request. In this case, if an
	// identity-based policy also allows the action, the request is allowed. A value of
	// false means that either the requested action is not allowed (implicitly denied)
	// or that the action is explicitly denied by the permissions boundary. In both of
	// these cases, the action is not allowed, regardless of the identity-based policy.
	AllowedByPermissionsBoundary bool

	noSmithyDocumentSerde
}

// Contains information about a managed policy.
//
// This data type is used as a response element in the [CreatePolicy], [GetPolicy], and [ListPolicies] operations.
//
// For more information about managed policies, refer to [Managed policies and inline policies] in the IAM User Guide.
//
// [CreatePolicy]: https://docs.aws.amazon.com/IAM/latest/APIReference/API_CreatePolicy.html
// [ListPolicies]: https://docs.aws.amazon.com/IAM/latest/APIReference/API_ListPolicies.html
// [GetPolicy]: https://docs.aws.amazon.com/IAM/latest/APIReference/API_GetPolicy.html
// [Managed policies and inline policies]: https://docs.aws.amazon.com/IAM/latest/UserGuide/policies-managed-vs-inline.html
type Policy struct {

	// The Amazon Resource Name (ARN). ARNs are unique identifiers for Amazon Web
	// Services resources.
	//
	// For more information about ARNs, go to [Amazon Resource Names (ARNs)] in the Amazon Web Services General
	// Reference.
	//
	// [Amazon Resource Names (ARNs)]: https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html
	Arn *string

	// The number of entities (users, groups, and roles) that the policy is attached
	// to.
	AttachmentCount *int32

	// The date and time, in [ISO 8601 date-time format], when the policy was created.
	//
	// [ISO 8601 date-time format]: http://www.iso.org/iso/iso8601
	CreateDate *time.Time

	// The identifier for the version of the policy that is set as the default version.
	DefaultVersionId *string

	// A friendly description of the policy.
	//
	// This element is included in the response to the [GetPolicy] operation. It is not included
	// in the response to the [ListPolicies]operation.
	//
	// [ListPolicies]: https://docs.aws.amazon.com/IAM/latest/APIReference/API_ListPolicies.html
	// [GetPolicy]: https://docs.aws.amazon.com/IAM/latest/APIReference/API_GetPolicy.html
	Description *string

	// Specifies whether the policy can be attached to an IAM user, group, or role.
	IsAttachable bool

	// The path to the policy.
	//
	// For more information about paths, see [IAM identifiers] in the IAM User Guide.
	//
	// [IAM identifiers]: https://docs.aws.amazon.com/IAM/latest/UserGuide/Using_Identifiers.html
	Path *string

	// The number of entities (users and roles) for which the policy is used to set
	// the permissions boundary.
	//
	// For more information about permissions boundaries, see [Permissions boundaries for IAM identities] in the IAM User Guide.
	//
	// [Permissions boundaries for IAM identities]: https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_boundaries.html
	PermissionsBoundaryUsageCount *int32

	// The stable and unique string identifying the policy.
	//
	// For more information about IDs, see [IAM identifiers] in the IAM User Guide.
	//
	// [IAM identifiers]: https://docs.aws.amazon.com/IAM/latest/UserGuide/Using_Identifiers.html
	PolicyId *string

	// The friendly name (not ARN) identifying the policy.
	PolicyName *string

	// A list of tags that are attached to the instance profile. For more information
	// about tagging, see [Tagging IAM resources]in the IAM User Guide.
	//
	// [Tagging IAM resources]: https://docs.aws.amazon.com/IAM/latest/UserGuide/id_tags.html
	Tags []Tag

	// The date and time, in [ISO 8601 date-time format], when the policy was last updated.
	//
	// When a policy has only one version, this field contains the date and time when
	// the policy was created. When a policy has more than one version, this field
	// contains the date and time when the most recent policy version was created.
	//
	// [ISO 8601 date-time format]: http://www.iso.org/iso/iso8601
	UpdateDate *time.Time

	noSmithyDocumentSerde
}

// Contains information about an IAM policy, including the policy document.
//
// This data type is used as a response element in the [GetAccountAuthorizationDetails] operation.
//
// [GetAccountAuthorizationDetails]: https://docs.aws.amazon.com/IAM/latest/APIReference/API_GetAccountAuthorizationDetails.html
type PolicyDetail struct {

	// The policy document.
	PolicyDocument *string

	// The name of the policy.
	PolicyName *string

	noSmithyDocumentSerde
}

// Contains details about the permissions policies that are attached to the
// specified identity (user, group, or role).
//
// This data type is an element of the [ListPoliciesGrantingServiceAccessEntry] object.
//
// [ListPoliciesGrantingServiceAccessEntry]: https://docs.aws.amazon.com/IAM/latest/APIReference/API_ListPoliciesGrantingServiceAccessEntry.html
type PolicyGrantingServiceAccess struct {

	// The policy name.
	//
	// This member is required.
	PolicyName *string

	// The policy type. For more information about these policy types, see [Managed policies and inline policies] in the IAM
	// User Guide.
	//
	// [Managed policies and inline policies]: https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_managed-vs-inline.html
	//
	// This member is required.
	PolicyType PolicyType

	// The name of the entity (user or role) to which the inline policy is attached.
	//
	// This field is null for managed policies. For more information about these
	// policy types, see [Managed policies and inline policies]in the IAM User Guide.
	//
	// [Managed policies and inline policies]: https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_managed-vs-inline.html
	EntityName *string

	// The type of entity (user or role) that used the policy to access the service to
	// which the inline policy is attached.
	//
	// This field is null for managed policies. For more information about these
	// policy types, see [Managed policies and inline policies]in the IAM User Guide.
	//
	// [Managed policies and inline policies]: https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_managed-vs-inline.html
	EntityType PolicyOwnerEntityType

	// The Amazon Resource Name (ARN). ARNs are unique identifiers for Amazon Web
	// Services resources.
	//
	// For more information about ARNs, go to [Amazon Resource Names (ARNs)] in the Amazon Web Services General
	// Reference.
	//
	// [Amazon Resource Names (ARNs)]: https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html
	PolicyArn *string

	noSmithyDocumentSerde
}

// Contains information about a group that a managed policy is attached to.
//
// This data type is used as a response element in the [ListEntitiesForPolicy] operation.
//
// For more information about managed policies, refer to [Managed policies and inline policies] in the IAM User Guide.
//
// [ListEntitiesForPolicy]: https://docs.aws.amazon.com/IAM/latest/APIReference/API_ListEntitiesForPolicy.html
// [Managed policies and inline policies]: https://docs.aws.amazon.com/IAM/latest/UserGuide/policies-managed-vs-inline.html
type PolicyGroup struct {

	// The stable and unique string identifying the group. For more information about
	// IDs, see [IAM identifiers]in the IAM User Guide.
	//
	// [IAM identifiers]: https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_identifiers.html
	GroupId *string

	// The name (friendly name, not ARN) identifying the group.
	GroupName *string

	noSmithyDocumentSerde
}

// Contains information about a policy parameter used to customize delegated
// permissions.
type PolicyParameter struct {

	// The name of the policy parameter.
	Name *string

	// The data type of the policy parameter value.
	Type PolicyParameterTypeEnum

	// The allowed values for the policy parameter.
	Values []string

	noSmithyDocumentSerde
}

// Contains information about a role that a managed policy is attached to.
//
// This data type is used as a response element in the [ListEntitiesForPolicy] operation.
//
// For more information about managed policies, refer to [Managed policies and inline policies] in the IAM User Guide.
//
// [ListEntitiesForPolicy]: https://docs.aws.amazon.com/IAM/latest/APIReference/API_ListEntitiesForPolicy.html
// [Managed policies and inline policies]: https://docs.aws.amazon.com/IAM/latest/UserGuide/policies-managed-vs-inline.html
type PolicyRole struct {

	// The stable and unique string identifying the role. For more information about
	// IDs, see [IAM identifiers]in the IAM User Guide.
	//
	// [IAM identifiers]: https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_identifiers.html
	RoleId *string

	// The name (friendly name, not ARN) identifying the role.
	RoleName *string

	noSmithyDocumentSerde
}

// Contains information about a user that a managed policy is attached to.
//
// This data type is used as a response element in the [ListEntitiesForPolicy] operation.
//
// For more information about managed policies, refer to [Managed policies and inline policies] in the IAM User Guide.
//
// [ListEntitiesForPolicy]: https://docs.aws.amazon.com/IAM/latest/APIReference/API_ListEntitiesForPolicy.html
// [Managed policies and inline policies]: https://docs.aws.amazon.com/IAM/latest/UserGuide/policies-managed-vs-inline.html
type PolicyUser struct {

	// The stable and unique string identifying the user. For more information about
	// IDs, see [IAM identifiers]in the IAM User Guide.
	//
	// [IAM identifiers]: https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_identifiers.html
	UserId *string

	// The name (friendly name, not ARN) identifying the user.
	UserName *string

	noSmithyDocumentSerde
}

// Contains information about a version of a managed policy.
//
// This data type is used as a response element in the [CreatePolicyVersion], [GetPolicyVersion], [ListPolicyVersions], and [GetAccountAuthorizationDetails] operations.
//
// For more information about managed policies, refer to [Managed policies and inline policies] in the IAM User Guide.
//
// [CreatePolicyVersion]: https://docs.aws.amazon.com/IAM/latest/APIReference/API_CreatePolicyVersion.html
// [GetAccountAuthorizationDetails]: https://docs.aws.amazon.com/IAM/latest/APIReference/API_GetAccountAuthorizationDetails.html
// [GetPolicyVersion]: https://docs.aws.amazon.com/IAM/latest/APIReference/API_GetPolicyVersion.html
// [ListPolicyVersions]: https://docs.aws.amazon.com/IAM/latest/APIReference/API_ListPolicyVersions.html
// [Managed policies and inline policies]: https://docs.aws.amazon.com/IAM/latest/UserGuide/policies-managed-vs-inline.html
type PolicyVersion struct {

	// The date and time, in [ISO 8601 date-time format], when the policy version was created.
	//
	// [ISO 8601 date-time format]: http://www.iso.org/iso/iso8601
	CreateDate *time.Time

	// The policy document.
	//
	// The policy document is returned in the response to the [GetPolicyVersion] and [GetAccountAuthorizationDetails] operations. It is
	// not returned in the response to the [CreatePolicyVersion]or [ListPolicyVersions] operations.
	//
	// The policy document returned in this structure is URL-encoded compliant with [RFC 3986].
	// You can use a URL decoding method to convert the policy back to plain JSON text.
	// For example, if you use Java, you can use the decode method of the
	// java.net.URLDecoder utility class in the Java SDK. Other languages and SDKs
	// provide similar functionality.
	//
	// [CreatePolicyVersion]: https://docs.aws.amazon.com/IAM/latest/APIReference/API_CreatePolicyVersion.html
	// [RFC 3986]: https://tools.ietf.org/html/rfc3986
	// [GetAccountAuthorizationDetails]: https://docs.aws.amazon.com/IAM/latest/APIReference/API_GetAccountAuthorizationDetails.html
	// [GetPolicyVersion]: https://docs.aws.amazon.com/IAM/latest/APIReference/API_GetPolicyVersion.html
	// [ListPolicyVersions]: https://docs.aws.amazon.com/IAM/latest/APIReference/API_ListPolicyVersions.html
	Document *string

	// Specifies whether the policy version is set as the policy's default version.
	IsDefaultVersion bool

	// The identifier for the policy version.
	//
	// Policy version identifiers always begin with v (always lowercase). When a
	// policy is created, the first policy version is v1 .
	VersionId *string

	noSmithyDocumentSerde
}

// Contains the row and column of a location of a Statement element in a policy
// document.
//
// This data type is used as a member of the [Statement] type.
//
// [Statement]: https://docs.aws.amazon.com/IAM/latest/APIReference/API_Statement.html
type Position struct {

	// The column in the line containing the specified position in the document.
	Column int32

	// The line containing the specified position in the document.
	Line int32

	noSmithyDocumentSerde
}

// Contains the result of the simulation of a single API operation call on a
// single resource.
//
// This data type is used by a member of the [EvaluationResult] data type.
//
// [EvaluationResult]: https://docs.aws.amazon.com/IAM/latest/APIReference/API_EvaluationResult.html
type ResourceSpecificResult struct {

	// The result of the simulation of the simulated API operation on the resource
	// specified in EvalResourceName .
	//
	// This member is required.
	EvalResourceDecision PolicyEvaluationDecisionType

	// The name of the simulated resource, in Amazon Resource Name (ARN) format.
	//
	// This member is required.
	EvalResourceName *string

	// Additional details about the results of the evaluation decision on a single
	// resource. This parameter is returned only for cross-account simulations. This
	// parameter explains how each policy type contributes to the resource-specific
	// evaluation decision.
	EvalDecisionDetails map[string]PolicyEvaluationDecisionType

	// A list of the statements in the input policies that determine the result for
	// this part of the simulation. Remember that even if multiple statements allow the
	// operation on the resource, if any statement denies that operation, then the
	// explicit deny overrides any allow. In addition, the deny statement is the only
	// entry included in the result.
	MatchedStatements []Statement

	// A list of context keys that are required by the included input policies but
	// that were not provided by one of the input parameters. This list is used when a
	// list of ARNs is included in the ResourceArns parameter instead of "*". If you
	// do not specify individual resources, by setting ResourceArns to "*" or by not
	// including the ResourceArns parameter, then any missing context values are
	// instead included under the EvaluationResults section. To discover the context
	// keys used by a set of policies, you can call [GetContextKeysForCustomPolicy]or [GetContextKeysForPrincipalPolicy].
	//
	// [GetContextKeysForPrincipalPolicy]: https://docs.aws.amazon.com/IAM/latest/APIReference/API_GetContextKeysForPrincipalPolicy.html
	// [GetContextKeysForCustomPolicy]: https://docs.aws.amazon.com/IAM/latest/APIReference/API_GetContextKeysForCustomPolicy.html
	MissingContextValues []string

	// Contains information about the effect that a permissions boundary has on a
	// policy simulation when that boundary is applied to an IAM entity.
	PermissionsBoundaryDecisionDetail *PermissionsBoundaryDecisionDetail

	noSmithyDocumentSerde
}

// Contains information about an IAM role. This structure is returned as a
// response element in several API operations that interact with roles.
type Role struct {

	//  The Amazon Resource Name (ARN) specifying the role. For more information about
	// ARNs and how to use them in policies, see [IAM identifiers]in the IAM User Guide guide.
	//
	// [IAM identifiers]: https://docs.aws.amazon.com/IAM/latest/UserGuide/Using_Identifiers.html
	//
	// This member is required.
	Arn *string

	// The date and time, in [ISO 8601 date-time format], when the role was created.
	//
	// [ISO 8601 date-time format]: http://www.iso.org/iso/iso8601
	//
	// This member is required.
	CreateDate *time.Time

	//  The path to the role. For more information about paths, see [IAM identifiers] in the IAM User
	// Guide.
	//
	// [IAM identifiers]: https://docs.aws.amazon.com/IAM/latest/UserGuide/Using_Identifiers.html
	//
	// This member is required.
	Path *string

	//  The stable and unique string identifying the role. For more information about
	// IDs, see [IAM identifiers]in the IAM User Guide.
	//
	// [IAM identifiers]: https://docs.aws.amazon.com/IAM/latest/UserGuide/Using_Identifiers.html
	//
	// This member is required.
	RoleId *string

	// The friendly name that identifies the role.
	//
	// This member is required.
	RoleName *string

	// The policy that grants an entity permission to assume the role.
	AssumeRolePolicyDocument *string

	// A description of the role that you provide.
	Description *string

	// The maximum session duration (in seconds) for the specified role. Anyone who
	// uses the CLI, or API to assume the role can specify the duration using the
	// optional DurationSeconds API parameter or duration-seconds CLI parameter.
	MaxSessionDuration *int32

	// The ARN of the policy used to set the permissions boundary for the role.
	//
	// For more information about permissions boundaries, see [Permissions boundaries for IAM identities] in the IAM User Guide.
	//
	// [Permissions boundaries for IAM identities]: https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_boundaries.html
	PermissionsBoundary *AttachedPermissionsBoundary

	// Contains information about the last time that an IAM role was used. This
	// includes the date and time and the Region in which the role was last used.
	// Activity is only reported for the trailing 400 days. This period can be shorter
	// if your Region began supporting these features within the last year. The role
	// might have been used more than 400 days ago. For more information, see [Regions where data is tracked]in the
	// IAM user Guide.
	//
	// [Regions where data is tracked]: https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_access-advisor.html#access-advisor_tracking-period
	RoleLastUsed *RoleLastUsed

	// A list of tags that are attached to the role. For more information about
	// tagging, see [Tagging IAM resources]in the IAM User Guide.
	//
	// [Tagging IAM resources]: https://docs.aws.amazon.com/IAM/latest/UserGuide/id_tags.html
	Tags []Tag

	noSmithyDocumentSerde
}

// Contains information about an IAM role, including all of the role's policies.
//
// This data type is used as a response element in the [GetAccountAuthorizationDetails] operation.
//
// [GetAccountAuthorizationDetails]: https://docs.aws.amazon.com/IAM/latest/APIReference/API_GetAccountAuthorizationDetails.html
type RoleDetail struct {

	// The Amazon Resource Name (ARN). ARNs are unique identifiers for Amazon Web
	// Services resources.
	//
	// For more information about ARNs, go to [Amazon Resource Names (ARNs)] in the Amazon Web Services General
	// Reference.
	//
	// [Amazon Resource Names (ARNs)]: https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html
	Arn *string

	// The trust policy that grants permission to assume the role.
	AssumeRolePolicyDocument *string

	// A list of managed policies attached to the role. These policies are the role's
	// access (permissions) policies.
	AttachedManagedPolicies []AttachedPolicy

	// The date and time, in [ISO 8601 date-time format], when the role was created.
	//
	// [ISO 8601 date-time format]: http://www.iso.org/iso/iso8601
	CreateDate *time.Time

	// A list of instance profiles that contain this role.
	InstanceProfileList []InstanceProfile

	// The path to the role. For more information about paths, see [IAM identifiers] in the IAM User
	// Guide.
	//
	// [IAM identifiers]: https://docs.aws.amazon.com/IAM/latest/UserGuide/Using_Identifiers.html
	Path *string

	// The ARN of the policy used to set the permissions boundary for the role.
	//
	// For more information about permissions boundaries, see [Permissions boundaries for IAM identities] in the IAM User Guide.
	//
	// [Permissions boundaries for IAM identities]: https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_boundaries.html
	PermissionsBoundary *AttachedPermissionsBoundary

	// The stable and unique string identifying the role. For more information about
	// IDs, see [IAM identifiers]in the IAM User Guide.
	//
	// [IAM identifiers]: https://docs.aws.amazon.com/IAM/latest/UserGuide/Using_Identifiers.html
	RoleId *string

	// Contains information about the last time that an IAM role was used. This
	// includes the date and time and the Region in which the role was last used.
	// Activity is only reported for the trailing 400 days. This period can be shorter
	// if your Region began supporting these features within the last year. The role
	// might have been used more than 400 days ago. For more information, see [Regions where data is tracked]in the
	// IAM User Guide.
	//
	// [Regions where data is tracked]: https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_access-advisor.html#access-advisor_tracking-period
	RoleLastUsed *RoleLastUsed

	// The friendly name that identifies the role.
	RoleName *string

	// A list of inline policies embedded in the role. These policies are the role's
	// access (permissions) policies.
	RolePolicyList []PolicyDetail

	// A list of tags that are attached to the role. For more information about
	// tagging, see [Tagging IAM resources]in the IAM User Guide.
	//
	// [Tagging IAM resources]: https://docs.aws.amazon.com/IAM/latest/UserGuide/id_tags.html
	Tags []Tag

	noSmithyDocumentSerde
}

// Contains information about the last time that an IAM role was used. This
// includes the date and time and the Region in which the role was last used.
// Activity is only reported for the trailing 400 days. This period can be shorter
// if your Region began supporting these features within the last year. The role
// might have been used more than 400 days ago. For more information, see [Regions where data is tracked]in the
// IAM user Guide.
//
// This data type is returned as a response element in the [GetRole] and [GetAccountAuthorizationDetails] operations.
//
// [GetRole]: https://docs.aws.amazon.com/IAM/latest/APIReference/API_GetRole.html
// [GetAccountAuthorizationDetails]: https://docs.aws.amazon.com/IAM/latest/APIReference/API_GetAccountAuthorizationDetails.html
// [Regions where data is tracked]: https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_access-advisor.html#access-advisor_tracking-period
type RoleLastUsed struct {

	// The date and time, in [ISO 8601 date-time format] that the role was last used.
	//
	// This field is null if the role has not been used within the IAM tracking
	// period. For more information about the tracking period, see [Regions where data is tracked]in the IAM User
	// Guide.
	//
	// [ISO 8601 date-time format]: http://www.iso.org/iso/iso8601
	// [Regions where data is tracked]: https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_access-advisor.html#access-advisor_tracking-period
	LastUsedDate *time.Time

	// The name of the Amazon Web Services Region in which the role was last used.
	Region *string

	noSmithyDocumentSerde
}

// An object that contains details about how a service-linked role is used, if
// that information is returned by the service.
//
// This data type is used as a response element in the [GetServiceLinkedRoleDeletionStatus] operation.
//
// [GetServiceLinkedRoleDeletionStatus]: https://docs.aws.amazon.com/IAM/latest/APIReference/API_GetServiceLinkedRoleDeletionStatus.html
type RoleUsageType struct {

	// The name of the Region where the service-linked role is being used.
	Region *string

	// The name of the resource that is using the service-linked role.
	Resources []string

	noSmithyDocumentSerde
}

// Contains the private keys for the SAML provider.
//
// This data type is used as a response element in the [GetSAMLProvider] operation.
//
// [GetSAMLProvider]: https://docs.aws.amazon.com/IAM/latest/APIReference/API_GetSAMLProvider.html
type SAMLPrivateKey struct {

	// The unique identifier for the SAML private key.
	KeyId *string

	// The date and time, in [ISO 8601 date-time] format, when the private key was uploaded.
	//
	// [ISO 8601 date-time]: http://www.iso.org/iso/iso8601
	Timestamp *time.Time

	noSmithyDocumentSerde
}

// Contains the list of SAML providers for this account.
type SAMLProviderListEntry struct {

	// The Amazon Resource Name (ARN) of the SAML provider.
	Arn *string

	// The date and time when the SAML provider was created.
	CreateDate *time.Time

	// The expiration date and time for the SAML provider.
	ValidUntil *time.Time

	noSmithyDocumentSerde
}

// Contains information about a server certificate.
//
// This data type is used as a response element in the [GetServerCertificate] operation.
//
// [GetServerCertificate]: https://docs.aws.amazon.com/IAM/latest/APIReference/API_GetServerCertificate.html
type ServerCertificate struct {

	// The contents of the public key certificate.
	//
	// This member is required.
	CertificateBody *string

	// The meta information of the server certificate, such as its name, path, ID, and
	// ARN.
	//
	// This member is required.
	ServerCertificateMetadata *ServerCertificateMetadata

	// The contents of the public key certificate chain.
	CertificateChain *string

	// A list of tags that are attached to the server certificate. For more
	// information about tagging, see [Tagging IAM resources]in the IAM User Guide.
	//
	// [Tagging IAM resources]: https://docs.aws.amazon.com/IAM/latest/UserGuide/id_tags.html
	Tags []Tag

	noSmithyDocumentSerde
}

// Contains information about a server certificate without its certificate body,
// certificate chain, and private key.
//
// This data type is used as a response element in the [UploadServerCertificate] and [ListServerCertificates] operations.
//
// [ListServerCertificates]: https://docs.aws.amazon.com/IAM/latest/APIReference/API_ListServerCertificates.html
// [UploadServerCertificate]: https://docs.aws.amazon.com/IAM/latest/APIReference/API_UploadServerCertificate.html
type ServerCertificateMetadata struct {

	//  The Amazon Resource Name (ARN) specifying the server certificate. For more
	// information about ARNs and how to use them in policies, see [IAM identifiers]in the IAM User
	// Guide.
	//
	// [IAM identifiers]: https://docs.aws.amazon.com/IAM/latest/UserGuide/Using_Identifiers.html
	//
	// This member is required.
	Arn *string

	//  The path to the server certificate. For more information about paths, see [IAM identifiers] in
	// the IAM User Guide.
	//
	// [IAM identifiers]: https://docs.aws.amazon.com/IAM/latest/UserGuide/Using_Identifiers.html
	//
	// This member is required.
	Path *string

	//  The stable and unique string identifying the server certificate. For more
	// information about IDs, see [IAM identifiers]in the IAM User Guide.
	//
	// [IAM identifiers]: https://docs.aws.amazon.com/IAM/latest/UserGuide/Using_Identifiers.html
	//
	// This member is required.
	ServerCertificateId *string

	// The name that identifies the server certificate.
	//
	// This member is required.
	ServerCertificateName *string

	// The date on which the certificate is set to expire.
	Expiration *time.Time

	// The date when the server certificate was uploaded.
	UploadDate *time.Time

	noSmithyDocumentSerde
}

// Contains details about the most recent attempt to access the service.
//
// This data type is used as a response element in the [GetServiceLastAccessedDetails] operation.
//
// [GetServiceLastAccessedDetails]: https://docs.aws.amazon.com/IAM/latest/APIReference/API_GetServiceLastAccessedDetails.html
type ServiceLastAccessed struct {

	// The name of the service in which access was attempted.
	//
	// This member is required.
	ServiceName *string

	// The namespace of the service in which access was attempted.
	//
	// To learn the service namespace of a service, see [Actions, resources, and condition keys for Amazon Web Services services] in the Service Authorization
	// Reference. Choose the name of the service to view details for that service. In
	// the first paragraph, find the service prefix. For example, (service prefix: a4b)
	// . For more information about service namespaces, see [Amazon Web Services Service Namespaces]in the Amazon Web Services
	// General Reference.
	//
	// [Amazon Web Services Service Namespaces]: https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html#genref-aws-service-namespaces
	// [Actions, resources, and condition keys for Amazon Web Services services]: https://docs.aws.amazon.com/service-authorization/latest/reference/reference_policies_actions-resources-contextkeys.html
	//
	// This member is required.
	ServiceNamespace *string

	// The date and time, in [ISO 8601 date-time format], when an authenticated entity most recently attempted to
	// access the service. Amazon Web Services does not report unauthenticated
	// requests.
	//
	// This field is null if no IAM entities attempted to access the service within
	// the [tracking period].
	//
	// [tracking period]: https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_access-advisor.html#service-last-accessed-reporting-period
	// [ISO 8601 date-time format]: http://www.iso.org/iso/iso8601
	LastAuthenticated *time.Time

	// The ARN of the authenticated entity (user or role) that last attempted to
	// access the service. Amazon Web Services does not report unauthenticated
	// requests.
	//
	// This field is null if no IAM entities attempted to access the service within
	// the [tracking period].
	//
	// [tracking period]: https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_access-advisor.html#service-last-accessed-reporting-period
	LastAuthenticatedEntity *string

	// The Region from which the authenticated entity (user or role) last attempted to
	// access the service. Amazon Web Services does not report unauthenticated
	// requests.
	//
	// This field is null if no IAM entities attempted to access the service within
	// the [tracking period].
	//
	// [tracking period]: https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_access-advisor.html#service-last-accessed-reporting-period
	LastAuthenticatedRegion *string

	// The total number of authenticated principals (root user, IAM users, or IAM
	// roles) that have attempted to access the service.
	//
	// This field is null if no principals attempted to access the service within the [tracking period].
	//
	// [tracking period]: https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_access-advisor.html#service-last-accessed-reporting-period
	TotalAuthenticatedEntities *int32

	// An object that contains details about the most recent attempt to access a
	// tracked action within the service.
	//
	// This field is null if there no tracked actions or if the principal did not use
	// the tracked actions within the [tracking period]. This field is also null if the report was
	// generated at the service level and not the action level. For more information,
	// see the Granularity field in [GenerateServiceLastAccessedDetails].
	//
	// [tracking period]: https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_access-advisor.html#service-last-accessed-reporting-period
	// [GenerateServiceLastAccessedDetails]: https://docs.aws.amazon.com/IAM/latest/APIReference/API_GenerateServiceLastAccessedDetails.html
	TrackedActionsLastAccessed []TrackedActionLastAccessed

	noSmithyDocumentSerde
}

// Contains the details of a service-specific credential.
type ServiceSpecificCredential struct {

	// The date and time, in [ISO 8601 date-time format], when the service-specific credential were created.
	//
	// [ISO 8601 date-time format]: http://www.iso.org/iso/iso8601
	//
	// This member is required.
	CreateDate *time.Time

	// The name of the service associated with the service-specific credential.
	//
	// This member is required.
	ServiceName *string

	// The unique identifier for the service-specific credential.
	//
	// This member is required.
	ServiceSpecificCredentialId *string

	// The status of the service-specific credential. Active means that the key is
	// valid for API calls, while Inactive means it is not.
	//
	// This member is required.
	Status StatusType

	// The name of the IAM user associated with the service-specific credential.
	//
	// This member is required.
	UserName *string

	// The date and time when the service specific credential expires. This field is
	// only present for Bedrock API keys and CloudWatch Logs API keys that were created
	// with an expiration period.
	ExpirationDate *time.Time

	// For Bedrock API keys and CloudWatch Logs API keys, this is the public portion
	// of the credential that includes the IAM user name and a suffix containing
	// version and creation information.
	ServiceCredentialAlias *string

	// For Bedrock API keys and CloudWatch Logs API keys, this is the secret portion
	// of the credential that should be used to authenticate API calls. This value is
	// returned only when the credential is created.
	ServiceCredentialSecret *string

	// The generated password for the service-specific credential.
	ServicePassword *string

	// The generated user name for the service-specific credential. This value is
	// generated by combining the IAM user's name combined with the ID number of the
	// Amazon Web Services account, as in jane-at-123456789012 , for example. This
	// value cannot be configured by the user.
	ServiceUserName *string

	noSmithyDocumentSerde
}

// Contains additional details about a service-specific credential.
type ServiceSpecificCredentialMetadata struct {

	// The date and time, in [ISO 8601 date-time format], when the service-specific credential were created.
	//
	// [ISO 8601 date-time format]: http://www.iso.org/iso/iso8601
	//
	// This member is required.
	CreateDate *time.Time

	// The name of the service associated with the service-specific credential.
	//
	// This member is required.
	ServiceName *string

	// The unique identifier for the service-specific credential.
	//
	// This member is required.
	ServiceSpecificCredentialId *string

	// The status of the service-specific credential. Active means that the key is
	// valid for API calls, while Inactive means it is not.
	//
	// This member is required.
	Status StatusType

	// The name of the IAM user associated with the service-specific credential.
	//
	// This member is required.
	UserName *string

	// The date and time when the service specific credential expires. This field is
	// only present for Bedrock API keys and CloudWatch Logs API keys that were created
	// with an expiration period.
	ExpirationDate *time.Time

	// For Bedrock API keys and CloudWatch Logs API keys, this is the public portion
	// of the credential that includes the IAM user name and a suffix containing
	// version and creation information.
	ServiceCredentialAlias *string

	// The generated user name for the service-specific credential.
	ServiceUserName *string

	noSmithyDocumentSerde
}

// Contains information about an X.509 signing certificate.
//
// This data type is used as a response element in the [UploadSigningCertificate] and [ListSigningCertificates] operations.
//
// [ListSigningCertificates]: https://docs.aws.amazon.com/IAM/latest/APIReference/API_ListSigningCertificates.html
// [UploadSigningCertificate]: https://docs.aws.amazon.com/IAM/latest/APIReference/API_UploadSigningCertificate.html
type SigningCertificate struct {

	// The contents of the signing certificate.
	//
	// This member is required.
	CertificateBody *string

	// The ID for the signing certificate.
	//
	// This member is required.
	CertificateId *string

	// The status of the signing certificate. Active means that the key is valid for
	// API calls, while Inactive means it is not.
	//
	// This member is required.
	Status StatusType

	// The name of the user the signing certificate is associated with.
	//
	// This member is required.
	UserName *string

	// The date when the signing certificate was uploaded.
	UploadDate *time.Time

	noSmithyDocumentSerde
}

// Contains information about an SSH public key.
//
// This data type is used as a response element in the [GetSSHPublicKey] and [UploadSSHPublicKey] operations.
//
// [UploadSSHPublicKey]: https://docs.aws.amazon.com/IAM/latest/APIReference/API_UploadSSHPublicKey.html
// [GetSSHPublicKey]: https://docs.aws.amazon.com/IAM/latest/APIReference/API_GetSSHPublicKey.html
type SSHPublicKey struct {

	// The MD5 message digest of the SSH public key.
	//
	// This member is required.
	Fingerprint *string

	// The SSH public key.
	//
	// This member is required.
	SSHPublicKeyBody *string

	// The unique identifier for the SSH public key.
	//
	// This member is required.
	SSHPublicKeyId *string

	// The status of the SSH public key. Active means that the key can be used for
	// authentication with an CodeCommit repository. Inactive means that the key
	// cannot be used.
	//
	// This member is required.
	Status StatusType

	// The name of the IAM user associated with the SSH public key.
	//
	// This member is required.
	UserName *string

	// The date and time, in [ISO 8601 date-time format], when the SSH public key was uploaded.
	//
	// [ISO 8601 date-time format]: http://www.iso.org/iso/iso8601
	UploadDate *time.Time

	noSmithyDocumentSerde
}

// Contains information about an SSH public key, without the key's body or
// fingerprint.
//
// This data type is used as a response element in the [ListSSHPublicKeys] operation.
//
// [ListSSHPublicKeys]: https://docs.aws.amazon.com/IAM/latest/APIReference/API_ListSSHPublicKeys.html
type SSHPublicKeyMetadata struct {

	// The unique identifier for the SSH public key.
	//
	// This member is required.
	SSHPublicKeyId *string

	// The status of the SSH public key. Active means that the key can be used for
	// authentication with an CodeCommit repository. Inactive means that the key
	// cannot be used.
	//
	// This member is required.
	Status StatusType

	// The date and time, in [ISO 8601 date-time format], when the SSH public key was uploaded.
	//
	// [ISO 8601 date-time format]: http://www.iso.org/iso/iso8601
	//
	// This member is required.
	UploadDate *time.Time

	// The name of the IAM user associated with the SSH public key.
	//
	// This member is required.
	UserName *string

	noSmithyDocumentSerde
}

// Contains a reference to a Statement element in a policy document that
// determines the result of the simulation.
//
// This data type is used by the MatchedStatements member of the [EvaluationResult] type.
//
// [EvaluationResult]: https://docs.aws.amazon.com/IAM/latest/APIReference/API_EvaluationResult.html
type Statement struct {

	// The row and column of the end of a Statement in an IAM policy.
	EndPosition *Position

	// The identifier of the policy that was provided as an input.
	SourcePolicyId *string

	// The type of the policy.
	SourcePolicyType PolicySourceType

	// The row and column of the beginning of the Statement in an IAM policy.
	StartPosition *Position

	noSmithyDocumentSerde
}

// A structure that represents user-provided metadata that can be associated with
// an IAM resource. For more information about tagging, see [Tagging IAM resources]in the IAM User Guide.
//
// [Tagging IAM resources]: https://docs.aws.amazon.com/IAM/latest/UserGuide/id_tags.html
type Tag struct {

	// The key name that can be used to look up or retrieve the associated value. For
	// example, Department or Cost Center are common choices.
	//
	// This member is required.
	Key *string

	// The value associated with this tag. For example, tags with a key name of
	// Department could have values such as Human Resources , Accounting , and Support
	// . Tags with a key name of Cost Center might have values that consist of the
	// number associated with the different cost centers in your company. Typically,
	// many resources have tags with the same key name but with different values.
	//
	// This member is required.
	Value *string

	noSmithyDocumentSerde
}

// Contains details about the most recent attempt to access an action within the
// service.
//
// This data type is used as a response element in the [GetServiceLastAccessedDetails] operation.
//
// [GetServiceLastAccessedDetails]: https://docs.aws.amazon.com/IAM/latest/APIReference/API_GetServiceLastAccessedDetails.html
type TrackedActionLastAccessed struct {

	// The name of the tracked action to which access was attempted. Tracked actions
	// are actions that report activity to IAM.
	ActionName *string

	// The Amazon Resource Name (ARN). ARNs are unique identifiers for Amazon Web
	// Services resources.
	//
	// For more information about ARNs, go to [Amazon Resource Names (ARNs)] in the Amazon Web Services General
	// Reference.
	//
	// [Amazon Resource Names (ARNs)]: https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html
	LastAccessedEntity *string

	// The Region from which the authenticated entity (user or role) last attempted to
	// access the tracked action. Amazon Web Services does not report unauthenticated
	// requests.
	//
	// This field is null if no IAM entities attempted to access the service within
	// the [tracking period].
	//
	// [tracking period]: https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_access-advisor.html#service-last-accessed-reporting-period
	LastAccessedRegion *string

	// The date and time, in [ISO 8601 date-time format], when an authenticated entity most recently attempted to
	// access the tracked service. Amazon Web Services does not report unauthenticated
	// requests.
	//
	// This field is null if no IAM entities attempted to access the service within
	// the [tracking period].
	//
	// [tracking period]: https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_access-advisor.html#service-last-accessed-reporting-period
	// [ISO 8601 date-time format]: http://www.iso.org/iso/iso8601
	LastAccessedTime *time.Time

	noSmithyDocumentSerde
}

// Contains information about an IAM user entity.
//
// This data type is used as a response element in the following operations:
//
// [CreateUser]
//
// [GetUser]
//
// [ListUsers]
//
// [ListUsers]: https://docs.aws.amazon.com/IAM/latest/APIReference/API_ListUsers.html
// [CreateUser]: https://docs.aws.amazon.com/IAM/latest/APIReference/API_CreateUser.html
// [GetUser]: https://docs.aws.amazon.com/IAM/latest/APIReference/API_GetUser.html
type User struct {

	// The Amazon Resource Name (ARN) that identifies the user. For more information
	// about ARNs and how to use ARNs in policies, see [IAM Identifiers]in the IAM User Guide.
	//
	// [IAM Identifiers]: https://docs.aws.amazon.com/IAM/latest/UserGuide/Using_Identifiers.html
	//
	// This member is required.
	Arn *string

	// The date and time, in [ISO 8601 date-time format], when the user was created.
	//
	// [ISO 8601 date-time format]: http://www.iso.org/iso/iso8601
	//
	// This member is required.
	CreateDate *time.Time

	// The path to the user. For more information about paths, see [IAM identifiers] in the IAM User
	// Guide.
	//
	// The ARN of the policy used to set the permissions boundary for the user.
	//
	// [IAM identifiers]: https://docs.aws.amazon.com/IAM/latest/UserGuide/Using_Identifiers.html
	//
	// This member is required.
	Path *string

	// The stable and unique string identifying the user. For more information about
	// IDs, see [IAM identifiers]in the IAM User Guide.
	//
	// [IAM identifiers]: https://docs.aws.amazon.com/IAM/latest/UserGuide/Using_Identifiers.html
	//
	// This member is required.
	UserId *string

	// The friendly name identifying the user.
	//
	// This member is required.
	UserName *string

	// The date and time, in [ISO 8601 date-time format], when the user's password was last used to sign in to an
	// Amazon Web Services website. For a list of Amazon Web Services websites that
	// capture a user's last sign-in time, see the [Credential reports]topic in the IAM User Guide. If a
	// password is used more than once in a five-minute span, only the first use is
	// returned in this field. If the field is null (no value), then it indicates that
	// they never signed in with a password. This can be because:
	//
	//   - The user never had a password.
	//
	//   - A password exists but has not been used since IAM started tracking this
	//   information on October 20, 2014.
	//
	// A null value does not mean that the user never had a password. Also, if the
	// user does not currently have a password but had one in the past, then this field
	// contains the date and time the most recent password was used.
	//
	// This value is returned only in the [GetUser] and [ListUsers] operations.
	//
	// [Credential reports]: https://docs.aws.amazon.com/IAM/latest/UserGuide/credential-reports.html
	// [ListUsers]: https://docs.aws.amazon.com/IAM/latest/APIReference/API_ListUsers.html
	// [ISO 8601 date-time format]: http://www.iso.org/iso/iso8601
	// [GetUser]: https://docs.aws.amazon.com/IAM/latest/APIReference/API_GetUser.html
	PasswordLastUsed *time.Time

	// For more information about permissions boundaries, see [Permissions boundaries for IAM identities] in the IAM User Guide.
	//
	// [Permissions boundaries for IAM identities]: https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_boundaries.html
	PermissionsBoundary *AttachedPermissionsBoundary

	// A list of tags that are associated with the user. For more information about
	// tagging, see [Tagging IAM resources]in the IAM User Guide.
	//
	// [Tagging IAM resources]: https://docs.aws.amazon.com/IAM/latest/UserGuide/id_tags.html
	Tags []Tag

	noSmithyDocumentSerde
}

// Contains information about an IAM user, including all the user's policies and
// all the IAM groups the user is in.
//
// This data type is used as a response element in the [GetAccountAuthorizationDetails] operation.
//
// [GetAccountAuthorizationDetails]: https://docs.aws.amazon.com/IAM/latest/APIReference/API_GetAccountAuthorizationDetails.html
type UserDetail struct {

	// The Amazon Resource Name (ARN). ARNs are unique identifiers for Amazon Web
	// Services resources.
	//
	// For more information about ARNs, go to [Amazon Resource Names (ARNs)] in the Amazon Web Services General
	// Reference.
	//
	// [Amazon Resource Names (ARNs)]: https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html
	Arn *string

	// A list of the managed policies attached to the user.
	AttachedManagedPolicies []AttachedPolicy

	// The date and time, in [ISO 8601 date-time format], when the user was created.
	//
	// [ISO 8601 date-time format]: http://www.iso.org/iso/iso8601
	CreateDate *time.Time

	// A list of IAM groups that the user is in.
	GroupList []string

	// The path to the user. For more information about paths, see [IAM identifiers] in the IAM User
	// Guide.
	//
	// [IAM identifiers]: https://docs.aws.amazon.com/IAM/latest/UserGuide/Using_Identifiers.html
	Path *string

	// The ARN of the policy used to set the permissions boundary for the user.
	//
	// For more information about permissions boundaries, see [Permissions boundaries for IAM identities] in the IAM User Guide.
	//
	// [Permissions boundaries for IAM identities]: https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_boundaries.html
	PermissionsBoundary *AttachedPermissionsBoundary

	// A list of tags that are associated with the user. For more information about
	// tagging, see [Tagging IAM resources]in the IAM User Guide.
	//
	// [Tagging IAM resources]: https://docs.aws.amazon.com/IAM/latest/UserGuide/id_tags.html
	Tags []Tag

	// The stable and unique string identifying the user. For more information about
	// IDs, see [IAM identifiers]in the IAM User Guide.
	//
	// [IAM identifiers]: https://docs.aws.amazon.com/IAM/latest/UserGuide/Using_Identifiers.html
	UserId *string

	// The friendly name identifying the user.
	UserName *string

	// A list of the inline policies embedded in the user.
	UserPolicyList []PolicyDetail

	noSmithyDocumentSerde
}

// Contains information about a virtual MFA device.
type VirtualMFADevice struct {

	// The serial number associated with VirtualMFADevice .
	//
	// This member is required.
	SerialNumber *string

	//  The base32 seed defined as specified in [RFC3548]. The Base32StringSeed is
	// base32-encoded.
	//
	// [RFC3548]: https://tools.ietf.org/html/rfc3548.txt
	Base32StringSeed []byte

	// The date and time on which the virtual MFA device was enabled.
	EnableDate *time.Time

	//  A QR code PNG image that encodes
	// otpauth://totp/$virtualMFADeviceName@$AccountName?secret=$Base32String where
	// $virtualMFADeviceName is one of the create call arguments. AccountName is the
	// user name if set (otherwise, the account ID otherwise), and Base32String is the
	// seed in base32 format. The Base32String value is base64-encoded.
	QRCodePNG []byte

	// A list of tags that are attached to the virtual MFA device. For more
	// information about tagging, see [Tagging IAM resources]in the IAM User Guide.
	//
	// [Tagging IAM resources]: https://docs.aws.amazon.com/IAM/latest/UserGuide/id_tags.html
	Tags []Tag

	// The IAM user associated with this virtual MFA device.
	User *User

	noSmithyDocumentSerde
}

type noSmithyDocumentSerde = smithydocument.NoSerde
