diff --git a/clients/client-workmail/src/WorkMail.ts b/clients/client-workmail/src/WorkMail.ts index 7ed8cb749961..5b4179276655 100644 --- a/clients/client-workmail/src/WorkMail.ts +++ b/clients/client-workmail/src/WorkMail.ts @@ -17,6 +17,11 @@ import { CancelMailboxExportJobCommandOutput, } from "./commands/CancelMailboxExportJobCommand"; import { CreateAliasCommand, CreateAliasCommandInput, CreateAliasCommandOutput } from "./commands/CreateAliasCommand"; +import { + CreateAvailabilityConfigurationCommand, + CreateAvailabilityConfigurationCommandInput, + CreateAvailabilityConfigurationCommandOutput, +} from "./commands/CreateAvailabilityConfigurationCommand"; import { CreateGroupCommand, CreateGroupCommandInput, CreateGroupCommandOutput } from "./commands/CreateGroupCommand"; import { CreateMobileDeviceAccessRuleCommand, @@ -40,6 +45,11 @@ import { DeleteAccessControlRuleCommandOutput, } from "./commands/DeleteAccessControlRuleCommand"; import { DeleteAliasCommand, DeleteAliasCommandInput, DeleteAliasCommandOutput } from "./commands/DeleteAliasCommand"; +import { + DeleteAvailabilityConfigurationCommand, + DeleteAvailabilityConfigurationCommandInput, + DeleteAvailabilityConfigurationCommandOutput, +} from "./commands/DeleteAvailabilityConfigurationCommand"; import { DeleteEmailMonitoringConfigurationCommand, DeleteEmailMonitoringConfigurationCommandInput, @@ -168,6 +178,11 @@ import { ListAccessControlRulesCommandOutput, } from "./commands/ListAccessControlRulesCommand"; import { ListAliasesCommand, ListAliasesCommandInput, ListAliasesCommandOutput } from "./commands/ListAliasesCommand"; +import { + ListAvailabilityConfigurationsCommand, + ListAvailabilityConfigurationsCommandInput, + ListAvailabilityConfigurationsCommandOutput, +} from "./commands/ListAvailabilityConfigurationsCommand"; import { ListGroupMembersCommand, ListGroupMembersCommandInput, @@ -271,11 +286,21 @@ import { StartMailboxExportJobCommandOutput, } from "./commands/StartMailboxExportJobCommand"; import { TagResourceCommand, TagResourceCommandInput, TagResourceCommandOutput } from "./commands/TagResourceCommand"; +import { + TestAvailabilityConfigurationCommand, + TestAvailabilityConfigurationCommandInput, + TestAvailabilityConfigurationCommandOutput, +} from "./commands/TestAvailabilityConfigurationCommand"; import { UntagResourceCommand, UntagResourceCommandInput, UntagResourceCommandOutput, } from "./commands/UntagResourceCommand"; +import { + UpdateAvailabilityConfigurationCommand, + UpdateAvailabilityConfigurationCommandInput, + UpdateAvailabilityConfigurationCommandOutput, +} from "./commands/UpdateAvailabilityConfigurationCommand"; import { UpdateDefaultMailDomainCommand, UpdateDefaultMailDomainCommandInput, @@ -468,6 +493,38 @@ export class WorkMail extends WorkMailClient { } } + /** + *
Creates an AvailabilityConfiguration
for the given WorkMail organization and domain.
Creates a group that can be used in Amazon WorkMail by calling the RegisterToWorkMail operation.
*/ @@ -682,6 +739,38 @@ export class WorkMail extends WorkMailClient { } } + /** + *Deletes the AvailabilityConfiguration
for the given WorkMail organization and domain.
Deletes the email monitoring configuration for a specified organization.
*/ @@ -1575,6 +1664,38 @@ export class WorkMail extends WorkMailClient { } } + /** + *List all the AvailabilityConfiguration
's for the given WorkMail organization.
Returns an overview of the members of a group. Users and groups can be members of a * group.
@@ -2312,6 +2433,45 @@ export class WorkMail extends WorkMailClient { } } + /** + *Performs a test on an availability provider to ensure that access is allowed. For EWS, it verifies the provided credentials can be used to successfully log in. For Lambda, it verifies that the Lambda function can be invoked and that the resource access
+ * policy was configured to deny anonymous access. An anonymous invocation is one done without providing either a SourceArn
or SourceAccount
header.
The request must contain either one provider definition (EwsProvider
or
+ * LambdaProvider
) or the DomainName
parameter. If the
+ * DomainName
parameter is provided, the configuration stored under the
+ * DomainName
will be tested.
Untags the specified tags from the specified Amazon WorkMail organization * resource.
@@ -2345,6 +2505,39 @@ export class WorkMail extends WorkMailClient { } } + /** + *Updates an existing AvailabilityConfiguration
for the given WorkMail
+ * organization and domain.
Updates the default mail domain for an organization. The default mail domain is used by the WorkMail AWS Console to suggest an email address when enabling a mail user. You can only have one default domain.
*/ diff --git a/clients/client-workmail/src/WorkMailClient.ts b/clients/client-workmail/src/WorkMailClient.ts index d6abe3680a5f..68f419c3b6da 100644 --- a/clients/client-workmail/src/WorkMailClient.ts +++ b/clients/client-workmail/src/WorkMailClient.ts @@ -66,6 +66,10 @@ import { CancelMailboxExportJobCommandOutput, } from "./commands/CancelMailboxExportJobCommand"; import { CreateAliasCommandInput, CreateAliasCommandOutput } from "./commands/CreateAliasCommand"; +import { + CreateAvailabilityConfigurationCommandInput, + CreateAvailabilityConfigurationCommandOutput, +} from "./commands/CreateAvailabilityConfigurationCommand"; import { CreateGroupCommandInput, CreateGroupCommandOutput } from "./commands/CreateGroupCommand"; import { CreateMobileDeviceAccessRuleCommandInput, @@ -79,6 +83,10 @@ import { DeleteAccessControlRuleCommandOutput, } from "./commands/DeleteAccessControlRuleCommand"; import { DeleteAliasCommandInput, DeleteAliasCommandOutput } from "./commands/DeleteAliasCommand"; +import { + DeleteAvailabilityConfigurationCommandInput, + DeleteAvailabilityConfigurationCommandOutput, +} from "./commands/DeleteAvailabilityConfigurationCommand"; import { DeleteEmailMonitoringConfigurationCommandInput, DeleteEmailMonitoringConfigurationCommandOutput, @@ -161,6 +169,10 @@ import { ListAccessControlRulesCommandOutput, } from "./commands/ListAccessControlRulesCommand"; import { ListAliasesCommandInput, ListAliasesCommandOutput } from "./commands/ListAliasesCommand"; +import { + ListAvailabilityConfigurationsCommandInput, + ListAvailabilityConfigurationsCommandOutput, +} from "./commands/ListAvailabilityConfigurationsCommand"; import { ListGroupMembersCommandInput, ListGroupMembersCommandOutput } from "./commands/ListGroupMembersCommand"; import { ListGroupsCommandInput, ListGroupsCommandOutput } from "./commands/ListGroupsCommand"; import { @@ -220,7 +232,15 @@ import { StartMailboxExportJobCommandOutput, } from "./commands/StartMailboxExportJobCommand"; import { TagResourceCommandInput, TagResourceCommandOutput } from "./commands/TagResourceCommand"; +import { + TestAvailabilityConfigurationCommandInput, + TestAvailabilityConfigurationCommandOutput, +} from "./commands/TestAvailabilityConfigurationCommand"; import { UntagResourceCommandInput, UntagResourceCommandOutput } from "./commands/UntagResourceCommand"; +import { + UpdateAvailabilityConfigurationCommandInput, + UpdateAvailabilityConfigurationCommandOutput, +} from "./commands/UpdateAvailabilityConfigurationCommand"; import { UpdateDefaultMailDomainCommandInput, UpdateDefaultMailDomainCommandOutput, @@ -242,6 +262,7 @@ export type ServiceInputTypes = | AssociateMemberToGroupCommandInput | CancelMailboxExportJobCommandInput | CreateAliasCommandInput + | CreateAvailabilityConfigurationCommandInput | CreateGroupCommandInput | CreateMobileDeviceAccessRuleCommandInput | CreateOrganizationCommandInput @@ -249,6 +270,7 @@ export type ServiceInputTypes = | CreateUserCommandInput | DeleteAccessControlRuleCommandInput | DeleteAliasCommandInput + | DeleteAvailabilityConfigurationCommandInput | DeleteEmailMonitoringConfigurationCommandInput | DeleteGroupCommandInput | DeleteMailboxPermissionsCommandInput @@ -277,6 +299,7 @@ export type ServiceInputTypes = | GetMobileDeviceAccessOverrideCommandInput | ListAccessControlRulesCommandInput | ListAliasesCommandInput + | ListAvailabilityConfigurationsCommandInput | ListGroupMembersCommandInput | ListGroupsCommandInput | ListMailDomainsCommandInput @@ -300,7 +323,9 @@ export type ServiceInputTypes = | ResetPasswordCommandInput | StartMailboxExportJobCommandInput | TagResourceCommandInput + | TestAvailabilityConfigurationCommandInput | UntagResourceCommandInput + | UpdateAvailabilityConfigurationCommandInput | UpdateDefaultMailDomainCommandInput | UpdateMailboxQuotaCommandInput | UpdateMobileDeviceAccessRuleCommandInput @@ -312,6 +337,7 @@ export type ServiceOutputTypes = | AssociateMemberToGroupCommandOutput | CancelMailboxExportJobCommandOutput | CreateAliasCommandOutput + | CreateAvailabilityConfigurationCommandOutput | CreateGroupCommandOutput | CreateMobileDeviceAccessRuleCommandOutput | CreateOrganizationCommandOutput @@ -319,6 +345,7 @@ export type ServiceOutputTypes = | CreateUserCommandOutput | DeleteAccessControlRuleCommandOutput | DeleteAliasCommandOutput + | DeleteAvailabilityConfigurationCommandOutput | DeleteEmailMonitoringConfigurationCommandOutput | DeleteGroupCommandOutput | DeleteMailboxPermissionsCommandOutput @@ -347,6 +374,7 @@ export type ServiceOutputTypes = | GetMobileDeviceAccessOverrideCommandOutput | ListAccessControlRulesCommandOutput | ListAliasesCommandOutput + | ListAvailabilityConfigurationsCommandOutput | ListGroupMembersCommandOutput | ListGroupsCommandOutput | ListMailDomainsCommandOutput @@ -370,7 +398,9 @@ export type ServiceOutputTypes = | ResetPasswordCommandOutput | StartMailboxExportJobCommandOutput | TagResourceCommandOutput + | TestAvailabilityConfigurationCommandOutput | UntagResourceCommandOutput + | UpdateAvailabilityConfigurationCommandOutput | UpdateDefaultMailDomainCommandOutput | UpdateMailboxQuotaCommandOutput | UpdateMobileDeviceAccessRuleCommandOutput diff --git a/clients/client-workmail/src/commands/CreateAvailabilityConfigurationCommand.ts b/clients/client-workmail/src/commands/CreateAvailabilityConfigurationCommand.ts new file mode 100644 index 000000000000..945f141ee126 --- /dev/null +++ b/clients/client-workmail/src/commands/CreateAvailabilityConfigurationCommand.ts @@ -0,0 +1,104 @@ +// smithy-typescript generated code +import { getSerdePlugin } from "@aws-sdk/middleware-serde"; +import { HttpRequest as __HttpRequest, HttpResponse as __HttpResponse } from "@aws-sdk/protocol-http"; +import { Command as $Command } from "@aws-sdk/smithy-client"; +import { + FinalizeHandlerArguments, + Handler, + HandlerExecutionContext, + HttpHandlerOptions as __HttpHandlerOptions, + MetadataBearer as __MetadataBearer, + MiddlewareStack, + SerdeContext as __SerdeContext, +} from "@aws-sdk/types"; + +import { CreateAvailabilityConfigurationRequest, CreateAvailabilityConfigurationResponse } from "../models/models_0"; +import { + deserializeAws_json1_1CreateAvailabilityConfigurationCommand, + serializeAws_json1_1CreateAvailabilityConfigurationCommand, +} from "../protocols/Aws_json1_1"; +import { ServiceInputTypes, ServiceOutputTypes, WorkMailClientResolvedConfig } from "../WorkMailClient"; + +export interface CreateAvailabilityConfigurationCommandInput extends CreateAvailabilityConfigurationRequest {} +export interface CreateAvailabilityConfigurationCommandOutput + extends CreateAvailabilityConfigurationResponse, + __MetadataBearer {} + +/** + *Creates an AvailabilityConfiguration
for the given WorkMail organization and domain.
Deletes the AvailabilityConfiguration
for the given WorkMail organization and domain.
List all the AvailabilityConfiguration
's for the given WorkMail organization.
Performs a test on an availability provider to ensure that access is allowed. For EWS, it verifies the provided credentials can be used to successfully log in. For Lambda, it verifies that the Lambda function can be invoked and that the resource access
+ * policy was configured to deny anonymous access. An anonymous invocation is one done without providing either a SourceArn
or SourceAccount
header.
The request must contain either one provider definition (EwsProvider
or
+ * LambdaProvider
) or the DomainName
parameter. If the
+ * DomainName
parameter is provided, the configuration stored under the
+ * DomainName
will be tested.
Updates an existing AvailabilityConfiguration
for the given WorkMail
+ * organization and domain.
Describes an EWS based availability provider when returned from the service. It does not + * contain the password of the endpoint.
+ */ +export interface RedactedEwsAvailabilityProvider { + /** + *The endpoint of the remote EWS server.
+ */ + EwsEndpoint?: string; + + /** + *The username used to authenticate the remote EWS server.
+ */ + EwsUsername?: string; +} + +export namespace RedactedEwsAvailabilityProvider { + /** + * @internal + */ + export const filterSensitiveLog = (obj: RedactedEwsAvailabilityProvider): any => ({ + ...obj, + }); +} + +/** + *Describes a Lambda based availability provider.
+ */ +export interface LambdaAvailabilityProvider { + /** + *The Amazon Resource Name (ARN) of the Lambda that acts as the availability provider.
+ */ + LambdaArn: string | undefined; +} + +export namespace LambdaAvailabilityProvider { + /** + * @internal + */ + export const filterSensitiveLog = (obj: LambdaAvailabilityProvider): any => ({ + ...obj, + }); +} + +export enum AvailabilityProviderType { + EWS = "EWS", + LAMBDA = "LAMBDA", +} + +/** + *List all the AvailabilityConfiguration
's for the given WorkMail
+ * organization.
Displays the domain to which the provider applies.
+ */ + DomainName?: string; + + /** + *Displays the provider type that applies to this domain.
+ */ + ProviderType?: AvailabilityProviderType | string; + + /** + *If ProviderType
is EWS
, then this field contains
+ * RedactedEwsAvailabilityProvider
. Otherwise, it is not requried.
If ProviderType is LAMBDA
then this field contains
+ * LambdaAvailabilityProvider
. Otherwise, it is not required.
The date and time at which the availability configuration was created.
+ */ + DateCreated?: Date; + + /** + *The date and time at which the availability configuration was last modified.
+ */ + DateModified?: Date; +} + +export namespace AvailabilityConfiguration { + /** + * @internal + */ + export const filterSensitiveLog = (obj: AvailabilityConfiguration): any => ({ + ...obj, + }); +} + /** *At least one delegate must be associated to the resource to disable automatic replies * from the resource.
@@ -518,39 +614,80 @@ export class MailDomainStateException extends __BaseException { } } -export interface CreateGroupRequest { +/** + *Describes an EWS based availability provider. This is only used as input to the service.
+ */ +export interface EwsAvailabilityProvider { /** - *The organization under which the group is to be created.
+ *The endpoint of the remote EWS server.
*/ - OrganizationId: string | undefined; + EwsEndpoint: string | undefined; /** - *The name of the group.
+ *The username used to authenticate the remote EWS server.
*/ - Name: string | undefined; + EwsUsername: string | undefined; + + /** + *The password used to authenticate the remote EWS server.
+ */ + EwsPassword: string | undefined; } -export namespace CreateGroupRequest { +export namespace EwsAvailabilityProvider { /** * @internal */ - export const filterSensitiveLog = (obj: CreateGroupRequest): any => ({ + export const filterSensitiveLog = (obj: EwsAvailabilityProvider): any => ({ ...obj, + ...(obj.EwsPassword && { EwsPassword: SENSITIVE_STRING }), }); } -export interface CreateGroupResponse { +export interface CreateAvailabilityConfigurationRequest { /** - *The identifier of the group.
+ *An idempotent token that ensures that an API request is executed only once.
*/ - GroupId?: string; + ClientToken?: string; + + /** + *The Amazon WorkMail organization for which the AvailabilityConfiguration
will be created.
The domain to which the provider applies.
+ */ + DomainName: string | undefined; + + /** + *Exchange Web Services (EWS) availability provider definition. The request must contain exactly one provider definition, either EwsProvider
or LambdaProvider
.
Lambda availability provider definition. The request must contain exactly one provider definition, either EwsProvider
or LambdaProvider
.
The organization under which the group is to be created.
+ */ + OrganizationId: string | undefined; + + /** + *The name of the group.
+ */ + Name: string | undefined; +} + +export namespace CreateGroupRequest { + /** + * @internal + */ + export const filterSensitiveLog = (obj: CreateGroupRequest): any => ({ + ...obj, + }); +} + +export interface CreateGroupResponse { + /** + *The identifier of the group.
+ */ + GroupId?: string; +} + +export namespace CreateGroupResponse { + /** + * @internal + */ + export const filterSensitiveLog = (obj: CreateGroupResponse): any => ({ + ...obj, + }); +} + /** *This user, group, or resource name is not allowed in Amazon WorkMail.
*/ @@ -1018,6 +1192,38 @@ export namespace DeleteAliasResponse { }); } +export interface DeleteAvailabilityConfigurationRequest { + /** + *The Amazon WorkMail organization for which the AvailabilityConfiguration
will be deleted.
The domain for which the AvailabilityConfiguration
will be deleted.
The ID of the organization from which the email monitoring configuration is deleted.
@@ -2704,6 +2910,54 @@ export namespace ListAliasesResponse { }); } +export interface ListAvailabilityConfigurationsRequest { + /** + *The Amazon WorkMail organization for which the AvailabilityConfiguration
's will be
+ * listed.
The maximum number of results to return in a single call.
+ */ + MaxResults?: number; + + /** + *The token to use to retrieve the next page of results. The first call does not require a token.
+ */ + NextToken?: string; +} + +export namespace ListAvailabilityConfigurationsRequest { + /** + * @internal + */ + export const filterSensitiveLog = (obj: ListAvailabilityConfigurationsRequest): any => ({ + ...obj, + }); +} + +export interface ListAvailabilityConfigurationsResponse { + /** + *The list of AvailabilityConfiguration
's that exist for the specified Amazon WorkMail organization.
The token to use to retrieve the next page of results. The value is null
when there are no further results to return.
The identifier for the organization under which the group exists.
@@ -4239,6 +4493,59 @@ export class TooManyTagsException extends __BaseException { } } +export interface TestAvailabilityConfigurationRequest { + /** + *The Amazon WorkMail organization where the availability provider will be tested.
+ */ + OrganizationId: string | undefined; + + /** + *The domain to which the provider applies. If this field is provided, a stored availability provider associated to this domain name will be tested.
+ */ + DomainName?: string; + + /** + *Describes an EWS based availability provider. This is only used as input to the service.
+ */ + EwsProvider?: EwsAvailabilityProvider; + + /** + *Describes a Lambda based availability provider.
+ */ + LambdaProvider?: LambdaAvailabilityProvider; +} + +export namespace TestAvailabilityConfigurationRequest { + /** + * @internal + */ + export const filterSensitiveLog = (obj: TestAvailabilityConfigurationRequest): any => ({ + ...obj, + ...(obj.EwsProvider && { EwsProvider: EwsAvailabilityProvider.filterSensitiveLog(obj.EwsProvider) }), + }); +} + +export interface TestAvailabilityConfigurationResponse { + /** + *Boolean indicating whether the test passed or failed.
+ */ + TestPassed?: boolean; + + /** + *String containing the reason for a failed test if TestPassed
is false.
The resource ARN.
@@ -4271,6 +4578,54 @@ export namespace UntagResourceResponse { }); } +export interface UpdateAvailabilityConfigurationRequest { + /** + *The Amazon WorkMail organization for which the AvailabilityConfiguration
will be
+ * updated.
The domain to which the provider applies the availability configuration.
+ */ + DomainName: string | undefined; + + /** + *The EWS availability provider definition. The request must contain exactly one provider
+ * definition, either EwsProvider
or LambdaProvider
. The previously
+ * stored provider will be overridden by the one provided.
The Lambda availability provider definition. The request must contain exactly one
+ * provider definition, either EwsProvider
or LambdaProvider
. The
+ * previously stored provider will be overridden by the one provided.
The Amazon WorkMail organization for which to list domains.
diff --git a/clients/client-workmail/src/pagination/ListAvailabilityConfigurationsPaginator.ts b/clients/client-workmail/src/pagination/ListAvailabilityConfigurationsPaginator.ts new file mode 100644 index 000000000000..bd7bc93e8b6f --- /dev/null +++ b/clients/client-workmail/src/pagination/ListAvailabilityConfigurationsPaginator.ts @@ -0,0 +1,61 @@ +// smithy-typescript generated code +import { Paginator } from "@aws-sdk/types"; + +import { + ListAvailabilityConfigurationsCommand, + ListAvailabilityConfigurationsCommandInput, + ListAvailabilityConfigurationsCommandOutput, +} from "../commands/ListAvailabilityConfigurationsCommand"; +import { WorkMail } from "../WorkMail"; +import { WorkMailClient } from "../WorkMailClient"; +import { WorkMailPaginationConfiguration } from "./Interfaces"; + +/** + * @private + */ +const makePagedClientRequest = async ( + client: WorkMailClient, + input: ListAvailabilityConfigurationsCommandInput, + ...args: any +): PromiseDisplays the domain to which the provider applies.
" + } + }, + "ProviderType": { + "target": "com.amazonaws.workmail#AvailabilityProviderType", + "traits": { + "smithy.api#documentation": "Displays the provider type that applies to this domain.
" + } + }, + "EwsProvider": { + "target": "com.amazonaws.workmail#RedactedEwsAvailabilityProvider", + "traits": { + "smithy.api#documentation": "If ProviderType
is EWS
, then this field contains\n RedactedEwsAvailabilityProvider
. Otherwise, it is not requried.
If ProviderType is LAMBDA
then this field contains\n LambdaAvailabilityProvider
. Otherwise, it is not required.
The date and time at which the availability configuration was created.
" + } + }, + "DateModified": { + "target": "com.amazonaws.workmail#Timestamp", + "traits": { + "smithy.api#documentation": "The date and time at which the availability configuration was last modified.
" + } + } + }, + "traits": { + "smithy.api#documentation": "List all the AvailabilityConfiguration
's for the given WorkMail\n organization.
Creates an AvailabilityConfiguration
for the given WorkMail organization and domain.
An idempotent token that ensures that an API request is executed only once.
", + "smithy.api#idempotencyToken": {} + } + }, + "OrganizationId": { + "target": "com.amazonaws.workmail#OrganizationId", + "traits": { + "smithy.api#documentation": "The Amazon WorkMail organization for which the AvailabilityConfiguration
will be created.
The domain to which the provider applies.
", + "smithy.api#required": {} + } + }, + "EwsProvider": { + "target": "com.amazonaws.workmail#EwsAvailabilityProvider", + "traits": { + "smithy.api#documentation": "Exchange Web Services (EWS) availability provider definition. The request must contain exactly one provider definition, either EwsProvider
or LambdaProvider
.
Lambda availability provider definition. The request must contain exactly one provider definition, either EwsProvider
or LambdaProvider
.
Deletes the AvailabilityConfiguration
for the given WorkMail organization and domain.
The Amazon WorkMail organization for which the AvailabilityConfiguration
will be deleted.
The domain for which the AvailabilityConfiguration
will be deleted.
The endpoint of the remote EWS server.
", + "smithy.api#required": {} + } + }, + "EwsUsername": { + "target": "com.amazonaws.workmail#ExternalUserName", + "traits": { + "smithy.api#documentation": "The username used to authenticate the remote EWS server.
", + "smithy.api#required": {} + } + }, + "EwsPassword": { + "target": "com.amazonaws.workmail#Password", + "traits": { + "smithy.api#documentation": "The password used to authenticate the remote EWS server.
", + "smithy.api#required": {} + } + } + }, + "traits": { + "smithy.api#documentation": "Describes an EWS based availability provider. This is only used as input to the service.
" + } + }, + "com.amazonaws.workmail#ExternalUserName": { + "type": "string", + "traits": { + "smithy.api#length": { + "min": 0, + "max": 256 + }, + "smithy.api#pattern": "^[\\u0020-\\u00FF]+$" + } + }, "com.amazonaws.workmail#FolderConfiguration": { "type": "structure", "members": { @@ -3401,6 +3621,31 @@ "smithy.api#pattern": "^arn:aws:kms:[a-z0-9-]*:[a-z0-9-]+:[A-Za-z0-9][A-Za-z0-9:_/+=,@.-]{0,1023}$" } }, + "com.amazonaws.workmail#LambdaArn": { + "type": "string", + "traits": { + "smithy.api#length": { + "min": 49, + "max": 256 + }, + "smithy.api#pattern": "^arn:aws:lambda:[a-z]{2}-[a-z]+-\\d{1}:\\d{12}:function:[a-zA-Z0-9\\-_\\.]+(:(\\$LATEST|[a-zA-Z0-9\\-_]+))?$" + } + }, + "com.amazonaws.workmail#LambdaAvailabilityProvider": { + "type": "structure", + "members": { + "LambdaArn": { + "target": "com.amazonaws.workmail#LambdaArn", + "traits": { + "smithy.api#documentation": "The Amazon Resource Name (ARN) of the Lambda that acts as the availability provider.
", + "smithy.api#required": {} + } + } + }, + "traits": { + "smithy.api#documentation": "Describes a Lambda based availability provider.
" + } + }, "com.amazonaws.workmail#LimitExceededException": { "type": "structure", "members": { @@ -3539,6 +3784,73 @@ } } }, + "com.amazonaws.workmail#ListAvailabilityConfigurations": { + "type": "operation", + "input": { + "target": "com.amazonaws.workmail#ListAvailabilityConfigurationsRequest" + }, + "output": { + "target": "com.amazonaws.workmail#ListAvailabilityConfigurationsResponse" + }, + "errors": [ + { + "target": "com.amazonaws.workmail#OrganizationNotFoundException" + }, + { + "target": "com.amazonaws.workmail#OrganizationStateException" + } + ], + "traits": { + "smithy.api#documentation": "List all the AvailabilityConfiguration
's for the given WorkMail organization.
The Amazon WorkMail organization for which the AvailabilityConfiguration
's will be\n listed.
The maximum number of results to return in a single call.
" + } + }, + "NextToken": { + "target": "com.amazonaws.workmail#NextToken", + "traits": { + "smithy.api#documentation": "The token to use to retrieve the next page of results. The first call does not require a token.
" + } + } + } + }, + "com.amazonaws.workmail#ListAvailabilityConfigurationsResponse": { + "type": "structure", + "members": { + "AvailabilityConfigurations": { + "target": "com.amazonaws.workmail#AvailabilityConfigurationList", + "traits": { + "smithy.api#documentation": "The list of AvailabilityConfiguration
's that exist for the specified Amazon WorkMail organization.
The token to use to retrieve the next page of results. The value is null
when there are no further results to return.
The endpoint of the remote EWS server.
" + } + }, + "EwsUsername": { + "target": "com.amazonaws.workmail#ExternalUserName", + "traits": { + "smithy.api#documentation": "The username used to authenticate the remote EWS server.
" + } + } + }, + "traits": { + "smithy.api#documentation": "Describes an EWS based availability provider when returned from the service. It does not\n contain the password of the endpoint.
" + } + }, "com.amazonaws.workmail#RegisterMailDomain": { "type": "operation", "input": { @@ -6098,6 +6430,73 @@ } } }, + "com.amazonaws.workmail#TestAvailabilityConfiguration": { + "type": "operation", + "input": { + "target": "com.amazonaws.workmail#TestAvailabilityConfigurationRequest" + }, + "output": { + "target": "com.amazonaws.workmail#TestAvailabilityConfigurationResponse" + }, + "errors": [ + { + "target": "com.amazonaws.workmail#InvalidParameterException" + }, + { + "target": "com.amazonaws.workmail#OrganizationNotFoundException" + }, + { + "target": "com.amazonaws.workmail#OrganizationStateException" + }, + { + "target": "com.amazonaws.workmail#ResourceNotFoundException" + } + ], + "traits": { + "smithy.api#documentation": "Performs a test on an availability provider to ensure that access is allowed. For EWS, it verifies the provided credentials can be used to successfully log in. For Lambda, it verifies that the Lambda function can be invoked and that the resource access\n policy was configured to deny anonymous access. An anonymous invocation is one done without providing either a SourceArn
or SourceAccount
header.
The request must contain either one provider definition (EwsProvider
or\n LambdaProvider
) or the DomainName
parameter. If the\n DomainName
parameter is provided, the configuration stored under the\n DomainName
will be tested.
The Amazon WorkMail organization where the availability provider will be tested.
", + "smithy.api#required": {} + } + }, + "DomainName": { + "target": "com.amazonaws.workmail#DomainName", + "traits": { + "smithy.api#documentation": "The domain to which the provider applies. If this field is provided, a stored availability provider associated to this domain name will be tested.
" + } + }, + "EwsProvider": { + "target": "com.amazonaws.workmail#EwsAvailabilityProvider" + }, + "LambdaProvider": { + "target": "com.amazonaws.workmail#LambdaAvailabilityProvider" + } + } + }, + "com.amazonaws.workmail#TestAvailabilityConfigurationResponse": { + "type": "structure", + "members": { + "TestPassed": { + "target": "com.amazonaws.workmail#Boolean", + "traits": { + "smithy.api#documentation": "Boolean indicating whether the test passed or failed.
" + } + }, + "FailureReason": { + "target": "com.amazonaws.workmail#String", + "traits": { + "smithy.api#documentation": "String containing the reason for a failed test if TestPassed
is false.
Updates an existing AvailabilityConfiguration
for the given WorkMail\n organization and domain.
The Amazon WorkMail organization for which the AvailabilityConfiguration
will be\n updated.
The domain to which the provider applies the availability configuration.
", + "smithy.api#required": {} + } + }, + "EwsProvider": { + "target": "com.amazonaws.workmail#EwsAvailabilityProvider", + "traits": { + "smithy.api#documentation": "The EWS availability provider definition. The request must contain exactly one provider\n definition, either EwsProvider
or LambdaProvider
. The previously\n stored provider will be overridden by the one provided.
The Lambda availability provider definition. The request must contain exactly one\n provider definition, either EwsProvider
or LambdaProvider
. The\n previously stored provider will be overridden by the one provided.