@lap v0.3
# Machine-readable API spec. Each @endpoint block is one API call.
@api Amazon WorkMail
@version 2017-10-01
@auth AWS SigV4
@endpoints 84
@hint download_for_search
@toc root(84)

@endpoint POST /
@required {OrganizationId: str, ResourceId: str, EntityId: str}

@endpoint POST /
@required {OrganizationId: str, GroupId: str, MemberId: str}

@endpoint POST /
@required {OrganizationId: str, ImpersonationRoleId: str}
@returns(200) {Token: str?, ExpiresIn: int(i64)?}

@endpoint POST /
@required {ClientToken: str, JobId: str, OrganizationId: str}

@endpoint POST /
@required {OrganizationId: str, EntityId: str, Alias: str}

@endpoint POST /
@required {OrganizationId: str, DomainName: str}
@optional {ClientToken: str, EwsProvider: EwsAvailabilityProvider, LambdaProvider: LambdaAvailabilityProvider}

@endpoint POST /
@required {OrganizationId: str, Name: str}
@optional {HiddenFromGlobalAddressList: bool}
@returns(200) {GroupId: str?}

@endpoint POST /
@required {OrganizationId: str, Name: str, Type: str, Rules: [ImpersonationRule]}
@optional {ClientToken: str, Description: str}
@returns(200) {ImpersonationRoleId: str?}

@endpoint POST /
@required {OrganizationId: str, Name: str, Effect: str}
@optional {ClientToken: str, Description: str, DeviceTypes: [str], NotDeviceTypes: [str], DeviceModels: [str], NotDeviceModels: [str], DeviceOperatingSystems: [str], NotDeviceOperatingSystems: [str], DeviceUserAgents: [str], NotDeviceUserAgents: [str]}
@returns(200) {MobileDeviceAccessRuleId: str?}

@endpoint POST /
@required {Alias: str}
@optional {DirectoryId: str, ClientToken: str, Domains: [Domain], KmsKeyArn: str, EnableInteroperability: bool}
@returns(200) {OrganizationId: str?}

@endpoint POST /
@required {OrganizationId: str, Name: str, Type: str}
@optional {Description: str, HiddenFromGlobalAddressList: bool}
@returns(200) {ResourceId: str?}

@endpoint POST /
@required {OrganizationId: str, Name: str, DisplayName: str}
@optional {Password: str, Role: str, FirstName: str, LastName: str, HiddenFromGlobalAddressList: bool}
@returns(200) {UserId: str?}

@endpoint POST /
@required {OrganizationId: str, Name: str}

@endpoint POST /
@required {OrganizationId: str, EntityId: str, Alias: str}

@endpoint POST /
@required {OrganizationId: str, DomainName: str}

@endpoint POST /
@required {OrganizationId: str}

@endpoint POST /
@required {OrganizationId: str, GroupId: str}

@endpoint POST /
@required {OrganizationId: str, ImpersonationRoleId: str}

@endpoint POST /
@required {OrganizationId: str, EntityId: str, GranteeId: str}

@endpoint POST /
@required {OrganizationId: str, UserId: str, DeviceId: str}

@endpoint POST /
@required {OrganizationId: str, MobileDeviceAccessRuleId: str}

@endpoint POST /
@required {OrganizationId: str, DeleteDirectory: bool}
@optional {ClientToken: str, ForceDelete: bool}
@returns(200) {OrganizationId: str?, State: str?}

@endpoint POST /
@required {OrganizationId: str, ResourceId: str}

@endpoint POST /
@required {OrganizationId: str, Id: str}

@endpoint POST /
@required {OrganizationId: str, UserId: str}

@endpoint POST /
@required {OrganizationId: str, EntityId: str}

@endpoint POST /
@required {OrganizationId: str, DomainName: str}

@endpoint POST /
@required {OrganizationId: str}
@returns(200) {RoleArn: str?, LogGroupArn: str?}

@endpoint POST /
@required {OrganizationId: str, Email: str}
@returns(200) {EntityId: str?, Name: str?, Type: str?}

@endpoint POST /
@required {OrganizationId: str, GroupId: str}
@returns(200) {GroupId: str?, Name: str?, Email: str?, State: str?, EnabledDate: str(timestamp)?, DisabledDate: str(timestamp)?, HiddenFromGlobalAddressList: bool?}

@endpoint POST /
@required {OrganizationId: str}
@returns(200) {Enforced: bool?}

@endpoint POST /
@required {JobId: str, OrganizationId: str}
@returns(200) {EntityId: str?, Description: str?, RoleArn: str?, KmsKeyArn: str?, S3BucketName: str?, S3Prefix: str?, S3Path: str?, EstimatedProgress: int?, State: str?, ErrorInfo: str?, StartTime: str(timestamp)?, EndTime: str(timestamp)?}

@endpoint POST /
@required {OrganizationId: str}
@returns(200) {OrganizationId: str?, Alias: str?, State: str?, DirectoryId: str?, DirectoryType: str?, DefaultMailDomain: str?, CompletedDate: str(timestamp)?, ErrorMessage: str?, ARN: str?, MigrationAdmin: str?, InteroperabilityEnabled: bool?}

@endpoint POST /
@required {OrganizationId: str, ResourceId: str}
@returns(200) {ResourceId: str?, Email: str?, Name: str?, Type: str?, BookingOptions: BookingOptions?{AutoAcceptRequests: bool?, AutoDeclineRecurringRequests: bool?, AutoDeclineConflictingRequests: bool?}, State: str?, EnabledDate: str(timestamp)?, DisabledDate: str(timestamp)?, Description: str?, HiddenFromGlobalAddressList: bool?}

@endpoint POST /
@required {OrganizationId: str, UserId: str}
@returns(200) {UserId: str?, Name: str?, Email: str?, DisplayName: str?, State: str?, UserRole: str?, EnabledDate: str(timestamp)?, DisabledDate: str(timestamp)?, MailboxProvisionedDate: str(timestamp)?, MailboxDeprovisionedDate: str(timestamp)?, FirstName: str?, LastName: str?, HiddenFromGlobalAddressList: bool?, Initials: str?, Telephone: str?, Street: str?, JobTitle: str?, City: str?, Company: str?, ZipCode: str?, Department: str?, Country: str?, Office: str?}

@endpoint POST /
@required {OrganizationId: str, ResourceId: str, EntityId: str}

@endpoint POST /
@required {OrganizationId: str, GroupId: str, MemberId: str}

@endpoint POST /
@required {OrganizationId: str, IpAddress: str, Action: str}
@optional {UserId: str, ImpersonationRoleId: str}
@returns(200) {Effect: str?, MatchedRules: [str]?}

@endpoint POST /
@required {OrganizationId: str}
@returns(200) {Id: str?, Name: str?, Description: str?, FolderConfigurations: [FolderConfiguration]?}

@endpoint POST /
@required {OrganizationId: str, ImpersonationRoleId: str}
@returns(200) {ImpersonationRoleId: str?, Name: str?, Type: str?, Description: str?, Rules: [ImpersonationRule]?, DateCreated: str(timestamp)?, DateModified: str(timestamp)?}

@endpoint POST /
@required {OrganizationId: str, ImpersonationRoleId: str, TargetUser: str}
@returns(200) {Type: str?, Effect: str?, MatchedRules: [ImpersonationMatchedRule]?}

@endpoint POST /
@required {OrganizationId: str, DomainName: str}
@returns(200) {Records: [DnsRecord]?, IsTestDomain: bool?, IsDefault: bool?, OwnershipVerificationStatus: str?, DkimVerificationStatus: str?}

@endpoint POST /
@required {OrganizationId: str, UserId: str}
@returns(200) {MailboxQuota: int?, MailboxSize: num(f64)?}

@endpoint POST /
@required {OrganizationId: str}
@optional {DeviceType: str, DeviceModel: str, DeviceOperatingSystem: str, DeviceUserAgent: str}
@returns(200) {Effect: str?, MatchedRules: [MobileDeviceAccessMatchedRule]?}

@endpoint POST /
@required {OrganizationId: str, UserId: str, DeviceId: str}
@returns(200) {UserId: str?, DeviceId: str?, Effect: str?, Description: str?, DateCreated: str(timestamp)?, DateModified: str(timestamp)?}

@endpoint POST /
@required {OrganizationId: str}
@returns(200) {Rules: [AccessControlRule]?}

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

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

@endpoint POST /
@required {OrganizationId: str, GroupId: str}
@optional {NextToken: str, MaxResults: int}
@returns(200) {Members: [Member]?, NextToken: str?}

@endpoint POST /
@required {OrganizationId: str}
@optional {NextToken: str, MaxResults: int, Filters: ListGroupsFilters}
@returns(200) {Groups: [Group]?, NextToken: str?}

@endpoint POST /
@required {OrganizationId: str, EntityId: str}
@optional {Filters: ListGroupsForEntityFilters, NextToken: str, MaxResults: int}
@returns(200) {Groups: [GroupIdentifier]?, NextToken: str?}

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

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

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

@endpoint POST /
@required {OrganizationId: str, EntityId: str}
@optional {NextToken: str, MaxResults: int}
@returns(200) {Permissions: [Permission]?, NextToken: str?}

@endpoint POST /
@required {OrganizationId: str}
@optional {UserId: str, DeviceId: str, NextToken: str, MaxResults: int}
@returns(200) {Overrides: [MobileDeviceAccessOverride]?, NextToken: str?}

@endpoint POST /
@required {OrganizationId: str}
@returns(200) {Rules: [MobileDeviceAccessRule]?}

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

@endpoint POST /
@required {OrganizationId: str, ResourceId: str}
@optional {NextToken: str, MaxResults: int}
@returns(200) {Delegates: [Delegate]?, NextToken: str?}

@endpoint POST /
@required {OrganizationId: str}
@optional {NextToken: str, MaxResults: int, Filters: ListResourcesFilters}
@returns(200) {Resources: [Resource]?, NextToken: str?}

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

@endpoint POST /
@required {OrganizationId: str}
@optional {NextToken: str, MaxResults: int, Filters: ListUsersFilters}
@returns(200) {Users: [User]?, NextToken: str?}

@endpoint POST /
@required {Name: str, Effect: str, Description: str, OrganizationId: str}
@optional {IpRanges: [str], NotIpRanges: [str], Actions: [str], NotActions: [str], UserIds: [str], NotUserIds: [str], ImpersonationRoleIds: [str], NotImpersonationRoleIds: [str]}

@endpoint POST /
@required {OrganizationId: str, RoleArn: str, LogGroupArn: str}

@endpoint POST /
@required {OrganizationId: str, Enforced: bool}

@endpoint POST /
@required {OrganizationId: str, EntityId: str, GranteeId: str, PermissionValues: [str]}

@endpoint POST /
@required {OrganizationId: str, UserId: str, DeviceId: str, Effect: str}
@optional {Description: str}

@endpoint POST /
@required {OrganizationId: str, Name: str, FolderConfigurations: [FolderConfiguration]}
@optional {Id: str, Description: str}

@endpoint POST /
@required {OrganizationId: str, DomainName: str}
@optional {ClientToken: str}

@endpoint POST /
@required {OrganizationId: str, EntityId: str, Email: str}

@endpoint POST /
@required {OrganizationId: str, UserId: str, Password: str}

@endpoint POST /
@required {ClientToken: str, OrganizationId: str, EntityId: str, RoleArn: str, KmsKeyArn: str, S3BucketName: str, S3Prefix: str}
@optional {Description: str}
@returns(200) {JobId: str?}

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

@endpoint POST /
@required {OrganizationId: str}
@optional {DomainName: str, EwsProvider: EwsAvailabilityProvider, LambdaProvider: LambdaAvailabilityProvider}
@returns(200) {TestPassed: bool?, FailureReason: str?}

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

@endpoint POST /
@required {OrganizationId: str, DomainName: str}
@optional {EwsProvider: EwsAvailabilityProvider, LambdaProvider: LambdaAvailabilityProvider}

@endpoint POST /
@required {OrganizationId: str, DomainName: str}

@endpoint POST /
@required {OrganizationId: str, GroupId: str}
@optional {HiddenFromGlobalAddressList: bool}

@endpoint POST /
@required {OrganizationId: str, ImpersonationRoleId: str, Name: str, Type: str, Rules: [ImpersonationRule]}
@optional {Description: str}

@endpoint POST /
@required {OrganizationId: str, UserId: str, MailboxQuota: int}

@endpoint POST /
@required {OrganizationId: str, MobileDeviceAccessRuleId: str, Name: str, Effect: str}
@optional {Description: str, DeviceTypes: [str], NotDeviceTypes: [str], DeviceModels: [str], NotDeviceModels: [str], DeviceOperatingSystems: [str], NotDeviceOperatingSystems: [str], DeviceUserAgents: [str], NotDeviceUserAgents: [str]}

@endpoint POST /
@required {OrganizationId: str, EntityId: str, Email: str}

@endpoint POST /
@required {OrganizationId: str, ResourceId: str}
@optional {Name: str, BookingOptions: BookingOptions, Description: str, Type: str, HiddenFromGlobalAddressList: bool}

@endpoint POST /
@required {OrganizationId: str, UserId: str}
@optional {Role: str, DisplayName: str, FirstName: str, LastName: str, HiddenFromGlobalAddressList: bool, Initials: str, Telephone: str, Street: str, JobTitle: str, City: str, Company: str, ZipCode: str, Department: str, Country: str, Office: str}

@end
