@lap v0.3
# Machine-readable API spec. Each @endpoint block is one API call.
@api AWS Identity and Access Management
@version 2010-05-08
@auth AWS SigV4
@endpoints 159
@hint download_for_search
@toc root(159)

@endpoint POST /
@required {OpenIDConnectProviderArn: str, ClientID: str}

@endpoint POST /
@required {InstanceProfileName: str, RoleName: str}

@endpoint POST /
@required {GroupName: str, UserName: str}

@endpoint POST /
@required {GroupName: str, PolicyArn: str}

@endpoint POST /
@required {RoleName: str, PolicyArn: str}

@endpoint POST /
@required {UserName: str, PolicyArn: str}

@endpoint POST /
@required {OldPassword: str, NewPassword: str}

@endpoint POST /
@optional {UserName: str}
@returns(200) {AccessKey: AccessKey{UserName: str, AccessKeyId: str, Status: str, SecretAccessKey: str, CreateDate: str(timestamp)?}}

@endpoint POST /
@required {AccountAlias: str}

@endpoint POST /
@required {GroupName: str}
@optional {Path: str}
@returns(200) {Group: Group{Path: str, GroupName: str, GroupId: str, Arn: str, CreateDate: str(timestamp)}}

@endpoint POST /
@required {InstanceProfileName: str}
@optional {Path: str, Tags: [Tag]}
@returns(200) {InstanceProfile: InstanceProfile{Path: str, InstanceProfileName: str, InstanceProfileId: str, Arn: str, CreateDate: str(timestamp), Roles: [Role], Tags: [Tag]?}}

@endpoint POST /
@required {UserName: str, Password: str}
@optional {PasswordResetRequired: bool}
@returns(200) {LoginProfile: LoginProfile{UserName: str, CreateDate: str(timestamp), PasswordResetRequired: bool?}}

@endpoint POST /
@required {Url: str}
@optional {ClientIDList: [str], ThumbprintList: [str], Tags: [Tag]}
@returns(200) {OpenIDConnectProviderArn: str?, Tags: [Tag]?}

@endpoint POST /
@required {PolicyName: str, PolicyDocument: str}
@optional {Path: str, Description: str, Tags: [Tag]}
@returns(200) {Policy: Policy?{PolicyName: str?, PolicyId: str?, Arn: str?, Path: str?, DefaultVersionId: str?, AttachmentCount: int?, PermissionsBoundaryUsageCount: int?, IsAttachable: bool?, Description: str?, CreateDate: str(timestamp)?, UpdateDate: str(timestamp)?, Tags: [Tag]?}}

@endpoint POST /
@required {PolicyArn: str, PolicyDocument: str}
@optional {SetAsDefault: bool}
@returns(200) {PolicyVersion: PolicyVersion?{Document: str?, VersionId: str?, IsDefaultVersion: bool?, CreateDate: str(timestamp)?}}

@endpoint POST /
@required {RoleName: str, AssumeRolePolicyDocument: str}
@optional {Path: str, Description: str, MaxSessionDuration: int, PermissionsBoundary: str, Tags: [Tag]}
@returns(200) {Role: Role{Path: str, RoleName: str, RoleId: str, Arn: str, CreateDate: str(timestamp), AssumeRolePolicyDocument: str?, Description: str?, MaxSessionDuration: int?, PermissionsBoundary: AttachedPermissionsBoundary?{PermissionsBoundaryType: str?, PermissionsBoundaryArn: str?}, Tags: [Tag]?, RoleLastUsed: RoleLastUsed?{LastUsedDate: str(timestamp)?, Region: str?}}}

@endpoint POST /
@required {SAMLMetadataDocument: str, Name: str}
@optional {Tags: [Tag]}
@returns(200) {SAMLProviderArn: str?, Tags: [Tag]?}

@endpoint POST /
@required {AWSServiceName: str}
@optional {Description: str, CustomSuffix: str}
@returns(200) {Role: Role?{Path: str, RoleName: str, RoleId: str, Arn: str, CreateDate: str(timestamp), AssumeRolePolicyDocument: str?, Description: str?, MaxSessionDuration: int?, PermissionsBoundary: AttachedPermissionsBoundary?{PermissionsBoundaryType: str?, PermissionsBoundaryArn: str?}, Tags: [Tag]?, RoleLastUsed: RoleLastUsed?{LastUsedDate: str(timestamp)?, Region: str?}}}

@endpoint POST /
@required {UserName: str, ServiceName: str}
@returns(200) {ServiceSpecificCredential: ServiceSpecificCredential?{CreateDate: str(timestamp), ServiceName: str, ServiceUserName: str, ServicePassword: str, ServiceSpecificCredentialId: str, UserName: str, Status: str}}

@endpoint POST /
@required {UserName: str}
@optional {Path: str, PermissionsBoundary: str, Tags: [Tag]}
@returns(200) {User: User?{Path: str, UserName: str, UserId: str, Arn: str, CreateDate: str(timestamp), PasswordLastUsed: str(timestamp)?, PermissionsBoundary: AttachedPermissionsBoundary?{PermissionsBoundaryType: str?, PermissionsBoundaryArn: str?}, Tags: [Tag]?}}

@endpoint POST /
@required {VirtualMFADeviceName: str}
@optional {Path: str, Tags: [Tag]}
@returns(200) {VirtualMFADevice: VirtualMFADevice{SerialNumber: str, Base32StringSeed: bytes?, QRCodePNG: bytes?, User: User?{Path: str, UserName: str, UserId: str, Arn: str, CreateDate: str(timestamp), PasswordLastUsed: str(timestamp)?, PermissionsBoundary: AttachedPermissionsBoundary?{PermissionsBoundaryType: str?, PermissionsBoundaryArn: str?}, Tags: [Tag]?}, EnableDate: str(timestamp)?, Tags: [Tag]?}}

@endpoint POST /
@required {UserName: str, SerialNumber: str}

@endpoint POST /
@required {AccessKeyId: str}
@optional {UserName: str}

@endpoint POST /
@required {AccountAlias: str}

@endpoint POST /

@endpoint POST /
@required {GroupName: str}

@endpoint POST /
@required {GroupName: str, PolicyName: str}

@endpoint POST /
@required {InstanceProfileName: str}

@endpoint POST /
@required {UserName: str}

@endpoint POST /
@required {OpenIDConnectProviderArn: str}

@endpoint POST /
@required {PolicyArn: str}

@endpoint POST /
@required {PolicyArn: str, VersionId: str}

@endpoint POST /
@required {RoleName: str}

@endpoint POST /
@required {RoleName: str}

@endpoint POST /
@required {RoleName: str, PolicyName: str}

@endpoint POST /
@required {SAMLProviderArn: str}

@endpoint POST /
@required {UserName: str, SSHPublicKeyId: str}

@endpoint POST /
@required {ServerCertificateName: str}

@endpoint POST /
@required {RoleName: str}
@returns(200) {DeletionTaskId: str}

@endpoint POST /
@required {ServiceSpecificCredentialId: str}
@optional {UserName: str}

@endpoint POST /
@required {CertificateId: str}
@optional {UserName: str}

@endpoint POST /
@required {UserName: str}

@endpoint POST /
@required {UserName: str}

@endpoint POST /
@required {UserName: str, PolicyName: str}

@endpoint POST /
@required {SerialNumber: str}

@endpoint POST /
@required {GroupName: str, PolicyArn: str}

@endpoint POST /
@required {RoleName: str, PolicyArn: str}

@endpoint POST /
@required {UserName: str, PolicyArn: str}

@endpoint POST /
@required {UserName: str, SerialNumber: str, AuthenticationCode1: str, AuthenticationCode2: str}

@endpoint POST /
@returns(200) {State: str?, Description: str?}

@endpoint POST /
@required {EntityPath: str}
@optional {OrganizationsPolicyId: str}
@returns(200) {JobId: str?}

@endpoint POST /
@required {Arn: str}
@optional {Granularity: str}
@returns(200) {JobId: str?}

@endpoint POST /
@required {AccessKeyId: str}
@returns(200) {UserName: str?, AccessKeyLastUsed: AccessKeyLastUsed?{LastUsedDate: str(timestamp)?, ServiceName: str, Region: str}}

@endpoint POST /
@optional {Filter: [str], MaxItems: int, Marker: str}
@returns(200) {UserDetailList: [UserDetail]?, GroupDetailList: [GroupDetail]?, RoleDetailList: [RoleDetail]?, Policies: [ManagedPolicyDetail]?, IsTruncated: bool?, Marker: str?}

@endpoint POST /
@returns(200) {PasswordPolicy: PasswordPolicy{MinimumPasswordLength: int?, RequireSymbols: bool?, RequireNumbers: bool?, RequireUppercaseCharacters: bool?, RequireLowercaseCharacters: bool?, AllowUsersToChangePassword: bool?, ExpirePasswords: bool?, MaxPasswordAge: int?, PasswordReusePrevention: int?, HardExpiry: bool?}}

@endpoint POST /
@returns(200) {SummaryMap: map<str,int>?}

@endpoint POST /
@required {PolicyInputList: [str]}
@returns(200) {ContextKeyNames: [str]?}

@endpoint POST /
@required {PolicySourceArn: str}
@optional {PolicyInputList: [str]}
@returns(200) {ContextKeyNames: [str]?}

@endpoint POST /
@returns(200) {Content: bytes?, ReportFormat: str?, GeneratedTime: str(timestamp)?}

@endpoint POST /
@required {GroupName: str}
@optional {Marker: str, MaxItems: int}
@returns(200) {Group: Group{Path: str, GroupName: str, GroupId: str, Arn: str, CreateDate: str(timestamp)}, Users: [User], IsTruncated: bool?, Marker: str?}

@endpoint POST /
@required {GroupName: str, PolicyName: str}
@returns(200) {GroupName: str, PolicyName: str, PolicyDocument: str}

@endpoint POST /
@required {InstanceProfileName: str}
@returns(200) {InstanceProfile: InstanceProfile{Path: str, InstanceProfileName: str, InstanceProfileId: str, Arn: str, CreateDate: str(timestamp), Roles: [Role], Tags: [Tag]?}}

@endpoint POST /
@required {UserName: str}
@returns(200) {LoginProfile: LoginProfile{UserName: str, CreateDate: str(timestamp), PasswordResetRequired: bool?}}

@endpoint POST /
@required {SerialNumber: str}
@optional {UserName: str}
@returns(200) {UserName: str?, SerialNumber: str, EnableDate: str(timestamp)?, Certifications: map<str,str>?}

@endpoint POST /
@required {OpenIDConnectProviderArn: str}
@returns(200) {Url: str?, ClientIDList: [str]?, ThumbprintList: [str]?, CreateDate: str(timestamp)?, Tags: [Tag]?}

@endpoint POST /
@required {JobId: str}
@optional {MaxItems: int, Marker: str, SortKey: str}
@returns(200) {JobStatus: str, JobCreationDate: str(timestamp), JobCompletionDate: str(timestamp)?, NumberOfServicesAccessible: int?, NumberOfServicesNotAccessed: int?, AccessDetails: [AccessDetail]?, IsTruncated: bool?, Marker: str?, ErrorDetails: ErrorDetails?{Message: str, Code: str}}

@endpoint POST /
@required {PolicyArn: str}
@returns(200) {Policy: Policy?{PolicyName: str?, PolicyId: str?, Arn: str?, Path: str?, DefaultVersionId: str?, AttachmentCount: int?, PermissionsBoundaryUsageCount: int?, IsAttachable: bool?, Description: str?, CreateDate: str(timestamp)?, UpdateDate: str(timestamp)?, Tags: [Tag]?}}

@endpoint POST /
@required {PolicyArn: str, VersionId: str}
@returns(200) {PolicyVersion: PolicyVersion?{Document: str?, VersionId: str?, IsDefaultVersion: bool?, CreateDate: str(timestamp)?}}

@endpoint POST /
@required {RoleName: str}
@returns(200) {Role: Role{Path: str, RoleName: str, RoleId: str, Arn: str, CreateDate: str(timestamp), AssumeRolePolicyDocument: str?, Description: str?, MaxSessionDuration: int?, PermissionsBoundary: AttachedPermissionsBoundary?{PermissionsBoundaryType: str?, PermissionsBoundaryArn: str?}, Tags: [Tag]?, RoleLastUsed: RoleLastUsed?{LastUsedDate: str(timestamp)?, Region: str?}}}

@endpoint POST /
@required {RoleName: str, PolicyName: str}
@returns(200) {RoleName: str, PolicyName: str, PolicyDocument: str}

@endpoint POST /
@required {SAMLProviderArn: str}
@returns(200) {SAMLMetadataDocument: str?, CreateDate: str(timestamp)?, ValidUntil: str(timestamp)?, Tags: [Tag]?}

@endpoint POST /
@required {UserName: str, SSHPublicKeyId: str, Encoding: str}
@returns(200) {SSHPublicKey: SSHPublicKey?{UserName: str, SSHPublicKeyId: str, Fingerprint: str, SSHPublicKeyBody: str, Status: str, UploadDate: str(timestamp)?}}

@endpoint POST /
@required {ServerCertificateName: str}
@returns(200) {ServerCertificate: ServerCertificate{ServerCertificateMetadata: ServerCertificateMetadata{Path: str, ServerCertificateName: str, ServerCertificateId: str, Arn: str, UploadDate: str(timestamp)?, Expiration: str(timestamp)?}, CertificateBody: str, CertificateChain: str?, Tags: [Tag]?}}

@endpoint POST /
@required {JobId: str}
@optional {MaxItems: int, Marker: str}
@returns(200) {JobStatus: str, JobType: str?, JobCreationDate: str(timestamp), ServicesLastAccessed: [ServiceLastAccessed], JobCompletionDate: str(timestamp), IsTruncated: bool?, Marker: str?, Error: ErrorDetails?{Message: str, Code: str}}

@endpoint POST /
@required {JobId: str, ServiceNamespace: str}
@optional {MaxItems: int, Marker: str}
@returns(200) {JobStatus: str, JobCreationDate: str(timestamp), JobCompletionDate: str(timestamp), EntityDetailsList: [EntityDetails], IsTruncated: bool?, Marker: str?, Error: ErrorDetails?{Message: str, Code: str}}

@endpoint POST /
@required {DeletionTaskId: str}
@returns(200) {Status: str, Reason: DeletionTaskFailureReasonType?{Reason: str?, RoleUsageList: [RoleUsageType]?}}

@endpoint POST /
@optional {UserName: str}
@returns(200) {User: User{Path: str, UserName: str, UserId: str, Arn: str, CreateDate: str(timestamp), PasswordLastUsed: str(timestamp)?, PermissionsBoundary: AttachedPermissionsBoundary?{PermissionsBoundaryType: str?, PermissionsBoundaryArn: str?}, Tags: [Tag]?}}

@endpoint POST /
@required {UserName: str, PolicyName: str}
@returns(200) {UserName: str, PolicyName: str, PolicyDocument: str}

@endpoint POST /
@optional {UserName: str, Marker: str, MaxItems: int}
@returns(200) {AccessKeyMetadata: [AccessKeyMetadata], IsTruncated: bool?, Marker: str?}

@endpoint POST /
@optional {Marker: str, MaxItems: int}
@returns(200) {AccountAliases: [str], IsTruncated: bool?, Marker: str?}

@endpoint POST /
@required {GroupName: str}
@optional {PathPrefix: str, Marker: str, MaxItems: int}
@returns(200) {AttachedPolicies: [AttachedPolicy]?, IsTruncated: bool?, Marker: str?}

@endpoint POST /
@required {RoleName: str}
@optional {PathPrefix: str, Marker: str, MaxItems: int}
@returns(200) {AttachedPolicies: [AttachedPolicy]?, IsTruncated: bool?, Marker: str?}

@endpoint POST /
@required {UserName: str}
@optional {PathPrefix: str, Marker: str, MaxItems: int}
@returns(200) {AttachedPolicies: [AttachedPolicy]?, IsTruncated: bool?, Marker: str?}

@endpoint POST /
@required {PolicyArn: str}
@optional {EntityFilter: str, PathPrefix: str, PolicyUsageFilter: str, Marker: str, MaxItems: int}
@returns(200) {PolicyGroups: [PolicyGroup]?, PolicyUsers: [PolicyUser]?, PolicyRoles: [PolicyRole]?, IsTruncated: bool?, Marker: str?}

@endpoint POST /
@required {GroupName: str}
@optional {Marker: str, MaxItems: int}
@returns(200) {PolicyNames: [str], IsTruncated: bool?, Marker: str?}

@endpoint POST /
@optional {PathPrefix: str, Marker: str, MaxItems: int}
@returns(200) {Groups: [Group], IsTruncated: bool?, Marker: str?}

@endpoint POST /
@required {UserName: str}
@optional {Marker: str, MaxItems: int}
@returns(200) {Groups: [Group], IsTruncated: bool?, Marker: str?}

@endpoint POST /
@required {InstanceProfileName: str}
@optional {Marker: str, MaxItems: int}
@returns(200) {Tags: [Tag], IsTruncated: bool?, Marker: str?}

@endpoint POST /
@optional {PathPrefix: str, Marker: str, MaxItems: int}
@returns(200) {InstanceProfiles: [InstanceProfile], IsTruncated: bool?, Marker: str?}

@endpoint POST /
@required {RoleName: str}
@optional {Marker: str, MaxItems: int}
@returns(200) {InstanceProfiles: [InstanceProfile], IsTruncated: bool?, Marker: str?}

@endpoint POST /
@required {SerialNumber: str}
@optional {Marker: str, MaxItems: int}
@returns(200) {Tags: [Tag], IsTruncated: bool?, Marker: str?}

@endpoint POST /
@optional {UserName: str, Marker: str, MaxItems: int}
@returns(200) {MFADevices: [MFADevice], IsTruncated: bool?, Marker: str?}

@endpoint POST /
@required {OpenIDConnectProviderArn: str}
@optional {Marker: str, MaxItems: int}
@returns(200) {Tags: [Tag], IsTruncated: bool?, Marker: str?}

@endpoint POST /
@returns(200) {OpenIDConnectProviderList: [OpenIDConnectProviderListEntry]?}

@endpoint POST /
@optional {Scope: str, OnlyAttached: bool, PathPrefix: str, PolicyUsageFilter: str, Marker: str, MaxItems: int}
@returns(200) {Policies: [Policy]?, IsTruncated: bool?, Marker: str?}

@endpoint POST /
@required {Arn: str, ServiceNamespaces: [str]}
@optional {Marker: str}
@returns(200) {PoliciesGrantingServiceAccess: [ListPoliciesGrantingServiceAccessEntry], IsTruncated: bool?, Marker: str?}

@endpoint POST /
@required {PolicyArn: str}
@optional {Marker: str, MaxItems: int}
@returns(200) {Tags: [Tag], IsTruncated: bool?, Marker: str?}

@endpoint POST /
@required {PolicyArn: str}
@optional {Marker: str, MaxItems: int}
@returns(200) {Versions: [PolicyVersion]?, IsTruncated: bool?, Marker: str?}

@endpoint POST /
@required {RoleName: str}
@optional {Marker: str, MaxItems: int}
@returns(200) {PolicyNames: [str], IsTruncated: bool?, Marker: str?}

@endpoint POST /
@required {RoleName: str}
@optional {Marker: str, MaxItems: int}
@returns(200) {Tags: [Tag], IsTruncated: bool?, Marker: str?}

@endpoint POST /
@optional {PathPrefix: str, Marker: str, MaxItems: int}
@returns(200) {Roles: [Role], IsTruncated: bool?, Marker: str?}

@endpoint POST /
@required {SAMLProviderArn: str}
@optional {Marker: str, MaxItems: int}
@returns(200) {Tags: [Tag], IsTruncated: bool?, Marker: str?}

@endpoint POST /
@returns(200) {SAMLProviderList: [SAMLProviderListEntry]?}

@endpoint POST /
@optional {UserName: str, Marker: str, MaxItems: int}
@returns(200) {SSHPublicKeys: [SSHPublicKeyMetadata]?, IsTruncated: bool?, Marker: str?}

@endpoint POST /
@required {ServerCertificateName: str}
@optional {Marker: str, MaxItems: int}
@returns(200) {Tags: [Tag], IsTruncated: bool?, Marker: str?}

@endpoint POST /
@optional {PathPrefix: str, Marker: str, MaxItems: int}
@returns(200) {ServerCertificateMetadataList: [ServerCertificateMetadata], IsTruncated: bool?, Marker: str?}

@endpoint POST /
@optional {UserName: str, ServiceName: str}
@returns(200) {ServiceSpecificCredentials: [ServiceSpecificCredentialMetadata]?}

@endpoint POST /
@optional {UserName: str, Marker: str, MaxItems: int}
@returns(200) {Certificates: [SigningCertificate], IsTruncated: bool?, Marker: str?}

@endpoint POST /
@required {UserName: str}
@optional {Marker: str, MaxItems: int}
@returns(200) {PolicyNames: [str], IsTruncated: bool?, Marker: str?}

@endpoint POST /
@required {UserName: str}
@optional {Marker: str, MaxItems: int}
@returns(200) {Tags: [Tag], IsTruncated: bool?, Marker: str?}

@endpoint POST /
@optional {PathPrefix: str, Marker: str, MaxItems: int}
@returns(200) {Users: [User], IsTruncated: bool?, Marker: str?}

@endpoint POST /
@optional {AssignmentStatus: str, Marker: str, MaxItems: int}
@returns(200) {VirtualMFADevices: [VirtualMFADevice], IsTruncated: bool?, Marker: str?}

@endpoint POST /
@required {GroupName: str, PolicyName: str, PolicyDocument: str}

@endpoint POST /
@required {RoleName: str, PermissionsBoundary: str}

@endpoint POST /
@required {RoleName: str, PolicyName: str, PolicyDocument: str}

@endpoint POST /
@required {UserName: str, PermissionsBoundary: str}

@endpoint POST /
@required {UserName: str, PolicyName: str, PolicyDocument: str}

@endpoint POST /
@required {OpenIDConnectProviderArn: str, ClientID: str}

@endpoint POST /
@required {InstanceProfileName: str, RoleName: str}

@endpoint POST /
@required {GroupName: str, UserName: str}

@endpoint POST /
@required {ServiceSpecificCredentialId: str}
@optional {UserName: str}
@returns(200) {ServiceSpecificCredential: ServiceSpecificCredential?{CreateDate: str(timestamp), ServiceName: str, ServiceUserName: str, ServicePassword: str, ServiceSpecificCredentialId: str, UserName: str, Status: str}}

@endpoint POST /
@required {UserName: str, SerialNumber: str, AuthenticationCode1: str, AuthenticationCode2: str}

@endpoint POST /
@required {PolicyArn: str, VersionId: str}

@endpoint POST /
@required {GlobalEndpointTokenVersion: str}

@endpoint POST /
@required {PolicyInputList: [str], ActionNames: [str]}
@optional {PermissionsBoundaryPolicyInputList: [str], ResourceArns: [str], ResourcePolicy: str, ResourceOwner: str, CallerArn: str, ContextEntries: [ContextEntry], ResourceHandlingOption: str, MaxItems: int, Marker: str}
@returns(200) {EvaluationResults: [EvaluationResult]?, IsTruncated: bool?, Marker: str?}

@endpoint POST /
@required {PolicySourceArn: str, ActionNames: [str]}
@optional {PolicyInputList: [str], PermissionsBoundaryPolicyInputList: [str], ResourceArns: [str], ResourcePolicy: str, ResourceOwner: str, CallerArn: str, ContextEntries: [ContextEntry], ResourceHandlingOption: str, MaxItems: int, Marker: str}
@returns(200) {EvaluationResults: [EvaluationResult]?, IsTruncated: bool?, Marker: str?}

@endpoint POST /
@required {InstanceProfileName: str, Tags: [Tag]}

@endpoint POST /
@required {SerialNumber: str, Tags: [Tag]}

@endpoint POST /
@required {OpenIDConnectProviderArn: str, Tags: [Tag]}

@endpoint POST /
@required {PolicyArn: str, Tags: [Tag]}

@endpoint POST /
@required {RoleName: str, Tags: [Tag]}

@endpoint POST /
@required {SAMLProviderArn: str, Tags: [Tag]}

@endpoint POST /
@required {ServerCertificateName: str, Tags: [Tag]}

@endpoint POST /
@required {UserName: str, Tags: [Tag]}

@endpoint POST /
@required {InstanceProfileName: str, TagKeys: [str]}

@endpoint POST /
@required {SerialNumber: str, TagKeys: [str]}

@endpoint POST /
@required {OpenIDConnectProviderArn: str, TagKeys: [str]}

@endpoint POST /
@required {PolicyArn: str, TagKeys: [str]}

@endpoint POST /
@required {RoleName: str, TagKeys: [str]}

@endpoint POST /
@required {SAMLProviderArn: str, TagKeys: [str]}

@endpoint POST /
@required {ServerCertificateName: str, TagKeys: [str]}

@endpoint POST /
@required {UserName: str, TagKeys: [str]}

@endpoint POST /
@required {AccessKeyId: str, Status: str}
@optional {UserName: str}

@endpoint POST /
@optional {MinimumPasswordLength: int, RequireSymbols: bool, RequireNumbers: bool, RequireUppercaseCharacters: bool, RequireLowercaseCharacters: bool, AllowUsersToChangePassword: bool, MaxPasswordAge: int, PasswordReusePrevention: int, HardExpiry: bool}

@endpoint POST /
@required {RoleName: str, PolicyDocument: str}

@endpoint POST /
@required {GroupName: str}
@optional {NewPath: str, NewGroupName: str}

@endpoint POST /
@required {UserName: str}
@optional {Password: str, PasswordResetRequired: bool}

@endpoint POST /
@required {OpenIDConnectProviderArn: str, ThumbprintList: [str]}

@endpoint POST /
@required {RoleName: str}
@optional {Description: str, MaxSessionDuration: int}

@endpoint POST /
@required {RoleName: str, Description: str}
@returns(200) {Role: Role?{Path: str, RoleName: str, RoleId: str, Arn: str, CreateDate: str(timestamp), AssumeRolePolicyDocument: str?, Description: str?, MaxSessionDuration: int?, PermissionsBoundary: AttachedPermissionsBoundary?{PermissionsBoundaryType: str?, PermissionsBoundaryArn: str?}, Tags: [Tag]?, RoleLastUsed: RoleLastUsed?{LastUsedDate: str(timestamp)?, Region: str?}}}

@endpoint POST /
@required {SAMLMetadataDocument: str, SAMLProviderArn: str}
@returns(200) {SAMLProviderArn: str?}

@endpoint POST /
@required {UserName: str, SSHPublicKeyId: str, Status: str}

@endpoint POST /
@required {ServerCertificateName: str}
@optional {NewPath: str, NewServerCertificateName: str}

@endpoint POST /
@required {ServiceSpecificCredentialId: str, Status: str}
@optional {UserName: str}

@endpoint POST /
@required {CertificateId: str, Status: str}
@optional {UserName: str}

@endpoint POST /
@required {UserName: str}
@optional {NewPath: str, NewUserName: str}

@endpoint POST /
@required {UserName: str, SSHPublicKeyBody: str}
@returns(200) {SSHPublicKey: SSHPublicKey?{UserName: str, SSHPublicKeyId: str, Fingerprint: str, SSHPublicKeyBody: str, Status: str, UploadDate: str(timestamp)?}}

@endpoint POST /
@required {ServerCertificateName: str, CertificateBody: str, PrivateKey: str}
@optional {Path: str, CertificateChain: str, Tags: [Tag]}
@returns(200) {ServerCertificateMetadata: ServerCertificateMetadata?{Path: str, ServerCertificateName: str, ServerCertificateId: str, Arn: str, UploadDate: str(timestamp)?, Expiration: str(timestamp)?}, Tags: [Tag]?}

@endpoint POST /
@required {CertificateBody: str}
@optional {UserName: str}
@returns(200) {Certificate: SigningCertificate{UserName: str, CertificateId: str, CertificateBody: str, Status: str, UploadDate: str(timestamp)?}}

@end
